File indexing completed on 2024-06-23 05:14:07
0001 /* 0002 kwatchgnupgconfig.cpp 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2001, 2002, 2004 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include <config-kleopatra.h> 0011 0012 #include "kwatchgnupgconfig.h" 0013 0014 #include "kwatchgnupg.h" 0015 0016 #include <Libkleo/FileNameRequester> 0017 0018 #include <KConfig> 0019 #include <KLocalizedString> 0020 #include <KPluralHandlingSpinBox> 0021 0022 #include <KConfigGroup> 0023 #include <KSharedConfig> 0024 #include <QCheckBox> 0025 #include <QComboBox> 0026 #include <QDialogButtonBox> 0027 #include <QGroupBox> 0028 #include <QLabel> 0029 #include <QPushButton> 0030 #include <QVBoxLayout> 0031 0032 static const char *log_levels[] = {"none", "basic", "advanced", "expert", "guru"}; 0033 0034 static int log_level_to_int(const QString &loglevel) 0035 { 0036 if (loglevel == QLatin1StringView("none")) { 0037 return 0; 0038 } else if (loglevel == QLatin1StringView("basic")) { 0039 return 1; 0040 } else if (loglevel == QLatin1StringView("advanced")) { 0041 return 2; 0042 } else if (loglevel == QLatin1StringView("expert")) { 0043 return 3; 0044 } else if (loglevel == QLatin1StringView("guru")) { 0045 return 4; 0046 } else { 0047 // default 0048 return 1; 0049 } 0050 } 0051 0052 KWatchGnuPGConfig::KWatchGnuPGConfig(QWidget *parent) 0053 : QDialog(parent) 0054 { 0055 setWindowTitle(i18nc("@title:window", "Configure KWatchGnuPG")); 0056 auto mainLayout = new QVBoxLayout(this); 0057 0058 mButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); 0059 QPushButton *okButton = mButtonBox->button(QDialogButtonBox::Ok); 0060 okButton->setDefault(true); 0061 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0062 connect(mButtonBox, &QDialogButtonBox::rejected, this, &KWatchGnuPGConfig::reject); 0063 0064 auto top = new QWidget; 0065 mainLayout->addWidget(top); 0066 mainLayout->addWidget(mButtonBox); 0067 0068 auto vlay = new QVBoxLayout(top); 0069 vlay->setContentsMargins(0, 0, 0, 0); 0070 0071 auto group = new QGroupBox(i18n("WatchGnuPG"), top); 0072 vlay->addWidget(group); 0073 0074 auto glay = new QGridLayout(group); 0075 glay->setColumnStretch(1, 1); 0076 0077 int row = -1; 0078 0079 ++row; 0080 mExeED = new Kleo::FileNameRequester(group); 0081 auto label = new QLabel(i18n("&Executable:"), group); 0082 label->setBuddy(mExeED); 0083 glay->addWidget(label, row, 0); 0084 glay->addWidget(mExeED, row, 1); 0085 0086 connect(mExeED, &Kleo::FileNameRequester::fileNameChanged, this, &KWatchGnuPGConfig::slotChanged); 0087 0088 ++row; 0089 mSocketED = new Kleo::FileNameRequester(group); 0090 label = new QLabel(i18n("&Socket:"), group); 0091 label->setBuddy(mSocketED); 0092 glay->addWidget(label, row, 0); 0093 glay->addWidget(mSocketED, row, 1); 0094 0095 connect(mSocketED, &Kleo::FileNameRequester::fileNameChanged, this, &KWatchGnuPGConfig::slotChanged); 0096 0097 ++row; 0098 mLogLevelCB = new QComboBox(group); 0099 mLogLevelCB->addItem(i18n("None")); 0100 mLogLevelCB->addItem(i18n("Basic")); 0101 mLogLevelCB->addItem(i18n("Advanced")); 0102 mLogLevelCB->addItem(i18n("Expert")); 0103 mLogLevelCB->addItem(i18n("Guru")); 0104 label = new QLabel(i18n("Default &log level:"), group); 0105 label->setBuddy(mLogLevelCB); 0106 glay->addWidget(label, row, 0); 0107 glay->addWidget(mLogLevelCB, row, 1); 0108 0109 connect(mLogLevelCB, &QComboBox::activated, this, &KWatchGnuPGConfig::slotChanged); 0110 0111 /******************* Log Window group *******************/ 0112 group = new QGroupBox(i18n("Log Window"), top); 0113 vlay->addWidget(group); 0114 0115 glay = new QGridLayout(group); 0116 glay->setColumnStretch(1, 1); 0117 0118 row = -1; 0119 0120 ++row; 0121 mLoglenSB = new KPluralHandlingSpinBox(group); 0122 mLoglenSB->setRange(0, 1000000); 0123 mLoglenSB->setSingleStep(100); 0124 mLoglenSB->setSuffix(ki18ncp("history size spinbox suffix", " line", " lines")); 0125 mLoglenSB->setSpecialValueText(i18n("unlimited")); 0126 label = new QLabel(i18n("&History size:"), group); 0127 label->setBuddy(mLoglenSB); 0128 glay->addWidget(label, row, 0); 0129 glay->addWidget(mLoglenSB, row, 1); 0130 auto button = new QPushButton(i18n("Set &Unlimited"), group); 0131 glay->addWidget(button, row, 2); 0132 0133 connect(mLoglenSB, &QSpinBox::valueChanged, this, &KWatchGnuPGConfig::slotChanged); 0134 connect(button, &QPushButton::clicked, this, &KWatchGnuPGConfig::slotSetHistorySizeUnlimited); 0135 0136 ++row; 0137 mWordWrapCB = new QCheckBox(i18n("Enable &word wrapping"), group); 0138 mWordWrapCB->hide(); // QTextEdit doesn't support word wrapping in LogText mode 0139 glay->addWidget(mWordWrapCB, row, 0, 1, 3); 0140 0141 connect(mWordWrapCB, &QCheckBox::clicked, this, &KWatchGnuPGConfig::slotChanged); 0142 0143 vlay->addStretch(1); 0144 0145 connect(okButton, &QPushButton::clicked, this, &KWatchGnuPGConfig::slotSave); 0146 } 0147 0148 KWatchGnuPGConfig::~KWatchGnuPGConfig() 0149 { 0150 } 0151 0152 void KWatchGnuPGConfig::slotSetHistorySizeUnlimited() 0153 { 0154 mLoglenSB->setValue(0); 0155 } 0156 0157 void KWatchGnuPGConfig::loadConfig() 0158 { 0159 const KConfigGroup watchGnuPG(KSharedConfig::openConfig(), QStringLiteral("WatchGnuPG")); 0160 mExeED->setFileName(watchGnuPG.readEntry("Executable", WATCHGNUPGBINARY)); 0161 mSocketED->setFileName(watchGnuPG.readEntry("Socket", WATCHGNUPGSOCKET)); 0162 mLogLevelCB->setCurrentIndex(log_level_to_int(watchGnuPG.readEntry("LogLevel", "basic"))); 0163 0164 const KConfigGroup logWindow(KSharedConfig::openConfig(), QStringLiteral("LogWindow")); 0165 mLoglenSB->setValue(logWindow.readEntry("MaxLogLen", 10000)); 0166 mWordWrapCB->setChecked(logWindow.readEntry("WordWrap", false)); 0167 0168 mButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false); 0169 } 0170 0171 void KWatchGnuPGConfig::saveConfig() 0172 { 0173 KConfigGroup watchGnuPG(KSharedConfig::openConfig(), QStringLiteral("WatchGnuPG")); 0174 watchGnuPG.writeEntry("Executable", mExeED->fileName()); 0175 watchGnuPG.writeEntry("Socket", mSocketED->fileName()); 0176 watchGnuPG.writeEntry("LogLevel", log_levels[mLogLevelCB->currentIndex()]); 0177 0178 KConfigGroup logWindow(KSharedConfig::openConfig(), QStringLiteral("LogWindow")); 0179 logWindow.writeEntry("MaxLogLen", mLoglenSB->value()); 0180 logWindow.writeEntry("WordWrap", mWordWrapCB->isChecked()); 0181 0182 KSharedConfig::openConfig()->sync(); 0183 0184 mButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false); 0185 } 0186 0187 void KWatchGnuPGConfig::slotChanged() 0188 { 0189 mButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true); 0190 } 0191 0192 void KWatchGnuPGConfig::slotSave() 0193 { 0194 saveConfig(); 0195 Q_EMIT reconfigure(); 0196 accept(); 0197 } 0198 0199 #include "moc_kwatchgnupgconfig.cpp"