File indexing completed on 2024-05-19 05:49:15

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "cronConfigurationWidget.h"
0008 
0009 CronConfigurationWidget::CronConfigurationWidget()
0010     : LogModeConfigurationWidget(i18n("Cron Log"), QStringLiteral(CRON_MODE_ICON), i18n("Cron Log"))
0011 {
0012     auto layout = new QVBoxLayout(this);
0013 
0014     const QString description = i18n(
0015         "<p>These files will be analyzed to show the <b>Cron Logs</b> (i.e. planned tasks logs). <a "
0016         "href='man:/cron'>More information...</a></p>");
0017 
0018     mFileList = new FileList(this, description);
0019 
0020     connect(mFileList, &FileList::fileListChanged, this, &LogModeConfigurationWidget::configurationChanged);
0021 
0022     layout->addWidget(mFileList);
0023 
0024     mProcessFilterGroup = new QGroupBox(i18n("Enable Process Filtering"));
0025     mProcessFilterGroup->setCheckable(true);
0026 
0027     connect(mProcessFilterGroup, &QGroupBox::clicked, this, &CronConfigurationWidget::toggleProcessFilterEnabling);
0028     connect(mProcessFilterGroup, &QGroupBox::clicked, this, &LogModeConfigurationWidget::configurationChanged);
0029 
0030     layout->addWidget(mProcessFilterGroup);
0031 
0032     auto processFilterLayout = new QHBoxLayout();
0033 
0034     mProcessFilterGroup->setLayout(processFilterLayout);
0035 
0036     mProcessFilterLabel = new QLabel(i18n("Only keeps lines which matches this process :"));
0037     mProcessFilter = new QLineEdit(this);
0038 
0039     mProcessFilterLabel->setBuddy(mProcessFilter);
0040     connect(mProcessFilter, &QLineEdit::textEdited, this, &LogModeConfigurationWidget::configurationChanged);
0041 
0042     processFilterLayout->addWidget(mProcessFilterLabel);
0043     processFilterLayout->addWidget(mProcessFilter);
0044 }
0045 
0046 bool CronConfigurationWidget::isValid() const
0047 {
0048     if (mFileList->isEmpty()) {
0049         qCDebug(KSYSTEMLOG) << "Cron configuration not valid";
0050         return false;
0051     }
0052 
0053     if (mProcessFilterGroup->isChecked() && mProcessFilter->text().isEmpty()) {
0054         qCDebug(KSYSTEMLOG) << "Cron configuration not valid";
0055         return false;
0056     }
0057 
0058     qCDebug(KSYSTEMLOG) << "Cron configuration valid";
0059     return true;
0060 }
0061 
0062 void CronConfigurationWidget::saveConfig()
0063 {
0064     qCDebug(KSYSTEMLOG) << "Saving config from Cron Options...";
0065 
0066     auto *cronConfiguration = Globals::instance().findLogMode(QStringLiteral(CRON_LOG_MODE_ID))->logModeConfiguration<CronConfiguration *>();
0067     cronConfiguration->setCronPaths(mFileList->paths());
0068 
0069     if (!mProcessFilterGroup->isChecked()) {
0070         cronConfiguration->setProcessFilter(QLatin1String(""));
0071     } else {
0072         cronConfiguration->setProcessFilter(mProcessFilter->text());
0073     }
0074 }
0075 
0076 void CronConfigurationWidget::readConfig()
0077 {
0078     auto *cronConfiguration = Globals::instance().findLogMode(QStringLiteral(CRON_LOG_MODE_ID))->logModeConfiguration<CronConfiguration *>();
0079 
0080     mFileList->removeAllItems();
0081 
0082     mFileList->addPaths(cronConfiguration->cronPaths());
0083 
0084     if (cronConfiguration->processFilter().isEmpty()) {
0085         mProcessFilterGroup->setChecked(false);
0086     } else {
0087         mProcessFilterGroup->setChecked(true);
0088         mProcessFilter->setText(cronConfiguration->processFilter());
0089     }
0090 }
0091 
0092 void CronConfigurationWidget::defaultConfig()
0093 {
0094     // TODO Find a way to read the configuration per default
0095     readConfig();
0096 }
0097 
0098 void CronConfigurationWidget::toggleProcessFilterEnabling(bool enabled)
0099 {
0100     mProcessFilter->setEnabled(enabled);
0101     mProcessFilterLabel->setEnabled(enabled);
0102 }
0103 
0104 #include "moc_cronConfigurationWidget.cpp"