File indexing completed on 2024-04-28 04:55:45

0001 /*
0002     This file is part of Choqok, the KDE micro-blogging client
0003 
0004     SPDX-FileCopyrightText: 2010-2012 Mehrdad Momeny <mehrdad.momeny@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0007 */
0008 
0009 #include "ocsconfigurewidget.h"
0010 
0011 #include <KMessageBox>
0012 #include <KLocalizedString>
0013 
0014 #include <Attica/ProviderManager>
0015 
0016 #include "accountmanager.h"
0017 
0018 #include "ocsaccount.h"
0019 #include "ocsmicroblog.h"
0020 #include "ocsdebug.h"
0021 
0022 OCSConfigureWidget::OCSConfigureWidget(OCSMicroblog *microblog, OCSAccount *account, QWidget *parent)
0023     : ChoqokEditAccountWidget(account, parent), mAccount(account), mMicroblog(microblog), providersLoaded(false)
0024 {
0025     setupUi(this);
0026     cfg_provider->setCurrentText(i18n("Loading..."));
0027     if (microblog->isOperational()) {
0028         slotprovidersLoaded();
0029     } else {
0030         connect(microblog, &OCSMicroblog::initialized, this,
0031                 &OCSConfigureWidget::slotprovidersLoaded);
0032     }
0033     if (mAccount) {
0034         cfg_alias->setText(mAccount->alias());
0035     } else {
0036         QString newAccountAlias = microblog->serviceName();
0037         QString servName = newAccountAlias;
0038         int counter = 1;
0039         while (Choqok::AccountManager::self()->findAccount(newAccountAlias)) {
0040             newAccountAlias = QStringLiteral("%1%2").arg(servName).arg(counter);
0041             counter++;
0042         }
0043         setAccount(mAccount = new OCSAccount(microblog, newAccountAlias));
0044         cfg_alias->setText(newAccountAlias);
0045     }
0046 }
0047 
0048 OCSConfigureWidget::~OCSConfigureWidget()
0049 {
0050 
0051 }
0052 
0053 bool OCSConfigureWidget::validateData()
0054 {
0055     if (!providersLoaded) {
0056       KMessageBox::error(
0057           choqokMainWindow,
0058           i18n("You have to wait for providers list to be loaded."));
0059       return false;
0060     }
0061     if (!cfg_alias->text().isEmpty() && cfg_provider->currentIndex() >= 0) {
0062         return true;
0063     } else {
0064         return false;
0065     }
0066 }
0067 
0068 Choqok::Account *OCSConfigureWidget::apply()
0069 {
0070     mAccount->setAlias(cfg_alias->text());
0071     mAccount->setProviderUrl(cfg_provider->itemData(cfg_provider->currentIndex()).toUrl());
0072     mAccount->writeConfig();
0073     return mAccount;
0074 }
0075 
0076 void OCSConfigureWidget::slotprovidersLoaded()
0077 {
0078     qCDebug(CHOQOK);
0079     cfg_provider->removeItem(0);
0080     providersLoaded = true;
0081     QList <Attica::Provider> providerList = mMicroblog->providerManager()->providers();
0082     int selectedIndex = 0;
0083     for (const Attica::Provider &p: providerList) {
0084         qCDebug(CHOQOK) << p.baseUrl();
0085         cfg_provider->addItem(p.name(), p.baseUrl());
0086         if (mAccount && mAccount->providerUrl() == p.baseUrl()) {
0087             selectedIndex = cfg_provider->count() - 1;
0088         }
0089     }
0090     cfg_provider->setCurrentIndex(selectedIndex);
0091 }
0092 
0093 #include "moc_ocsconfigurewidget.cpp"