[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);
}