File indexing completed on 2024-05-12 04:57:45

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 
0010 #include "twitgooconfig.h"
0011 
0012 #include <QCheckBox>
0013 #include <QComboBox>
0014 #include <QVBoxLayout>
0015 
0016 #include <KAboutData>
0017 #include <KLocalizedString>
0018 #include <KMessageBox>
0019 #include <KPluginFactory>
0020 
0021 #include "accountmanager.h"
0022 
0023 #include "twitgoosettings.h"
0024 
0025 K_PLUGIN_CLASS_WITH_JSON(TwitgooConfig, "choqok_twitgoo_config.json")
0026 
0027 TwitgooConfig::TwitgooConfig(QWidget *parent, const QVariantList &)
0028     : KCModule(parent)
0029 {
0030     QVBoxLayout *layout = new QVBoxLayout(this);
0031     QWidget *wd = new QWidget(this);
0032     wd->setObjectName(QLatin1String("mTwitgooCtl"));
0033     ui.setupUi(wd);
0034     addConfig(TwitgooSettings::self(), wd);
0035     layout->addWidget(wd);
0036     connect(ui.cfg_accountsList, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged,
0037             this, &TwitgooConfig::emitChanged);
0038     connect(ui.cfg_directLink, &QCheckBox::stateChanged, this, &TwitgooConfig::emitChanged);
0039 }
0040 
0041 TwitgooConfig::~TwitgooConfig()
0042 {
0043 }
0044 
0045 void TwitgooConfig::load()
0046 {
0047     KCModule::load();
0048     QList<Choqok::Account *> list = Choqok::AccountManager::self()->accounts();
0049     for (Choqok::Account *acc: list) {
0050         if (acc->inherits("TwitterAccount")) {
0051             ui.cfg_accountsList->addItem(acc->alias());
0052         }
0053     }
0054     TwitgooSettings::self()->load();
0055     ui.cfg_accountsList->setCurrentText(TwitgooSettings::alias());
0056     ui.cfg_directLink->setChecked(TwitgooSettings::directLink());
0057 }
0058 
0059 void TwitgooConfig::save()
0060 {
0061     if (ui.cfg_accountsList->currentIndex() > -1) {
0062         TwitgooSettings::setAlias(ui.cfg_accountsList->currentText());
0063         //qDebug() << TwitgooSettings::alias();
0064     } else {
0065         TwitgooSettings::setAlias(QString());
0066         KMessageBox::error(this, i18n("You have to configure at least one Twitter account to use this plugin."));
0067     }
0068     TwitgooSettings::setDirectLink(ui.cfg_directLink->isChecked());
0069     TwitgooSettings::self()->save();
0070     KCModule::save();
0071 }
0072 
0073 void TwitgooConfig::emitChanged()
0074 {
0075     Q_EMIT changed(true);
0076 }
0077 
0078 #include "moc_twitgooconfig.cpp"
0079 #include "twitgooconfig.moc"