From 05250a6eaba5de79786910d103714e174dca0bcd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Iskierko?=
<61889657+endulab@users.noreply.github.com>
Date: Tue, 12 Jul 2022 11:05:12 +0200
Subject: [PATCH] feat(StatusFontSettings): Add StatusFontSettings component to
change StatusMenuItems font attributes (#749)
Required by #6090
---
doc/src/statusqcore.qdoc | 1 +
sandbox/pages/StatusPopupMenuPage.qml | 23 +++++++++++++++++++
src/StatusQ/Core/StatusFontSettings.qml | 10 ++++++++
src/StatusQ/Core/qmldir | 1 +
src/StatusQ/Popups/StatusMenuItem.qml | 2 ++
src/StatusQ/Popups/StatusMenuItemDelegate.qml | 7 +++---
statusq.qrc | 1 +
7 files changed, 42 insertions(+), 3 deletions(-)
create mode 100644 src/StatusQ/Core/StatusFontSettings.qml
diff --git a/doc/src/statusqcore.qdoc b/doc/src/statusqcore.qdoc
index 0c90f020..d7ecaa1d 100644
--- a/doc/src/statusqcore.qdoc
+++ b/doc/src/statusqcore.qdoc
@@ -12,6 +12,7 @@
\list
\li \l{StatusAppNavBarFilterModel}
\li \l{StatusBaseText}
+ \li \l{StatusFontSettings}
\li \l{StatusIcon}
\li \l{StatusIconBackgroundSettings}
\li \l{StatusIconSettings}
diff --git a/sandbox/pages/StatusPopupMenuPage.qml b/sandbox/pages/StatusPopupMenuPage.qml
index dda229fa..8ddf7ebd 100644
--- a/sandbox/pages/StatusPopupMenuPage.qml
+++ b/sandbox/pages/StatusPopupMenuPage.qml
@@ -28,6 +28,11 @@ GridLayout {
onClicked: customMenu.popup()
}
+ StatusButton {
+ text: "Menu with custom font settings"
+ onClicked: differentFontMenu.popup()
+ }
+
StatusPopupMenu {
id: simpleMenu
@@ -147,4 +152,22 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
}
}
}
+
+ StatusPopupMenu {
+ id: differentFontMenu
+ StatusMenuItem {
+ text: "Bold"
+ fontSettings.bold: true
+ }
+
+ StatusMenuItem {
+ text: "Italic"
+ fontSettings.italic: true
+ }
+
+ StatusMenuItem {
+ text: "16px"
+ fontSettings.pixelSize: 16
+ }
+ }
}
diff --git a/src/StatusQ/Core/StatusFontSettings.qml b/src/StatusQ/Core/StatusFontSettings.qml
new file mode 100644
index 00000000..1d05394d
--- /dev/null
+++ b/src/StatusQ/Core/StatusFontSettings.qml
@@ -0,0 +1,10 @@
+import QtQuick 2.13
+
+QtObject {
+ id: statusFontSettings
+
+ property bool bold: false
+ property bool italic: false
+ property int pixelSize: 13
+}
+
diff --git a/src/StatusQ/Core/qmldir b/src/StatusQ/Core/qmldir
index 966c811e..e0da87df 100644
--- a/src/StatusQ/Core/qmldir
+++ b/src/StatusQ/Core/qmldir
@@ -1,6 +1,7 @@
module StatusQ.Core
StatusBaseText 0.1 StatusBaseText.qml
+StatusFontSettings 0.1 StatusFontSettings.qml
StatusIcon 0.1 StatusIcon.qml
StatusIconSettings 0.1 StatusIconSettings.qml
StatusIconBackgroundSettings 0.1 StatusIconBackgroundSettings.qml
diff --git a/src/StatusQ/Popups/StatusMenuItem.qml b/src/StatusQ/Popups/StatusMenuItem.qml
index 7e3b0c88..5c4c1036 100644
--- a/src/StatusQ/Popups/StatusMenuItem.qml
+++ b/src/StatusQ/Popups/StatusMenuItem.qml
@@ -22,4 +22,6 @@ Action {
background: StatusIconBackgroundSettings {}
color: "transparent"
}
+
+ property StatusFontSettings fontSettings: StatusFontSettings {}
}
diff --git a/src/StatusQ/Popups/StatusMenuItemDelegate.qml b/src/StatusQ/Popups/StatusMenuItemDelegate.qml
index 9b6eecdd..dbac9edf 100644
--- a/src/StatusQ/Popups/StatusMenuItemDelegate.qml
+++ b/src/StatusQ/Popups/StatusMenuItemDelegate.qml
@@ -53,14 +53,13 @@ MenuItem {
color: {
let c = !!statusPopupMenuItem.action.iconSettings && statusPopupMenuItem.action.iconSettings.color ||
!!statusPopupMenuItem.action && statusPopupMenuItem.action.icon.color
-
+
if (!Qt.colorEqual(c, "transparent")) {
return c
}
switch (statusPopupMenuItem.action.type) {
case StatusMenuItem.Type.Danger:
return Theme.palette.dangerColor1
- break;
default:
return Theme.palette.primaryColor1
}
@@ -158,7 +157,9 @@ MenuItem {
return Theme.palette.directColor1
}
}
- font.pixelSize: 13
+ font.pixelSize: !!statusPopupMenuItem.action.fontSettings ? statusPopupMenuItem.action.fontSettings.pixelSize : 13
+ font.bold: !!statusPopupMenuItem.action.fontSettings ? statusPopupMenuItem.action.fontSettings.bold : false
+ font.italic: !!statusPopupMenuItem.action.fontSettings ? statusPopupMenuItem.action.fontSettings.italic : false
elide: Text.ElideRight
visible: statusPopupMenuItem.action.enabled
}
diff --git a/statusq.qrc b/statusq.qrc
index d85db052..c279c975 100644
--- a/statusq.qrc
+++ b/statusq.qrc
@@ -102,6 +102,7 @@
src/StatusQ/Core/StatusBaseText.qml
src/StatusQ/Core/StatusIcon.qml
src/StatusQ/Core/StatusIconBackgroundSettings.qml
+ src/StatusQ/Core/StatusFontSettings.qml
src/StatusQ/Core/StatusIconSettings.qml
src/StatusQ/Core/StatusIdenticonRingSettings.qml
src/StatusQ/Core/StatusImageSettings.qml