File indexing completed on 2024-04-28 16:44:44
0001 /* 0002 SPDX-FileCopyrightText: 2008 Ryan P. Bitanga <ryan.bitanga@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "spellcheck_config.h" 0008 0009 #include <QGridLayout> 0010 #include <QProcess> 0011 0012 #include <KConfigGroup> 0013 #include <KPluginFactory> 0014 #include <KSharedConfig> 0015 0016 // For the macro 0017 #include <KRunner/AbstractRunner> 0018 0019 SpellCheckConfigForm::SpellCheckConfigForm(QWidget *parent) 0020 : QWidget(parent) 0021 { 0022 setupUi(this); 0023 } 0024 0025 SpellCheckConfig::SpellCheckConfig(QWidget *parent, const QVariantList &args) 0026 : KCModule(parent, args) 0027 { 0028 m_ui = new SpellCheckConfigForm(this); 0029 0030 QGridLayout *layout = new QGridLayout(this); 0031 0032 layout->addWidget(m_ui, 0, 0); 0033 0034 connect(m_ui->m_requireTriggerWord, &QCheckBox::stateChanged, this, &SpellCheckConfig::markAsChanged); 0035 connect(m_ui->m_requireTriggerWord, &QCheckBox::stateChanged, this, &SpellCheckConfig::toggleTriggerWord); 0036 connect(m_ui->m_triggerWord, &QLineEdit::textChanged, this, &SpellCheckConfig::markAsChanged); 0037 connect(m_ui->m_openKcmButton, &QPushButton::clicked, this, &SpellCheckConfig::openKcm); 0038 0039 m_ui->m_openKcmButton->setIcon(QIcon::fromTheme(QStringLiteral("tools-check-spelling"))); 0040 } 0041 0042 SpellCheckConfig::~SpellCheckConfig() 0043 { 0044 } 0045 0046 void SpellCheckConfig::toggleTriggerWord(int state) 0047 { 0048 m_ui->m_triggerWord->setEnabled(state == Qt::Checked); 0049 } 0050 0051 void SpellCheckConfig::openKcm() 0052 { 0053 QProcess::startDetached(QStringLiteral("kcmshell5"), {QStringLiteral("spellchecking")}); 0054 } 0055 0056 void SpellCheckConfig::load() 0057 { 0058 KCModule::load(); 0059 0060 // FIXME: This shouldn't be hardcoded! 0061 const KSharedConfig::Ptr cfg = KSharedConfig::openConfig(QStringLiteral("krunnerrc")); 0062 const KConfigGroup grp = cfg->group("Runners").group(KRUNNER_PLUGIN_NAME); 0063 0064 const bool requireTrigger = grp.readEntry("requireTriggerWord", true); 0065 const QString trigger = grp.readEntry("trigger", i18n("spell")); 0066 0067 if (!requireTrigger) { 0068 m_ui->m_triggerWord->setEnabled(false); 0069 } 0070 0071 m_ui->m_requireTriggerWord->setCheckState((requireTrigger) ? Qt::Checked : Qt::Unchecked); 0072 m_ui->m_triggerWord->setText(trigger); 0073 0074 Q_EMIT changed(false); 0075 } 0076 0077 void SpellCheckConfig::save() 0078 { 0079 // FIXME: This shouldn't be hardcoded! 0080 KSharedConfig::Ptr cfg = KSharedConfig::openConfig(QStringLiteral("krunnerrc")); 0081 KConfigGroup grp = cfg->group("Runners").group(KRUNNER_PLUGIN_NAME); 0082 0083 bool requireTrigger = m_ui->m_requireTriggerWord->checkState() == Qt::Checked; 0084 if (requireTrigger) { 0085 grp.writeEntry("trigger", m_ui->m_triggerWord->text()); 0086 } 0087 grp.writeEntry("requireTriggerWord", requireTrigger); 0088 grp.sync(); 0089 0090 Q_EMIT changed(false); 0091 } 0092 0093 void SpellCheckConfig::defaults() 0094 { 0095 m_ui->m_requireTriggerWord->setCheckState(Qt::Checked); 0096 m_ui->m_triggerWord->setText(i18n("spell")); 0097 Q_EMIT changed(true); 0098 } 0099 0100 K_PLUGIN_FACTORY(SpellCheckConfigFactory, registerPlugin<SpellCheckConfig>();) 0101 0102 #include "spellcheck_config.moc"