File indexing completed on 2024-05-05 17:45:01

0001 /*
0002     SPDX-FileCopyrightText: 2009 Jan Gerrit Marker <jangerrit@weiler-marker.com>
0003     SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 // Project-Includes
0009 #include "killrunner_config.h"
0010 // KDE-Includes
0011 #include "config_keys.h"
0012 #include <KConfigGroup>
0013 #include <KPluginFactory>
0014 #include <KSharedConfig>
0015 
0016 K_PLUGIN_FACTORY(KillRunnerConfigFactory, registerPlugin<KillRunnerConfig>();)
0017 
0018 KillRunnerConfigForm::KillRunnerConfigForm(QWidget *parent)
0019     : QWidget(parent)
0020 {
0021     setupUi(this);
0022 }
0023 
0024 KillRunnerConfig::KillRunnerConfig(QWidget *parent, const QVariantList &args)
0025     : KCModule(parent, args)
0026 {
0027     m_ui = new KillRunnerConfigForm(this);
0028 
0029     QGridLayout *layout = new QGridLayout(this);
0030     layout->addWidget(m_ui, 0, 0);
0031 
0032     m_ui->sorting->addItem(i18n("CPU usage"), CPU);
0033     m_ui->sorting->addItem(i18n("inverted CPU usage"), CPUI);
0034     m_ui->sorting->addItem(i18n("nothing"), NONE);
0035 
0036     connect(m_ui->useTriggerWord, &QCheckBox::stateChanged, this, &KillRunnerConfig::markAsChanged);
0037     connect(m_ui->triggerWord, &KLineEdit::textChanged, this, &KillRunnerConfig::markAsChanged);
0038     connect(m_ui->sorting, &QComboBox::currentIndexChanged, this, &KillRunnerConfig::markAsChanged);
0039 
0040     load();
0041 }
0042 
0043 void KillRunnerConfig::load()
0044 {
0045     KCModule::load();
0046 
0047     KSharedConfig::Ptr cfg = KSharedConfig::openConfig(QStringLiteral("krunnerrc"));
0048     const KConfigGroup grp = cfg->group("Runners").group(KRUNNER_PLUGIN_NAME);
0049 
0050     m_ui->useTriggerWord->setChecked(grp.readEntry(CONFIG_USE_TRIGGERWORD, true));
0051     m_ui->triggerWord->setText(grp.readEntry(CONFIG_TRIGGERWORD, i18n("kill")));
0052     m_ui->sorting->setCurrentIndex(m_ui->sorting->findData(grp.readEntry<int>(CONFIG_SORTING, NONE)));
0053 
0054     Q_EMIT changed(false);
0055 }
0056 
0057 void KillRunnerConfig::save()
0058 {
0059     KCModule::save();
0060 
0061     KSharedConfig::Ptr cfg = KSharedConfig::openConfig(QStringLiteral("krunnerrc"));
0062     KConfigGroup grp = cfg->group("Runners").group(KRUNNER_PLUGIN_NAME);
0063 
0064     grp.writeEntry(CONFIG_USE_TRIGGERWORD, m_ui->useTriggerWord->isChecked());
0065     grp.writeEntry(CONFIG_TRIGGERWORD, m_ui->triggerWord->text());
0066     grp.writeEntry(CONFIG_SORTING, m_ui->sorting->itemData(m_ui->sorting->currentIndex()));
0067     grp.sync();
0068 
0069     Q_EMIT changed(false);
0070 }
0071 
0072 void KillRunnerConfig::defaults()
0073 {
0074     KCModule::defaults();
0075 
0076     m_ui->useTriggerWord->setChecked(true);
0077     m_ui->triggerWord->setText(i18n("kill"));
0078     m_ui->sorting->setCurrentIndex(m_ui->sorting->findData((int)NONE));
0079 
0080     markAsChanged();
0081 }
0082 
0083 #include "killrunner_config.moc"