aboutsummaryrefslogtreecommitdiff
path: root/qml/ChatlistItem.qml
diff options
context:
space:
mode:
authorMiquel Lionel <lionel@les-miquelots.net>2021-12-29 02:32:40 +0100
committerMiquel Lionel <lionel@les-miquelots.net>2021-12-29 12:28:27 +0100
commita01f8091c01889d7ca90938f56ae176a74da5590 (patch)
treeac9cccff3100f5754e9f09afbef02103f978e790 /qml/ChatlistItem.qml
parent96555dfc65034c46578309f39ae0f754e1acb0f8 (diff)
downloadkdeltachat-a01f8091c01889d7ca90938f56ae176a74da5590.tar.gz
kdeltachat-a01f8091c01889d7ca90938f56ae176a74da5590.zip
Implement notifications + "mute/unmute chat" menu
- Added icons: Pinned and muted chats have icons. It's from Twemoji font, I've added credits in the README.md and source code of ChatlistItem.qml. I prefer to rely on .PNG for this one because icon might not be installed or exist on the system, and we avoid the black box problem. - Modified CMakeLists: added KNotifications as a required library - Modified build.sh: I cannot comprehend how the install(FILES) function from cmake works, so I used good old install from GNU coreutils. It copies usr/ structure and needed files (.desktop and .notifyrc) for KNotifications to work. - Aesthetic changes: context menu is shorter now due to the text being state-aware. You can now also mute a chat so you won't be notified on incoming messages.
Diffstat (limited to 'qml/ChatlistItem.qml')
-rw-r--r--qml/ChatlistItem.qml55
1 files changed, 35 insertions, 20 deletions
diff --git a/qml/ChatlistItem.qml b/qml/ChatlistItem.qml
index 6e37331..f0db86d 100644
--- a/qml/ChatlistItem.qml
+++ b/qml/ChatlistItem.qml
@@ -14,8 +14,10 @@ Kirigami.AbstractListItem {
property string avatarSource
property string username
property int freshMsgCnt
+ property int visibility
property bool isContactRequest
property bool isPinned
+ property bool isMuted
RowLayout {
Kirigami.Avatar {
@@ -34,6 +36,16 @@ Kirigami.AbstractListItem {
Menu {
id: contextMenu
+
+ Action {
+ text: !root.isMuted ? "Mute chat" : "Unmute chat"
+ onTriggered: {
+ if (!root.isMuted)
+ root.context.setChatMuteDuration(root.chatId, -1)
+ else
+ root.context.setChatMuteDuration(root.chatId, 0)
+ }
+ }
Action {
text: "Block chat"
@@ -46,23 +58,13 @@ Kirigami.AbstractListItem {
Action {
icon.name: "pin"
- text: "Pin chat"
- onTriggered: root.context.setChatVisibility(root.chatId, 2)
- }
-
- Action {
- text: "Unpin chat"
- onTriggered: root.context.setChatVisibility(root.chatId, 0)
+ text: !root.isPinned ? "Pin chat" : "Unpin chat"
+ onTriggered: !root.isPinned ? root.context.setChatVisibility(root.chatId, 2) : root.context.setChatVisibility(root.chatId, 0)
}
Action {
- text: "Archive chat"
- onTriggered: root.context.setChatVisibility(root.chatId, 1)
- }
-
- Action {
- text: "Unarchive chat"
- onTriggered: root.context.setChatVisibility(root.chatId, 0)
+ text: root.visibility != 1 ? "Archive chat" : "Unarchive chat"
+ onTriggered: root.visibility != 1 ? root.context.setChatVisibility(root.chatId, 1) : root.context.setChatVisibility(root.chatId, 0)
}
Action {
@@ -111,13 +113,26 @@ Kirigami.AbstractListItem {
}
- // Pinned message badge
- Label {
+ // Twemoji
+ // Copyright 2020 Twitter, Inc and other contributors.
+ // Muted chat badge
+ Image {
+ visible: root.isMuted
+ source: "qrc:/res/muted_48x48.png"
+ sourceSize.width: 24
+ sourceSize.height: 24
+ Layout.bottomMargin: 13
+ }
+
+ // Twemoji
+ // Copyright 2020 Twitter, Inc and other contributors.
+ // Pinned chat badge
+ Image {
visible: root.isPinned
- text: "📌"
- font.pixelSize: 20
- rightPadding: 15
- bottomPadding: 15
+ source: "qrc:/res/pin_48x48.png"
+ sourceSize.width: 24
+ sourceSize.height: 24
+ Layout.bottomMargin: 13
}
}