File indexing completed on 2024-05-12 05:52:35

0001 /*
0002     SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 
0006 */
0007 
0008 #include "configurecustomsettingwidget.h"
0009 #include "categorytypecombobox.h"
0010 #include "kdebugsettingsutil.h"
0011 #include <KLineEdit>
0012 #include <KLocalizedString>
0013 #include <QCheckBox>
0014 #include <QHBoxLayout>
0015 #include <QLabel>
0016 #include <QVBoxLayout>
0017 
0018 ConfigureCustomSettingWidget::ConfigureCustomSettingWidget(QWidget *parent)
0019     : QWidget(parent)
0020     , mCategoryLineEdit(new KLineEdit(this))
0021     , mEnableCategory(new QCheckBox(i18n("Enable"), this))
0022     , mCategoryType(new CategoryTypeComboBox(true, this))
0023 {
0024     auto vbox = new QVBoxLayout(this);
0025 
0026     auto lab = new QLabel(i18n("Category:"), this);
0027     lab->setObjectName(QLatin1StringView("category_label"));
0028     mCategoryLineEdit->setTrapReturnKey(true);
0029     mCategoryLineEdit->setClearButtonEnabled(true);
0030     mCategoryLineEdit->setObjectName(QLatin1StringView("category_lineedit"));
0031     connect(mCategoryLineEdit, &KLineEdit::textChanged, this, &ConfigureCustomSettingWidget::slotTextChanged);
0032     auto categoryLayout = new QHBoxLayout;
0033     vbox->addLayout(categoryLayout);
0034     categoryLayout->addWidget(lab);
0035     categoryLayout->addWidget(mCategoryLineEdit);
0036 
0037     lab = new QLabel(i18n("Type:"), this);
0038     lab->setObjectName(QLatin1StringView("categorytype_label"));
0039     categoryLayout->addWidget(lab);
0040 
0041     mCategoryType->setObjectName(QLatin1StringView("categorytype_combobox"));
0042     categoryLayout->addWidget(mCategoryType);
0043 
0044     mEnableCategory->setObjectName(QLatin1StringView("enable_category"));
0045     categoryLayout->addWidget(mEnableCategory);
0046 }
0047 
0048 ConfigureCustomSettingWidget::~ConfigureCustomSettingWidget() = default;
0049 
0050 void ConfigureCustomSettingWidget::slotTextChanged(const QString &text)
0051 {
0052     const bool state = !text.trimmed().isEmpty();
0053     Q_EMIT enableButton(state);
0054 }
0055 
0056 void ConfigureCustomSettingWidget::setRule(const QString &rule)
0057 {
0058     const KDebugSettingsUtil::LineLoggingQtCategory cat = KDebugSettingsUtil::parseLineLoggingQtCategory(rule);
0059     mCategoryLineEdit->setText(cat.logName);
0060     mEnableCategory->setChecked(cat.enabled);
0061     switch (cat.type) {
0062     case KDebugSettingsUtil::LineLoggingQtCategory::Unknown:
0063         break;
0064     case KDebugSettingsUtil::LineLoggingQtCategory::Info:
0065         mCategoryType->setType(LoggingCategory::Info);
0066         break;
0067     case KDebugSettingsUtil::LineLoggingQtCategory::Warning:
0068         mCategoryType->setType(LoggingCategory::Warning);
0069         break;
0070     case KDebugSettingsUtil::LineLoggingQtCategory::Debug:
0071         mCategoryType->setType(LoggingCategory::Debug);
0072         break;
0073     case KDebugSettingsUtil::LineLoggingQtCategory::Critical:
0074         mCategoryType->setType(LoggingCategory::Critical);
0075         break;
0076     case KDebugSettingsUtil::LineLoggingQtCategory::All:
0077         mCategoryType->setType(LoggingCategory::All);
0078         break;
0079     }
0080 }
0081 
0082 QString ConfigureCustomSettingWidget::rule() const
0083 {
0084     return KDebugSettingsUtil::generateDisplayRule(mCategoryLineEdit->text().trimmed(), mEnableCategory->isChecked(), mCategoryType->type());
0085 }
0086 
0087 #include "moc_configurecustomsettingwidget.cpp"