File indexing completed on 2024-04-28 09:41:39
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 "configurationDialog.h" 0008 0009 #include <QPushButton> 0010 0011 #include <KLocalizedString> 0012 0013 #include "generalConfigurationWidget.h" 0014 0015 #include "logModeConfigurationWidget.h" 0016 0017 #include "mainWindow.h" 0018 0019 #include "globals.h" 0020 #include "ksystemlogConfig.h" 0021 0022 #include "defaults.h" 0023 #include "ksystemlog_debug.h" 0024 0025 ConfigurationDialog::ConfigurationDialog(QWidget *parent) 0026 : KConfigDialog(parent, i18n("Settings"), KSystemLogConfig::self()) 0027 { 0028 setupGeneralConfiguration(); 0029 0030 setupLogModeConfigurations(); 0031 } 0032 0033 ConfigurationDialog::~ConfigurationDialog() 0034 { 0035 } 0036 0037 void ConfigurationDialog::setupLogModeConfigurations() 0038 { 0039 qCDebug(KSYSTEMLOG) << "Setup Log Mode Configurations..."; 0040 0041 const auto logModes = Globals::instance().logModes(); 0042 for (LogMode *logMode : logModes) { 0043 // Some Log mode does not need a configuration widget 0044 if (!logMode->logModeConfigurationWidget()) { 0045 continue; 0046 } 0047 0048 // The configuration widget could be shared between Log Modes 0049 if (mLogModeConfigurations.contains(logMode->logModeConfigurationWidget())) { 0050 continue; 0051 } 0052 0053 mLogModeConfigurations.append(logMode->logModeConfigurationWidget()); 0054 } 0055 0056 for (LogModeConfigurationWidget *logModeConfigurationWidget : std::as_const(mLogModeConfigurations)) { 0057 qCDebug(KSYSTEMLOG) << "Adding " << logModeConfigurationWidget->itemName() << " configuration..."; 0058 0059 addPage(logModeConfigurationWidget, 0060 logModeConfigurationWidget->itemName(), 0061 logModeConfigurationWidget->iconName(), 0062 logModeConfigurationWidget->header(), 0063 false); 0064 0065 connect(logModeConfigurationWidget, &LogModeConfigurationWidget::configurationChanged, this, &ConfigurationDialog::updateConfiguration); 0066 } 0067 } 0068 0069 void ConfigurationDialog::showConfiguration() 0070 { 0071 qCDebug(KSYSTEMLOG) << "Showing Configuration dialog..."; 0072 0073 show(); 0074 } 0075 0076 void ConfigurationDialog::setupGeneralConfiguration() 0077 { 0078 mGeneralConfiguration = new GeneralConfigurationWidget(); 0079 0080 addPage(mGeneralConfiguration, i18n("General"), QStringLiteral("utilities-log-viewer"), i18n("General"), false); 0081 0082 connect(mGeneralConfiguration, &GeneralConfigurationWidget::configurationChanged, this, &ConfigurationDialog::updateConfiguration); 0083 } 0084 0085 void ConfigurationDialog::updateSettings() 0086 { 0087 qCDebug(KSYSTEMLOG) << "Saving configuration..."; 0088 0089 mChanged = false; 0090 0091 mGeneralConfiguration->saveConfig(); 0092 0093 for (LogModeConfigurationWidget *logModeConfigurationWidget : std::as_const(mLogModeConfigurations)) { 0094 logModeConfigurationWidget->saveConfig(); 0095 } 0096 0097 KSystemLogConfig::self()->save(); 0098 0099 Q_EMIT configurationSaved(); 0100 0101 qCDebug(KSYSTEMLOG) << "Configuration saved"; 0102 } 0103 0104 bool ConfigurationDialog::hasChanged() 0105 { 0106 qCDebug(KSYSTEMLOG) << "Current change status : " << mChanged; 0107 return mChanged; 0108 } 0109 0110 void ConfigurationDialog::updateConfiguration() 0111 { 0112 qCDebug(KSYSTEMLOG) << "Updating configuration..."; 0113 0114 bool valid = mGeneralConfiguration->isValid(); 0115 if (valid) { 0116 for (LogModeConfigurationWidget *logModeConfigurationWidget : std::as_const(mLogModeConfigurations)) { 0117 if (!logModeConfigurationWidget->isValid()) { 0118 valid = false; 0119 break; 0120 } 0121 } 0122 } 0123 0124 if (valid) { 0125 buttonBox()->button(QDialogButtonBox::Ok)->setEnabled(true); 0126 0127 updateButtons(); 0128 } else { 0129 buttonBox()->button(QDialogButtonBox::Ok)->setEnabled(false); 0130 buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(false); 0131 } 0132 } 0133 0134 void ConfigurationDialog::updateButtons() 0135 { 0136 qCDebug(KSYSTEMLOG) << "Updating configuration buttons..."; 0137 0138 mChanged = true; 0139 } 0140 0141 void ConfigurationDialog::updateWidgets() 0142 { 0143 qCDebug(KSYSTEMLOG) << "Reading configuration..."; 0144 0145 mGeneralConfiguration->readConfig(); 0146 for (LogModeConfigurationWidget *logModeConfigurationWidget : std::as_const(mLogModeConfigurations)) { 0147 logModeConfigurationWidget->readConfig(); 0148 } 0149 0150 mChanged = false; 0151 } 0152 0153 void ConfigurationDialog::updateWidgetsDefault() 0154 { 0155 qCDebug(KSYSTEMLOG) << "Loading default configuration..."; 0156 0157 mGeneralConfiguration->defaultConfig(); 0158 for (LogModeConfigurationWidget *logModeConfigurationWidget : std::as_const(mLogModeConfigurations)) { 0159 logModeConfigurationWidget->defaultConfig(); 0160 } 0161 0162 mChanged = false; 0163 } 0164 0165 bool ConfigurationDialog::isDefault() 0166 { 0167 /** 0168 * TODO Set this to true and find a way to retrieve defaults value 0169 * of the configuration (see defaultConfig() methods of LogModeConfigurations) 0170 */ 0171 0172 return true; 0173 } 0174 0175 #include "moc_configurationDialog.cpp"