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

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 "kdeapplicationdebugsettingpage.h"
0009 #include "kdeapplicationtreeview.h"
0010 #include "loggingmanager.h"
0011 #include <KLocalizedString>
0012 #include <QEvent>
0013 #include <QKeyEvent>
0014 #include <QLineEdit>
0015 #include <QPushButton>
0016 #include <QVBoxLayout>
0017 
0018 KDEApplicationDebugSettingPage::KDEApplicationDebugSettingPage(QWidget *parent)
0019     : QWidget(parent)
0020     , mSearchLineEdit(new QLineEdit(this))
0021     , mEnableDebug(new QPushButton(i18n("Enable All Debug"), this))
0022     , mTurnOffDebug(new QPushButton(i18n("Turn Off Debug"), this))
0023     , mTurnOffAllMessages(new QPushButton(i18n("Turn Off All Messages"), this))
0024     , mKdeApplicationTreeView(new KDEApplicationTreeView(this))
0025 {
0026     auto mainLayout = new QVBoxLayout(this);
0027     mainLayout->setObjectName(QLatin1StringView("mainLayout"));
0028 
0029     mSearchLineEdit->setObjectName(QLatin1StringView("mSearchLineEdit"));
0030     mainLayout->addWidget(mSearchLineEdit);
0031     mSearchLineEdit->setPlaceholderText(i18n("Search..."));
0032     mSearchLineEdit->setClearButtonEnabled(true);
0033 
0034     mKdeApplicationTreeView->setObjectName(QLatin1StringView("mKdeApplicationTreeView"));
0035     mainLayout->addWidget(mKdeApplicationTreeView);
0036     mKdeApplicationTreeView->setLoggingCategoryModel(LoggingManager::self().qtKdeCategoryModel());
0037 
0038     auto buttonLayout = new QHBoxLayout;
0039     mainLayout->addLayout(buttonLayout);
0040 
0041     mEnableDebug->setObjectName(QLatin1StringView("selectall"));
0042     buttonLayout->addWidget(mEnableDebug);
0043     connect(mEnableDebug, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotSelectAllDebug);
0044 
0045     mTurnOffDebug->setObjectName(QLatin1StringView("deselectall"));
0046     buttonLayout->addWidget(mTurnOffDebug);
0047     connect(mTurnOffDebug, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotDeselectAllDebug);
0048 
0049     mTurnOffAllMessages->setObjectName(QLatin1StringView("deselectallmessage"));
0050     buttonLayout->addWidget(mTurnOffAllMessages);
0051     connect(mTurnOffAllMessages, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotDeselectAllMessages);
0052 
0053     mSearchLineEdit->installEventFilter(this);
0054     connect(mSearchLineEdit, &QLineEdit::textChanged, mKdeApplicationTreeView, &KDEApplicationTreeView::setFilterRuleStr);
0055 }
0056 
0057 KDEApplicationDebugSettingPage::~KDEApplicationDebugSettingPage() = default;
0058 
0059 void KDEApplicationDebugSettingPage::forceFocus()
0060 {
0061     mSearchLineEdit->setFocus();
0062 }
0063 
0064 bool KDEApplicationDebugSettingPage::eventFilter(QObject *obj, QEvent *event)
0065 {
0066     if (event->type() == QEvent::KeyPress && obj == mSearchLineEdit) {
0067         auto key = static_cast<QKeyEvent *>(event);
0068         if ((key->key() == Qt::Key_Enter) || (key->key() == Qt::Key_Return)) {
0069             event->accept();
0070             return true;
0071         }
0072     }
0073     return QWidget::eventFilter(obj, event);
0074 }
0075 
0076 void KDEApplicationDebugSettingPage::slotSelectAllDebug()
0077 {
0078     mKdeApplicationTreeView->selectAllDebugCategories();
0079 }
0080 
0081 void KDEApplicationDebugSettingPage::slotDeselectAllDebug()
0082 {
0083     mKdeApplicationTreeView->deSelectAllDebugCategories();
0084 }
0085 
0086 void KDEApplicationDebugSettingPage::slotDeselectAllMessages()
0087 {
0088     mKdeApplicationTreeView->deSelectAllMessagesCategories();
0089 }
0090 
0091 LoggingCategory::List KDEApplicationDebugSettingPage::rules(bool forceSavingAllRules) const
0092 {
0093     return mKdeApplicationTreeView->rules(forceSavingAllRules);
0094 }
0095 
0096 void KDEApplicationDebugSettingPage::insertCategories(const LoggingCategory::List &list)
0097 {
0098     mKdeApplicationTreeView->insertCategories(list);
0099 }
0100 
0101 void KDEApplicationDebugSettingPage::restoreToDefault()
0102 {
0103     mKdeApplicationTreeView->restoreToDefault();
0104 }
0105 
0106 #include "moc_kdeapplicationdebugsettingpage.cpp"