[utilities/kdebugsettings] src: Add tooltip in KDEApplicationRulesPage

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit a61b90fabe35dde4d8829d3481d5f888453bb0a4 by Laurent Montel.
Committed on 19/07/2026 at 06:23.
Pushed by mlaurent into branch 'master'.

Add tooltip in KDEApplicationRulesPage

M  +5    -0    src/core/autotests/kdeapplicationloggingcategorymodeltest.cpp
M  +5    -0    src/core/model/kdeapplicationloggingcategorymodel.cpp
M  +1    -0    src/core/model/kdeapplicationloggingcategorymodel.h
M  +4    -0    src/quickapps/contents/ui/KDEApplicationRulesPage.qml
M  +1    -0    src/widgets/kdeapplicationtreeview.cpp

https://invent.kde.org/utilities/kdebugsettings/-/commit/a61b90fabe35dde4d8829d3481d5f888453bb0a4

diff --git a/src/core/autotests/kdeapplicationloggingcategorymodeltest.cpp b/src/core/autotests/kdeapplicationloggingcategorymodeltest.cpp
index fb4e738a..fed06ced 100644
--- a/src/core/autotests/kdeapplicationloggingcategorymodeltest.cpp
+++ b/src/core/autotests/kdeapplicationloggingcategorymodeltest.cpp
@@ -36,6 +36,7 @@ void KDEApplicationLoggingCategoryModelTest::shouldExposeUserRolesForQml()
     QCOMPARE(roles.value(qmlRole(KDEApplicationLoggingCategoryModel::LoggingTypeRole)), QByteArray("loggingType"));
     QCOMPARE(roles.value(qmlRole(KDEApplicationLoggingCategoryModel::CategoryRole)), QByteArray("category"));
     QCOMPARE(roles.value(qmlRole(KDEApplicationLoggingCategoryModel::LoggingTypeStrRole)), QByteArray("loggingTypeStr"));
+    QCOMPARE(roles.value(qmlRole(KDEApplicationLoggingCategoryModel::GeneratedToolTipRole)), QByteArray("generatedToolTip"));
 }
 
 void KDEApplicationLoggingCategoryModelTest::shouldReturnExpectedDataForWidgetsAndQml()
@@ -53,6 +54,7 @@ void KDEApplicationLoggingCategoryModelTest::shouldReturnExpectedDataForWidgetsA
     const QModelIndex typeIndex = model.index(0, KDEApplicationLoggingCategoryModel::LoggingTypeRole);
     const QModelIndex categoryIndex = model.index(0, KDEApplicationLoggingCategoryModel::CategoryRole);
     const QModelIndex typeStrIndex = model.index(0, KDEApplicationLoggingCategoryModel::LoggingTypeStrRole);
+    const QModelIndex generatedToolTipIndex = model.index(0, KDEApplicationLoggingCategoryModel::GeneratedToolTipRole);
 
     QCOMPARE(model.data(descriptionIndex, Qt::DisplayRole).toString(), QStringLiteral("desc"));
     QCOMPARE(model.data(typeIndex, Qt::DisplayRole).value<LoggingCategory::LoggingType>(), LoggingCategory::Warning);
@@ -60,6 +62,9 @@ void KDEApplicationLoggingCategoryModelTest::shouldReturnExpectedDataForWidgetsA
     QCOMPARE(model.data(typeStrIndex, Qt::DisplayRole).toString(),
              model.data(descriptionIndex, qmlRole(KDEApplicationLoggingCategoryModel::LoggingTypeStrRole)).toString());
 
+    QCOMPARE(model.data(generatedToolTipIndex, Qt::DisplayRole).toString(),
+             model.data(descriptionIndex, qmlRole(KDEApplicationLoggingCategoryModel::GeneratedToolTipRole)).toString());
+
     // QML uses role-based lookup on any column index.
     QCOMPARE(model.data(descriptionIndex, qmlRole(KDEApplicationLoggingCategoryModel::DescriptionRole)).toString(), QStringLiteral("desc"));
     QCOMPARE(model.data(descriptionIndex, qmlRole(KDEApplicationLoggingCategoryModel::LoggingTypeRole)).value<LoggingCategory::LoggingType>(),
diff --git a/src/core/model/kdeapplicationloggingcategorymodel.cpp b/src/core/model/kdeapplicationloggingcategorymodel.cpp
index 5158ccce..c6a9e0cd 100644
--- a/src/core/model/kdeapplicationloggingcategorymodel.cpp
+++ b/src/core/model/kdeapplicationloggingcategorymodel.cpp
@@ -24,6 +24,7 @@ KDEApplicationLoggingCategoryModel::KDEApplicationLoggingCategoryModel(QObject *
     mRoleNames.insert(qmlRole(LoggingTypeRole), "loggingType");
     mRoleNames.insert(qmlRole(CategoryRole), "category");
     mRoleNames.insert(qmlRole(LoggingTypeStrRole), "loggingTypeStr");
+    mRoleNames.insert(qmlRole(GeneratedToolTipRole), "generatedToolTip");
 }
 
 KDEApplicationLoggingCategoryModel::~KDEApplicationLoggingCategoryModel() = default;
@@ -122,6 +123,8 @@ QVariant KDEApplicationLoggingCategoryModel::data(const QModelIndex &index, int
             return KDebugSettingsUtil::convertCategoryTypeToString(category.loggingType);
         case LoggingTypeRole:
             return category.loggingType;
+        case GeneratedToolTipRole:
+            return category.generateToolTip();
         case CategoryRole:
             return QVariant::fromValue(category);
         }
@@ -138,6 +141,8 @@ QVariant KDEApplicationLoggingCategoryModel::data(const QModelIndex &index, int
         return category.loggingType;
     case qmlRole(CategoryRole):
         return QVariant::fromValue(category);
+    case qmlRole(GeneratedToolTipRole):
+        return category.generateToolTip();
     }
     return {};
 }
diff --git a/src/core/model/kdeapplicationloggingcategorymodel.h b/src/core/model/kdeapplicationloggingcategorymodel.h
index f6f77fd2..224309cc 100644
--- a/src/core/model/kdeapplicationloggingcategorymodel.h
+++ b/src/core/model/kdeapplicationloggingcategorymodel.h
@@ -17,6 +17,7 @@ public:
         DescriptionRole,
         LoggingTypeRole,
         CategoryRole,
+        GeneratedToolTipRole,
         LoggingTypeStrRole,
         LastColumn = LoggingTypeStrRole,
     };
diff --git a/src/quickapps/contents/ui/KDEApplicationRulesPage.qml b/src/quickapps/contents/ui/KDEApplicationRulesPage.qml
index 224c59eb..e1744c8f 100644
--- a/src/quickapps/contents/ui/KDEApplicationRulesPage.qml
+++ b/src/quickapps/contents/ui/KDEApplicationRulesPage.qml
@@ -40,6 +40,9 @@ Kirigami.ScrollablePage {
                     Layout.leftMargin: 4
                     Layout.alignment: Qt.AlignLeft
                     text: model.description
+
+                    QQC2.ToolTip.visible: hovered
+                    QQC2.ToolTip.text: model.generatedToolTip
                 }
                 Item {
                     Layout.fillWidth: true
@@ -56,6 +59,7 @@ Kirigami.ScrollablePage {
                     }
                     textRole: "display"
                     valueRole: "categoryType"
+
                     // Re-evaluate once the ComboBox model is populated on startup.
                     currentIndex: count > 0 ? indexOfValue(loggingType) : -1
                     onActivated: () => {
diff --git a/src/widgets/kdeapplicationtreeview.cpp b/src/widgets/kdeapplicationtreeview.cpp
index b1dc942c..3da2af8b 100644
--- a/src/widgets/kdeapplicationtreeview.cpp
+++ b/src/widgets/kdeapplicationtreeview.cpp
@@ -37,6 +37,7 @@ void KDEApplicationTreeView::setLoggingCategoryModel(KDEApplicationLoggingCatego
     // Hide column when we have model.
     hideColumn(KDEApplicationLoggingCategoryModel::LoggingTypeRole);
     hideColumn(KDEApplicationLoggingCategoryModel::CategoryRole);
+    hideColumn(KDEApplicationLoggingCategoryModel::GeneratedToolTipRole);
     setItemDelegateForColumn(KDEApplicationLoggingCategoryModel::LoggingTypeStrRole, new KDEApplicationListViewDelegate(this));
     resizeColumnToContents(KDEApplicationLoggingCategoryModel::DescriptionRole);
 }
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.