File indexing completed on 2024-05-12 05:48:41

0001 /*
0002     KApacheLog, a apache log viewer tool
0003     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "xsessionConfigurationWidget.h"
0009 
0010 XSessionConfigurationWidget::XSessionConfigurationWidget()
0011     : LogModeConfigurationWidget(i18n("X Session Log"), QStringLiteral(X_SESSION_MODE_ICON), i18n("X Session Log"))
0012 {
0013     setupUi(this);
0014 
0015     mWarningBox = new KMessageWidget(this);
0016     mWarningBox->setVisible(false);
0017     mWarningBox->setMessageType(KMessageWidget::Warning);
0018     mWarningBox->setText(i18n("Log file does not exist. Mode will be unavailable."));
0019     mWarningBox->setCloseButtonVisible(false);
0020     mWarningBox->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning")));
0021 
0022     verticalLayout->insertWidget(0, mWarningBox);
0023 
0024     xsessionUrlRequester->setToolTip(i18n("You can type or choose the X Session log file (example: <i>~/.xsession-errors</i>)."));
0025     xsessionUrlRequester->setWhatsThis(
0026         i18n("You can type or choose here the X Session log file. This file will be analyzed when you select "
0027              "the <b>X Session log</b> menu. Generally, its name is <i>~/.xsession-errors</i>"));
0028     xsessionUrlRequester->setMode(KFile::File);
0029     xsessionUrlRequester->setEnabled(true);
0030 
0031     connect(xsessionUrlRequester, &KUrlRequester::textChanged, this, &LogModeConfigurationWidget::configurationChanged);
0032     connect(ignoreXorgErrors, &QCheckBox::stateChanged, this, &LogModeConfigurationWidget::configurationChanged);
0033 
0034     connect(ignoreXorgErrors, &QAbstractButton::toggled, xorgErrorsDescription, &QWidget::setEnabled);
0035 
0036     mXorgErrorsDescriptionDefined = false;
0037 }
0038 
0039 void XSessionConfigurationWidget::saveConfig()
0040 {
0041     auto *configuration = Globals::instance().findLogMode(QStringLiteral(X_SESSION_LOG_MODE_ID))->logModeConfiguration<XSessionConfiguration *>();
0042 
0043     configuration->setXSessionPath(xsessionUrlRequester->url().toLocalFile());
0044     configuration->setIgnoreXorgErrors(ignoreXorgErrors->isChecked());
0045 }
0046 
0047 void XSessionConfigurationWidget::readConfig()
0048 {
0049     auto *configuration = Globals::instance().findLogMode(QStringLiteral(X_SESSION_LOG_MODE_ID))->logModeConfiguration<XSessionConfiguration *>();
0050 
0051     const QString path = configuration->xsessionPath();
0052     const QFileInfo fileInfo(path);
0053     mWarningBox->setVisible(!fileInfo.exists());
0054 
0055     xsessionUrlRequester->setUrl(QUrl::fromLocalFile(path));
0056     ignoreXorgErrors->setChecked(configuration->isIgnoreXorgErrors());
0057 
0058     prepareXorgErrorsDescription();
0059 }
0060 
0061 void XSessionConfigurationWidget::defaultConfig()
0062 {
0063     // TODO Find a way to read the configuration per default
0064     readConfig();
0065 }
0066 
0067 bool XSessionConfigurationWidget::isValid() const
0068 {
0069     if (!xsessionUrlRequester->url().toLocalFile().isEmpty()) {
0070         return true;
0071     }
0072 
0073     return false;
0074 }
0075 
0076 void XSessionConfigurationWidget::prepareXorgErrorsDescription()
0077 {
0078     auto *configuration = Globals::instance().findLogMode(QStringLiteral(X_SESSION_LOG_MODE_ID))->logModeConfiguration<XSessionConfiguration *>();
0079 
0080     // Prepare Ignore Xorg Errors description
0081     if (!mXorgErrorsDescriptionDefined) {
0082         QString text = xorgErrorsDescription->text();
0083         text.append(QLatin1String("<ul style='margin-top:0px;margin-bottom:0px'>"));
0084 
0085         const auto xorgErrorKeywords = configuration->xorgErrorKeywords();
0086         for (const QString &xorgErrorKeyword : xorgErrorKeywords) {
0087             text.append(i18n("<li><b>%1</b>: ...</li>", xorgErrorKeyword));
0088         }
0089         text.append(QLatin1String("</ul>"));
0090         xorgErrorsDescription->setText(text);
0091 
0092         mXorgErrorsDescriptionDefined = true;
0093     }
0094 }
0095 
0096 #include "moc_xsessionConfigurationWidget.cpp"