1 /*
2     SPDX-FileCopyrightText: 2015-2021 Laurent Montel <montel@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 
6 */
7 
8 #include "kdeapplicationdebugsettingpage.h"
9 #include "kdeapplicationtreelistwidget.h"
10 #include <KLocalizedString>
11 #include <KTreeWidgetSearchLine>
12 #include <QEvent>
13 #include <QKeyEvent>
14 #include <QPushButton>
15 #include <QVBoxLayout>
16 
KDEApplicationDebugSettingPage(QWidget * parent)17 KDEApplicationDebugSettingPage::KDEApplicationDebugSettingPage(QWidget *parent)
18     : QWidget(parent)
19     , mTreeListWidget(new KDEApplicationTreeListWidget(this))
20     , mTreeListWidgetSearchLine(new KTreeWidgetSearchLine(this, mTreeListWidget))
21     , mEnableDebug(new QPushButton(i18n("Enable All Debug"), this))
22     , mTurnOffDebug(new QPushButton(i18n("Turn Off Debug"), this))
23     , mTurnOffAllMessages(new QPushButton(i18n("Turn Off All Messages"), this))
24 {
25     auto mainLayout = new QVBoxLayout(this);
26 
27     mTreeListWidget->setObjectName(QStringLiteral("listwidget"));
28 
29     mTreeListWidgetSearchLine->setPlaceholderText(i18n("Search..."));
30     mTreeListWidgetSearchLine->setObjectName(QStringLiteral("searchline"));
31     mTreeListWidgetSearchLine->setSearchColumns(mTreeListWidget->searchColumns());
32     mainLayout->addWidget(mTreeListWidgetSearchLine);
33 
34     mainLayout->addWidget(mTreeListWidget);
35 
36     auto buttonLayout = new QHBoxLayout;
37     mainLayout->addLayout(buttonLayout);
38 
39     mEnableDebug->setObjectName(QStringLiteral("selectall"));
40     buttonLayout->addWidget(mEnableDebug);
41     connect(mEnableDebug, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotSelectAllDebug);
42 
43     mTurnOffDebug->setObjectName(QStringLiteral("deselectall"));
44     buttonLayout->addWidget(mTurnOffDebug);
45     connect(mTurnOffDebug, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotDeselectAllDebug);
46 
47     mTurnOffAllMessages->setObjectName(QStringLiteral("deselectallmessage"));
48     buttonLayout->addWidget(mTurnOffAllMessages);
49     connect(mTurnOffAllMessages, &QAbstractButton::clicked, this, &KDEApplicationDebugSettingPage::slotDeselectAllMessages);
50 
51     mTreeListWidgetSearchLine->installEventFilter(this);
52 }
53 
~KDEApplicationDebugSettingPage()54 KDEApplicationDebugSettingPage::~KDEApplicationDebugSettingPage()
55 {
56 }
57 
forceFocus()58 void KDEApplicationDebugSettingPage::forceFocus()
59 {
60     mTreeListWidgetSearchLine->setFocus();
61 }
62 
eventFilter(QObject * obj,QEvent * event)63 bool KDEApplicationDebugSettingPage::eventFilter(QObject *obj, QEvent *event)
64 {
65     if (event->type() == QEvent::KeyPress && obj == mTreeListWidgetSearchLine) {
66         auto key = static_cast<QKeyEvent *>(event);
67         if ((key->key() == Qt::Key_Enter) || (key->key() == Qt::Key_Return)) {
68             event->accept();
69             return true;
70         }
71     }
72     return QWidget::eventFilter(obj, event);
73 }
74 
slotSelectAllDebug()75 void KDEApplicationDebugSettingPage::slotSelectAllDebug()
76 {
77     mTreeListWidget->selectAllDebugCategories();
78 }
79 
slotDeselectAllDebug()80 void KDEApplicationDebugSettingPage::slotDeselectAllDebug()
81 {
82     mTreeListWidget->deSelectAllDebugCategories();
83 }
84 
slotDeselectAllMessages()85 void KDEApplicationDebugSettingPage::slotDeselectAllMessages()
86 {
87     mTreeListWidget->deSelectAllMessagesCategories();
88 }
89 
fillList(const LoggingCategory::List & list)90 void KDEApplicationDebugSettingPage::fillList(const LoggingCategory::List &list)
91 {
92     mTreeListWidget->fillList(list);
93 }
94 
rules(bool forceSavingAllRules) const95 LoggingCategory::List KDEApplicationDebugSettingPage::rules(bool forceSavingAllRules) const
96 {
97     return mTreeListWidget->rules(forceSavingAllRules);
98 }
99 
insertCategories(const LoggingCategory::List & list)100 void KDEApplicationDebugSettingPage::insertCategories(const LoggingCategory::List &list)
101 {
102     mTreeListWidget->insertCategories(list);
103 }
104 
restoreToDefault()105 void KDEApplicationDebugSettingPage::restoreToDefault()
106 {
107     mTreeListWidget->restoreToDefault();
108 }
109