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"