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"