File indexing completed on 2024-05-05 04:57:31

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 "imstatusconfig.h"
0010 
0011 #include <QCheckBox>
0012 #include <QComboBox>
0013 #include <QPlainTextEdit>
0014 #include <QVBoxLayout>
0015 
0016 #include <KAboutData>
0017 #include <KPluginFactory>
0018 
0019 #include "imqdbus.h"
0020 #include "imstatussettings.h"
0021 
0022 K_PLUGIN_CLASS_WITH_JSON(IMStatusConfig, "choqok_imstatus_config.json")
0023 
0024 IMStatusConfig::IMStatusConfig(QWidget *parent, const QVariantList &args) :
0025     KCModule(parent, args)
0026 {
0027     QVBoxLayout *layout = new QVBoxLayout(this);
0028     QWidget *wd = new QWidget(this);
0029     wd->setObjectName(QLatin1String("mIMStatusCtl"));
0030     ui.setupUi(wd);
0031     addConfig(IMStatusSettings::self(), wd);
0032     layout->addWidget(wd);
0033     setButtons(KCModule::Apply);
0034     connect(ui.cfg_imclient, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged,
0035             this, &IMStatusConfig::emitChanged);
0036     connect(ui.cfg_repeat, &QCheckBox::stateChanged, this, &IMStatusConfig::emitChanged);
0037     connect(ui.cfg_reply, &QCheckBox::stateChanged, this, &IMStatusConfig::emitChanged);
0038     connect(ui.cfg_templtate, &QPlainTextEdit::textChanged, this, &IMStatusConfig::emitChanged);
0039     imList = IMQDBus::scanForIMs();
0040     ui.cfg_imclient->addItems(imList);
0041 }
0042 
0043 IMStatusConfig::~IMStatusConfig()
0044 {
0045 }
0046 
0047 void IMStatusConfig::load()
0048 {
0049     KCModule::load();
0050     KConfigGroup grp(KSharedConfig::openConfig(), "IMStatus");
0051     IMStatusSettings::self()->load();
0052     ui.cfg_imclient->setCurrentIndex(imList.indexOf(IMStatusSettings::imclient()));
0053     ui.cfg_templtate->setPlainText(IMStatusSettings::templtate().isEmpty() ?
0054                                    QLatin1String("%username%: \"%status%\" at %time% from %client% (%url%)") : IMStatusSettings::templtate());
0055     ui.cfg_reply->setChecked(IMStatusSettings::reply());
0056     ui.cfg_repeat->setChecked(IMStatusSettings::repeat());
0057 }
0058 
0059 void IMStatusConfig::save()
0060 {
0061     KCModule::save();
0062     IMStatusSettings::setImclient(ui.cfg_imclient->currentText());
0063     IMStatusSettings::setTempltate(ui.cfg_templtate->toPlainText());
0064     IMStatusSettings::setReply(ui.cfg_reply->isChecked());
0065     IMStatusSettings::setRepeat(ui.cfg_repeat->isChecked());
0066     IMStatusSettings::self()->save();
0067 }
0068 
0069 void IMStatusConfig::emitChanged()
0070 {
0071     Q_EMIT changed(true);
0072 }
0073 
0074 #include "imstatusconfig.moc"
0075 #include "moc_imstatusconfig.cpp"