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"