File indexing completed on 2024-05-12 04:57:44
0001 /* 0002 This file is part of Choqok, the KDE micro-blogging client 0003 0004 SPDX-FileCopyrightText: 2010-2012 Andrey Esin <gmlastik@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 "mobypictureconfig.h" 0010 0011 #include <QComboBox> 0012 #include <QLineEdit> 0013 #include <QRadioButton> 0014 #include <QVBoxLayout> 0015 0016 #include <KAboutData> 0017 #include <KLocalizedString> 0018 #include <KMessageBox> 0019 #include <KPluginFactory> 0020 0021 #include "mobypicturesettings.h" 0022 0023 #include "accountmanager.h" 0024 #include "passwordmanager.h" 0025 0026 K_PLUGIN_CLASS_WITH_JSON(MobypictureConfig, "choqok_mobypicture_config.json") 0027 0028 MobypictureConfig::MobypictureConfig(QWidget *parent, const QVariantList &) 0029 : KCModule(parent) 0030 { 0031 QVBoxLayout *layout = new QVBoxLayout(this); 0032 QWidget *wd = new QWidget(this); 0033 wd->setObjectName(QLatin1String("mMobypictureCtl")); 0034 ui.setupUi(wd); 0035 addConfig(MobypictureSettings::self(), wd); 0036 layout->addWidget(wd); 0037 ui.cfg_pin->setEchoMode(QLineEdit::Password); 0038 connect(ui.cfg_basic, &QRadioButton::clicked, this, &MobypictureConfig::emitChanged); 0039 connect(ui.cfg_login, &QLineEdit::textChanged, this, &MobypictureConfig::emitChanged); 0040 connect(ui.cfg_pin, &QLineEdit::textChanged, this, &MobypictureConfig::emitChanged); 0041 connect(ui.cfg_oauth, &QRadioButton::clicked, this, &MobypictureConfig::emitChanged); 0042 connect(ui.cfg_accountsList, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged, 0043 this, &MobypictureConfig::emitChanged); 0044 } 0045 0046 MobypictureConfig::~MobypictureConfig() 0047 { 0048 } 0049 0050 void MobypictureConfig::load() 0051 { 0052 KCModule::load(); 0053 QList<Choqok::Account *> list = Choqok::AccountManager::self()->accounts(); 0054 for (Choqok::Account *acc: list) { 0055 if (acc->inherits("TwitterAccount")) { 0056 ui.cfg_accountsList->addItem(acc->alias()); 0057 } 0058 } 0059 MobypictureSettings::self()->load(); 0060 ui.cfg_basic->setChecked(MobypictureSettings::basic()); 0061 ui.cfg_login->setText(MobypictureSettings::login()); 0062 ui.cfg_pin->setText(Choqok::PasswordManager::self()->readPassword(QStringLiteral("mobypicture_%1") 0063 .arg(ui.cfg_login->text()))); 0064 ui.cfg_oauth->setChecked(MobypictureSettings::oauth()); 0065 ui.cfg_accountsList->setCurrentText(MobypictureSettings::alias()); 0066 emitChanged(); 0067 } 0068 0069 void MobypictureConfig::save() 0070 { 0071 if (ui.cfg_accountsList->currentIndex() > -1) { 0072 //qDebug() << MobypictureSettings::alias(); 0073 MobypictureSettings::setAlias(ui.cfg_accountsList->currentText()); 0074 } else { 0075 MobypictureSettings::setAlias(QString()); 0076 KMessageBox::error(this, i18n("You have to configure at least one Twitter account to use this plugin.")); 0077 } 0078 0079 MobypictureSettings::setBasic(ui.cfg_basic->isChecked()); 0080 MobypictureSettings::setLogin(ui.cfg_login->text()); 0081 Choqok::PasswordManager::self()->writePassword(QStringLiteral("mobypicture_%1").arg(ui.cfg_login->text()), 0082 ui.cfg_pin->text()); 0083 MobypictureSettings::setOauth(ui.cfg_oauth->isChecked()); 0084 MobypictureSettings::self()->save(); 0085 KCModule::save(); 0086 } 0087 0088 void MobypictureConfig::emitChanged() 0089 { 0090 ui.cfg_login->setEnabled(ui.cfg_basic->isChecked()); 0091 ui.cfg_pin->setEnabled(ui.cfg_basic->isChecked()); 0092 ui.cfg_accountsList->setEnabled(ui.cfg_oauth->isChecked()); 0093 Q_EMIT changed(true); 0094 } 0095 0096 #include "mobypictureconfig.moc" 0097 #include "moc_mobypictureconfig.cpp"