[utilities/kdebugsettings] src: Prepare to move proxymodel to loggingmanager

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 7b4aa17fd3423d8f4a89d242a81be8dbb695f3ac by Laurent Montel.
Committed on 18/07/2026 at 16:03.
Pushed by mlaurent into branch 'master'.

Prepare to move proxymodel to loggingmanager

M  +7    -6    src/core/loggingmanager.cpp
M  +5    -0    src/core/loggingmanager.h
M  +16   -0    src/core/model/kdeapplicationloggingcategoryproxymodel.cpp
M  +3    -0    src/core/model/kdeapplicationloggingcategoryproxymodel.h
M  +1    -1    src/widgets/autotests/kdeapplicationtreeviewtest.cpp
M  +1    -1    src/widgets/kdeapplicationdebugsettingpage.cpp
M  +3    -15   src/widgets/kdeapplicationtreeview.cpp
M  +1    -1    src/widgets/kdeapplicationtreeview.h
M  +2    -1    src/widgets/tests/kdeapplicationtreeviewgui.cpp

https://invent.kde.org/utilities/kdebugsettings/-/commit/7b4aa17fd3423d8f4a89d242a81be8dbb695f3ac

diff --git a/src/core/loggingmanager.cpp b/src/core/loggingmanager.cpp
index bf6546f4..94d51e0a 100644
--- a/src/core/loggingmanager.cpp
+++ b/src/core/loggingmanager.cpp
@@ -13,11 +13,17 @@ LoggingManager::LoggingManager(QObject *parent)
     , mCustomCategoryModel(new CustomLoggingCategoryModel(this))
     , mQtKdeCategoryModel(new KDEApplicationLoggingCategoryModel(this))
     , mCategoryTypeModel(new CategoryTypeModel(this))
+    , mKdeApplicationLoggingCategoryProxyModel(new KDEApplicationLoggingCategoryProxyModel(this))
 {
     mLoggings.readQtLoggingFile();
     updateLoggingCategories();
 }
 
+KDEApplicationLoggingCategoryProxyModel *LoggingManager::kdeApplicationLoggingCategoryProxyModel() const
+{
+    return mKdeApplicationLoggingCategoryProxyModel;
+}
+
 LoggingManager &LoggingManager::self()
 {
     static LoggingManager c;
@@ -61,19 +67,14 @@ void LoggingManager::updateLoggingCategories()
 
 bool LoggingManager::saveRules(const QString &path, bool forceSavingAllRules)
 {
-#if 0 /// TODO
     SaveRulesJob job;
     job.setFileName(path);
     job.setListCustom(customCategoryModel()->loggingCategories());
-    job.setListKde(mKdeApplicationSettingsPage->rules(forceSavingAllRules));
+    job.setListKde(kdeApplicationLoggingCategoryProxyModel()->rules(forceSavingAllRules));
     if (!job.start()) {
-        KMessageBox::error(this, i18n("\'%1\' cannot be opened. Please verify it.", path));
         return false;
     }
     return true;
-#endif
-    // TODO
-    return false;
 }
 
 KDebugSettingsLoadingCategories LoggingManager::loggings() const
diff --git a/src/core/loggingmanager.h b/src/core/loggingmanager.h
index 39435f4f..04cd3c74 100644
--- a/src/core/loggingmanager.h
+++ b/src/core/loggingmanager.h
@@ -10,12 +10,14 @@
 #include "model/categorytypemodel.h"
 #include "model/customloggingcategorymodel.h"
 #include "model/kdeapplicationloggingcategorymodel.h"
+#include "model/kdeapplicationloggingcategoryproxymodel.h"
 #include <QObject>
 class LIBKDEBUGSETTINGSCORE_EXPORT LoggingManager : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(CustomLoggingCategoryModel *customCategoryModel READ customCategoryModel CONSTANT)
     Q_PROPERTY(KDEApplicationLoggingCategoryModel *qtKdeCategoryModel READ qtKdeCategoryModel CONSTANT)
+    Q_PROPERTY(KDEApplicationLoggingCategoryProxyModel *kdeApplicationLoggingCategoryProxyModel READ kdeApplicationLoggingCategoryProxyModel CONSTANT)
     Q_PROPERTY(CategoryTypeModel *categoryTypeModel READ categoryTypeModel CONSTANT)
     Q_PROPERTY(bool foundOverrideRule READ foundOverrideRule CONSTANT)
 
@@ -46,10 +48,13 @@ public:
 
     [[nodiscard]] bool saveRules(const QString &path, bool forceSavingAllRules);
 
+    [[nodiscard]] KDEApplicationLoggingCategoryProxyModel *kdeApplicationLoggingCategoryProxyModel() const;
+
 private:
     LIBKDEBUGSETTINGSCORE_NO_EXPORT explicit LoggingManager(QObject *parent = nullptr);
     CustomLoggingCategoryModel *const mCustomCategoryModel;
     KDEApplicationLoggingCategoryModel *const mQtKdeCategoryModel;
     CategoryTypeModel *const mCategoryTypeModel;
+    KDEApplicationLoggingCategoryProxyModel *const mKdeApplicationLoggingCategoryProxyModel;
     KDebugSettingsLoadingCategories mLoggings;
 };
diff --git a/src/core/model/kdeapplicationloggingcategoryproxymodel.cpp b/src/core/model/kdeapplicationloggingcategoryproxymodel.cpp
index 2854001e..1b4da367 100644
--- a/src/core/model/kdeapplicationloggingcategoryproxymodel.cpp
+++ b/src/core/model/kdeapplicationloggingcategoryproxymodel.cpp
@@ -62,4 +62,20 @@ void KDEApplicationLoggingCategoryProxyModel::setFilterText(const QString &newFi
     }
 }
 
+LoggingCategory::List KDEApplicationLoggingCategoryProxyModel::rules(bool forceSavingAllRules) const
+{
+    LoggingCategory::List lst;
+    for (int i = 0; i < rowCount(); ++i) {
+        const QModelIndex newModelIndex = mapToSource(index(i, KDEApplicationLoggingCategoryModel::CategoryRole));
+        auto cat = newModelIndex.data().value<LoggingCategory>();
+        if (forceSavingAllRules || (cat.loggingType != cat.defaultSeverityType)) {
+            cat.enabled = false;
+            if (cat.isValid()) {
+                lst.append(cat);
+            }
+        }
+    }
+    return lst;
+}
+
 #include "moc_kdeapplicationloggingcategoryproxymodel.cpp"
diff --git a/src/core/model/kdeapplicationloggingcategoryproxymodel.h b/src/core/model/kdeapplicationloggingcategoryproxymodel.h
index 6f1933cc..10f6a89f 100644
--- a/src/core/model/kdeapplicationloggingcategoryproxymodel.h
+++ b/src/core/model/kdeapplicationloggingcategoryproxymodel.h
@@ -5,6 +5,7 @@
 */
 #pragma once
 #include "libkdebugsettingscore_export.h"
+#include "loggingcategory.h"
 #include <QSortFilterProxyModel>
 
 class LIBKDEBUGSETTINGSCORE_EXPORT KDEApplicationLoggingCategoryProxyModel : public QSortFilterProxyModel
@@ -20,6 +21,8 @@ public:
     [[nodiscard]] QString filterText() const;
     void setFilterText(const QString &newFilterText);
 
+    [[nodiscard]] LoggingCategory::List rules(bool forceSavingAllRules) const;
+
 protected:
     [[nodiscard]] bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
 
diff --git a/src/widgets/autotests/kdeapplicationtreeviewtest.cpp b/src/widgets/autotests/kdeapplicationtreeviewtest.cpp
index bb8e160a..ce7d289c 100644
--- a/src/widgets/autotests/kdeapplicationtreeviewtest.cpp
+++ b/src/widgets/autotests/kdeapplicationtreeviewtest.cpp
@@ -16,7 +16,7 @@ KDEApplicationTreeViewTest::KDEApplicationTreeViewTest(QObject *parent)
 
 void KDEApplicationTreeViewTest::shouldHaveDefaultValues()
 {
-    KDEApplicationTreeView w;
+    KDEApplicationTreeView w(nullptr);
     // TODO
 }
 
diff --git a/src/widgets/kdeapplicationdebugsettingpage.cpp b/src/widgets/kdeapplicationdebugsettingpage.cpp
index 44a76927..3e3c4ef0 100644
--- a/src/widgets/kdeapplicationdebugsettingpage.cpp
+++ b/src/widgets/kdeapplicationdebugsettingpage.cpp
@@ -23,7 +23,7 @@ KDEApplicationDebugSettingPage::KDEApplicationDebugSettingPage(QWidget *parent)
     , mEnableDebug(new QPushButton(i18nc("@action:button", "Enable All Debug"), this))
     , mTurnOffDebug(new QPushButton(i18nc("@action:button", "Turn Off Debug"), this))
     , mTurnOffAllMessages(new QPushButton(i18nc("@action:button", "Turn Off All Messages"), this))
-    , mKdeApplicationTreeView(new KDEApplicationTreeView(this))
+    , mKdeApplicationTreeView(new KDEApplicationTreeView(LoggingManager::self().kdeApplicationLoggingCategoryProxyModel(), this))
 {
     auto mainLayout = new QVBoxLayout(this);
     mainLayout->setObjectName("mainLayout"_L1);
diff --git a/src/widgets/kdeapplicationtreeview.cpp b/src/widgets/kdeapplicationtreeview.cpp
index f46c3010..b1dc942c 100644
--- a/src/widgets/kdeapplicationtreeview.cpp
+++ b/src/widgets/kdeapplicationtreeview.cpp
@@ -12,9 +12,9 @@
 #include <QHeaderView>
 
 using namespace Qt::Literals::StringLiterals;
-KDEApplicationTreeView::KDEApplicationTreeView(QWidget *parent)
+KDEApplicationTreeView::KDEApplicationTreeView(KDEApplicationLoggingCategoryProxyModel *proxyModel, QWidget *parent)
     : QTreeView(parent)
-    , mKdeApplicationLoggingCategoryProxyModel(new KDEApplicationLoggingCategoryProxyModel(this))
+    , mKdeApplicationLoggingCategoryProxyModel(proxyModel)
 {
     header()->hide();
     setRootIsDecorated(false);
@@ -113,19 +113,7 @@ void KDEApplicationTreeView::restoreToDefault()
 
 LoggingCategory::List KDEApplicationTreeView::rules(bool forceSavingAllRules) const
 {
-    LoggingCategory::List lst;
-    for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) {
-        const QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource(
-            mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole));
-        auto cat = index.data().value<LoggingCategory>();
-        if (forceSavingAllRules || (cat.loggingType != cat.defaultSeverityType)) {
-            cat.enabled = false;
-            if (cat.isValid()) {
-                lst.append(cat);
-            }
-        }
-    }
-    return lst;
+    return mKdeApplicationLoggingCategoryProxyModel->rules(forceSavingAllRules);
 }
 
 #include "moc_kdeapplicationtreeview.cpp"
diff --git a/src/widgets/kdeapplicationtreeview.h b/src/widgets/kdeapplicationtreeview.h
index 9e25af17..db8d3a4c 100644
--- a/src/widgets/kdeapplicationtreeview.h
+++ b/src/widgets/kdeapplicationtreeview.h
@@ -15,7 +15,7 @@ class LIBKDEBUGSETTINGS_EXPORT_TEST_EXPORT KDEApplicationTreeView : public QTree
 {
     Q_OBJECT
 public:
-    explicit KDEApplicationTreeView(QWidget *parent = nullptr);
+    explicit KDEApplicationTreeView(KDEApplicationLoggingCategoryProxyModel *proxyModel, QWidget *parent = nullptr);
     ~KDEApplicationTreeView() override;
 
     void setLoggingCategoryModel(KDEApplicationLoggingCategoryModel *newLoggingCategoryModel);
diff --git a/src/widgets/tests/kdeapplicationtreeviewgui.cpp b/src/widgets/tests/kdeapplicationtreeviewgui.cpp
index c38bca84..d47d0a33 100644
--- a/src/widgets/tests/kdeapplicationtreeviewgui.cpp
+++ b/src/widgets/tests/kdeapplicationtreeviewgui.cpp
@@ -6,6 +6,7 @@
 */
 
 #include "kdeapplicationtreeviewgui.h"
+#include "model/kdeapplicationloggingcategoryproxymodel.h"
 using namespace Qt::Literals::StringLiterals;
 
 #include "kdeapplicationtreeview.h"
@@ -18,7 +19,7 @@ KDEApplicationTreeViewGui::KDEApplicationTreeViewGui(QWidget *parent)
     : QWidget{parent}
 {
     auto vboxLayout = new QVBoxLayout(this);
-    auto view = new KDEApplicationTreeView(this);
+    auto view = new KDEApplicationTreeView(new KDEApplicationLoggingCategoryProxyModel(this), this);
 
     LoggingCategory::List lst;
     for (int i = 0; i < 5; ++i) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.