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"