From f241703784d59483a68e17ecdd4d6a1045060a7c Mon Sep 17 00:00:00 2001 From: Slava Monich Date: Thu, 7 Dec 2023 02:40:59 +0200 Subject: [PATCH 01/12] Make the reaction button configurable --- harbour-fernschreiber.pro | 1 + qml/components/MessageListViewItem.qml | 48 ++++++++----------- qml/components/ReactionButton.qml | 19 ++++++++ .../settingsPage/SettingsBehavior.qml | 27 +++++++++++ src/appsettings.cpp | 15 ++++++ src/appsettings.h | 15 ++++-- 6 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 qml/components/ReactionButton.qml diff --git a/harbour-fernschreiber.pro b/harbour-fernschreiber.pro index 79af618..52e212c 100644 --- a/harbour-fernschreiber.pro +++ b/harbour-fernschreiber.pro @@ -64,6 +64,7 @@ DISTFILES += qml/harbour-fernschreiber.qml \ qml/components/PollPreview.qml \ qml/components/PressEffect.qml \ qml/components/ProfilePictureList.qml \ + qml/components/ReactionButton.qml \ qml/components/ReplyMarkupButtons.qml \ qml/components/StickerPicker.qml \ qml/components/PhotoTextsListItem.qml \ diff --git a/qml/components/MessageListViewItem.qml b/qml/components/MessageListViewItem.qml index a0cf5d8..d01e530 100644 --- a/qml/components/MessageListViewItem.qml +++ b/qml/components/MessageListViewItem.qml @@ -126,7 +126,7 @@ ListItem { Debug.log("Obtaining message reactions") tdLibWrapper.getMessageAvailableReactions(messageListItem.chatId, messageListItem.messageId); } - selectReactionBubble.visible = false; + selectReactionBubble.enabled = false; } function getContentWidthMultiplier() { @@ -150,9 +150,13 @@ ListItem { if (messageListItem.messageReactions) { messageListItem.messageReactions = null; - selectReactionBubble.visible = false; + selectReactionBubble.enabled = false; } else { - selectReactionBubble.visible = !selectReactionBubble.visible; + if (selectReactionBubble.enabled) { + selectReactionBubble.enabled = false + } else if (appSettings.showReactionButton) { + selectReactionBubble.enabled = true + } elementSelected(index); } } @@ -189,11 +193,11 @@ ListItem { target: chatPage onResetElements: { messageListItem.messageReactions = null; - selectReactionBubble.visible = false; + selectReactionBubble.enabled = false; } onElementSelected: { if (elementIndex !== index) { - selectReactionBubble.visible = false; + selectReactionBubble.enabled = false; } } onNavigatedTo: { @@ -716,7 +720,7 @@ ListItem { onClicked: { if (messageListItem.messageReactions) { messageListItem.messageReactions = null; - selectReactionBubble.visible = false; + selectReactionBubble.enabled = false; } else { openReactions(); } @@ -728,35 +732,23 @@ ListItem { } - Rectangle { + Loader { id: selectReactionBubble - visible: false - opacity: visible ? 0.5 : 0.0 - Behavior on opacity { NumberAnimation {} } anchors { horizontalCenter: messageListItem.isOwnMessage ? messageBackground.left : messageBackground.right verticalCenter: messageBackground.verticalCenter } - height: Theme.itemSizeExtraSmall - width: Theme.itemSizeExtraSmall - color: Theme.primaryColor - radius: parent.width / 2 - } - - IconButton { - id: selectReactionButton - visible: selectReactionBubble.visible - opacity: visible ? 1.0 : 0.0 - Behavior on opacity { NumberAnimation {} } - icon.source: "image://theme/icon-s-favorite" - anchors.centerIn: selectReactionBubble - onClicked: { - openReactions(); + enabled: false + opacity: enabled ? 1 : 0 + active: opacity > 0 + Behavior on opacity { FadeAnimation {} } + sourceComponent: Component { + ReactionButton { + onClicked: openReactions() + } } } - } - } Column { @@ -818,7 +810,7 @@ ListItem { // Reaction is not yet selected tdLibWrapper.addMessageReaction(chatId, messageId, modelData) messageReactions = null - selectReactionBubble.visible = false + selectReactionBubble.enabled = false } } } diff --git a/qml/components/ReactionButton.qml b/qml/components/ReactionButton.qml new file mode 100644 index 0000000..06bc908 --- /dev/null +++ b/qml/components/ReactionButton.qml @@ -0,0 +1,19 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 + +Rectangle { + id: button + + height: Theme.itemSizeExtraSmall + width: Theme.itemSizeExtraSmall + color: Theme.rgba(Theme.primaryColor, 0.4) + radius: width / 2 + + signal clicked() + + IconButton { + icon.source: "image://theme/icon-s-favorite" + anchors.centerIn: parent + onClicked: button.clicked() + } +} diff --git a/qml/components/settingsPage/SettingsBehavior.qml b/qml/components/settingsPage/SettingsBehavior.qml index 2232791..b32a60c 100644 --- a/qml/components/settingsPage/SettingsBehavior.qml +++ b/qml/components/settingsPage/SettingsBehavior.qml @@ -21,6 +21,8 @@ import QtQuick 2.6 import Sailfish.Silica 1.0 import WerkWolf.Fernschreiber 1.0 +import ".." + AccordionItem { text: qsTr("Behavior") Component { @@ -114,6 +116,31 @@ AccordionItem { } } + TextSwitch { + width: parent.columnWidth + checked: appSettings.showReactionButton + text: qsTr("Show reaction button on tap") + description: qsTr("The reaction button may appear when you tap the message bubble, to make access to the reactions even easier.") + automaticCheck: false + onClicked: { + appSettings.showReactionButton = !checked + } + + ReactionButton { + Behavior on opacity { FadeAnimation {} } + opacity: appSettings.showReactionButton ? 1 : 0 + visible: opacity > 0 + anchors { + right: parent.right + rightMargin: parent.rightMargin + verticalCenter: parent.verticalCenter + } + onClicked: { + appSettings.showReactionButton = !parent.checked + } + } + } + ComboBox { id: feedbackComboBox width: parent.columnWidth diff --git a/src/appsettings.cpp b/src/appsettings.cpp index 6df3f38..3e04134 100644 --- a/src/appsettings.cpp +++ b/src/appsettings.cpp @@ -42,6 +42,7 @@ namespace { const QString KEY_FOCUS_TEXTAREA_ON_CHAT_OPEN("focusTextAreaOnChatOpen"); const QString KEY_SPONSORED_MESS("sponsoredMess"); const QString KEY_HIGHLIGHT_UNREADCONVS("highlightUnreadConversations"); + const QString KEY_SHOW_REACTION_BUTTON("showReactionButton"); } AppSettings::AppSettings(QObject *parent) : QObject(parent), settings(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/de.ygriega/fernschreiber/settings.conf", QSettings::NativeFormat) @@ -329,6 +330,20 @@ void AppSettings::setFocusTextAreaOnChatOpen(bool focusTextAreaOnChatOpen) } } +bool AppSettings::showReactionButton() const +{ + return settings.value(KEY_SHOW_REACTION_BUTTON, true).toBool(); +} + +void AppSettings::setShowReactionButton(bool enable) +{ + if (showReactionButton() != enable) { + LOG(KEY_SHOW_REACTION_BUTTON << enable); + settings.setValue(KEY_SHOW_REACTION_BUTTON, enable); + emit showReactionButtonChanged(); + } +} + AppSettings::SponsoredMess AppSettings::getSponsoredMess() const { return (SponsoredMess) settings.value(KEY_SPONSORED_MESS, (int) diff --git a/src/appsettings.h b/src/appsettings.h index acc38b2..9382fee 100644 --- a/src/appsettings.h +++ b/src/appsettings.h @@ -43,8 +43,9 @@ class AppSettings : public QObject { Q_PROPERTY(bool onlineOnlyMode READ onlineOnlyMode WRITE setOnlineOnlyMode NOTIFY onlineOnlyModeChanged) Q_PROPERTY(bool delayMessageRead READ delayMessageRead WRITE setDelayMessageRead NOTIFY delayMessageReadChanged) Q_PROPERTY(bool focusTextAreaOnChatOpen READ getFocusTextAreaOnChatOpen WRITE setFocusTextAreaOnChatOpen NOTIFY focusTextAreaOnChatOpenChanged) - Q_PROPERTY(SponsoredMess sponsoredMess READ getSponsoredMess WRITE setSponsoredMess NOTIFY sponsoredMessChanged) Q_PROPERTY(bool highlightUnreadConversations READ highlightUnreadConversations WRITE setHighlightUnreadConversations NOTIFY highlightUnreadConversationsChanged) + Q_PROPERTY(bool showReactionButton READ showReactionButton WRITE setShowReactionButton NOTIFY showReactionButtonChanged) + Q_PROPERTY(SponsoredMess sponsoredMess READ getSponsoredMess WRITE setSponsoredMess NOTIFY sponsoredMessChanged) public: enum SponsoredMess { @@ -121,12 +122,15 @@ public: bool getFocusTextAreaOnChatOpen() const; void setFocusTextAreaOnChatOpen(bool focusTextAreaOnChatOpen); - SponsoredMess getSponsoredMess() const; - void setSponsoredMess(SponsoredMess sponsoredMess); - bool highlightUnreadConversations() const; void setHighlightUnreadConversations(bool enable); + bool showReactionButton() const; + void setShowReactionButton(bool enable); + + SponsoredMess getSponsoredMess() const; + void setSponsoredMess(SponsoredMess sponsoredMess); + signals: void sendByEnterChanged(); void focusTextAreaAfterSendChanged(); @@ -147,8 +151,9 @@ signals: void onlineOnlyModeChanged(); void delayMessageReadChanged(); void focusTextAreaOnChatOpenChanged(); - void sponsoredMessChanged(); void highlightUnreadConversationsChanged(); + void showReactionButtonChanged(); + void sponsoredMessChanged(); private: QSettings settings; From fafa2ba355692d0bfb2b664873be118d3e7ade90 Mon Sep 17 00:00:00 2001 From: jgibbon <99138+jgibbon@users.noreply.github.com> Date: Thu, 1 Feb 2024 22:08:45 +0100 Subject: [PATCH 02/12] Emoji update (#563) * Update twemoji.js * add new emojis fixes #561 * update emoji db --- db/emojis.db | Bin 557056 -> 573440 bytes qml/js/emoji/1f426-200d-2b1b.svg | 1 + qml/js/emoji/1f6dc.svg | 1 + qml/js/emoji/1fa75.svg | 1 + qml/js/emoji/1fa76.svg | 1 + qml/js/emoji/1fa77.svg | 1 + qml/js/emoji/1fa87.svg | 1 + qml/js/emoji/1fa88.svg | 1 + qml/js/emoji/1faad.svg | 1 + qml/js/emoji/1faae.svg | 1 + qml/js/emoji/1faaf.svg | 1 + qml/js/emoji/1fabb.svg | 1 + qml/js/emoji/1fabc.svg | 1 + qml/js/emoji/1fabd.svg | 1 + qml/js/emoji/1fabf.svg | 1 + qml/js/emoji/1face.svg | 1 + qml/js/emoji/1facf.svg | 1 + qml/js/emoji/1fada.svg | 1 + qml/js/emoji/1fadb.svg | 1 + qml/js/emoji/1fae8.svg | 1 + qml/js/emoji/1faf7-1f3fb.svg | 1 + qml/js/emoji/1faf7-1f3fc.svg | 1 + qml/js/emoji/1faf7-1f3fd.svg | 1 + qml/js/emoji/1faf7-1f3fe.svg | 1 + qml/js/emoji/1faf7-1f3ff.svg | 1 + qml/js/emoji/1faf7.svg | 1 + qml/js/emoji/1faf8-1f3fb.svg | 1 + qml/js/emoji/1faf8-1f3fc.svg | 1 + qml/js/emoji/1faf8-1f3fd.svg | 1 + qml/js/emoji/1faf8-1f3fe.svg | 1 + qml/js/emoji/1faf8-1f3ff.svg | 1 + qml/js/emoji/1faf8.svg | 1 + qml/js/twemoji.js | 2 +- qml/pages/ChatPage.qml | 2 +- 34 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 qml/js/emoji/1f426-200d-2b1b.svg create mode 100644 qml/js/emoji/1f6dc.svg create mode 100644 qml/js/emoji/1fa75.svg create mode 100644 qml/js/emoji/1fa76.svg create mode 100644 qml/js/emoji/1fa77.svg create mode 100644 qml/js/emoji/1fa87.svg create mode 100644 qml/js/emoji/1fa88.svg create mode 100644 qml/js/emoji/1faad.svg create mode 100644 qml/js/emoji/1faae.svg create mode 100644 qml/js/emoji/1faaf.svg create mode 100644 qml/js/emoji/1fabb.svg create mode 100644 qml/js/emoji/1fabc.svg create mode 100644 qml/js/emoji/1fabd.svg create mode 100644 qml/js/emoji/1fabf.svg create mode 100644 qml/js/emoji/1face.svg create mode 100644 qml/js/emoji/1facf.svg create mode 100644 qml/js/emoji/1fada.svg create mode 100644 qml/js/emoji/1fadb.svg create mode 100644 qml/js/emoji/1fae8.svg create mode 100644 qml/js/emoji/1faf7-1f3fb.svg create mode 100644 qml/js/emoji/1faf7-1f3fc.svg create mode 100644 qml/js/emoji/1faf7-1f3fd.svg create mode 100644 qml/js/emoji/1faf7-1f3fe.svg create mode 100644 qml/js/emoji/1faf7-1f3ff.svg create mode 100644 qml/js/emoji/1faf7.svg create mode 100644 qml/js/emoji/1faf8-1f3fb.svg create mode 100644 qml/js/emoji/1faf8-1f3fc.svg create mode 100644 qml/js/emoji/1faf8-1f3fd.svg create mode 100644 qml/js/emoji/1faf8-1f3fe.svg create mode 100644 qml/js/emoji/1faf8-1f3ff.svg create mode 100644 qml/js/emoji/1faf8.svg diff --git a/db/emojis.db b/db/emojis.db index 2b47472b548ffee14eba2cfa9bd1eebec6e06f33..602b83d6e2653d0f09241077b3d01dfa7e7b97d0 100644 GIT binary patch literal 573440 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 literal 557056 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 IAIbWE0FAe0IRF3v diff --git a/qml/js/emoji/1f426-200d-2b1b.svg b/qml/js/emoji/1f426-200d-2b1b.svg new file mode 100644 index 0000000..0790872 --- /dev/null +++ b/qml/js/emoji/1f426-200d-2b1b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1f6dc.svg b/qml/js/emoji/1f6dc.svg new file mode 100644 index 0000000..364a68e --- /dev/null +++ b/qml/js/emoji/1f6dc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fa75.svg b/qml/js/emoji/1fa75.svg new file mode 100644 index 0000000..5a72101 --- /dev/null +++ b/qml/js/emoji/1fa75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fa76.svg b/qml/js/emoji/1fa76.svg new file mode 100644 index 0000000..56e3ef1 --- /dev/null +++ b/qml/js/emoji/1fa76.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fa77.svg b/qml/js/emoji/1fa77.svg new file mode 100644 index 0000000..a372dcc --- /dev/null +++ b/qml/js/emoji/1fa77.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fa87.svg b/qml/js/emoji/1fa87.svg new file mode 100644 index 0000000..fd8c53a --- /dev/null +++ b/qml/js/emoji/1fa87.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fa88.svg b/qml/js/emoji/1fa88.svg new file mode 100644 index 0000000..633fa4c --- /dev/null +++ b/qml/js/emoji/1fa88.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faad.svg b/qml/js/emoji/1faad.svg new file mode 100644 index 0000000..5036323 --- /dev/null +++ b/qml/js/emoji/1faad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faae.svg b/qml/js/emoji/1faae.svg new file mode 100644 index 0000000..e8ad033 --- /dev/null +++ b/qml/js/emoji/1faae.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faaf.svg b/qml/js/emoji/1faaf.svg new file mode 100644 index 0000000..bfaceb5 --- /dev/null +++ b/qml/js/emoji/1faaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fabb.svg b/qml/js/emoji/1fabb.svg new file mode 100644 index 0000000..3cae81a --- /dev/null +++ b/qml/js/emoji/1fabb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fabc.svg b/qml/js/emoji/1fabc.svg new file mode 100644 index 0000000..cb8c4ee --- /dev/null +++ b/qml/js/emoji/1fabc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fabd.svg b/qml/js/emoji/1fabd.svg new file mode 100644 index 0000000..9effe33 --- /dev/null +++ b/qml/js/emoji/1fabd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fabf.svg b/qml/js/emoji/1fabf.svg new file mode 100644 index 0000000..7c0f6a6 --- /dev/null +++ b/qml/js/emoji/1fabf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1face.svg b/qml/js/emoji/1face.svg new file mode 100644 index 0000000..f419d66 --- /dev/null +++ b/qml/js/emoji/1face.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1facf.svg b/qml/js/emoji/1facf.svg new file mode 100644 index 0000000..030b0bd --- /dev/null +++ b/qml/js/emoji/1facf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fada.svg b/qml/js/emoji/1fada.svg new file mode 100644 index 0000000..2094a77 --- /dev/null +++ b/qml/js/emoji/1fada.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fadb.svg b/qml/js/emoji/1fadb.svg new file mode 100644 index 0000000..e68a96d --- /dev/null +++ b/qml/js/emoji/1fadb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1fae8.svg b/qml/js/emoji/1fae8.svg new file mode 100644 index 0000000..02ab52d --- /dev/null +++ b/qml/js/emoji/1fae8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7-1f3fb.svg b/qml/js/emoji/1faf7-1f3fb.svg new file mode 100644 index 0000000..5df3bd1 --- /dev/null +++ b/qml/js/emoji/1faf7-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7-1f3fc.svg b/qml/js/emoji/1faf7-1f3fc.svg new file mode 100644 index 0000000..6633504 --- /dev/null +++ b/qml/js/emoji/1faf7-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7-1f3fd.svg b/qml/js/emoji/1faf7-1f3fd.svg new file mode 100644 index 0000000..752c49b --- /dev/null +++ b/qml/js/emoji/1faf7-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7-1f3fe.svg b/qml/js/emoji/1faf7-1f3fe.svg new file mode 100644 index 0000000..d4aaefc --- /dev/null +++ b/qml/js/emoji/1faf7-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7-1f3ff.svg b/qml/js/emoji/1faf7-1f3ff.svg new file mode 100644 index 0000000..6735ce3 --- /dev/null +++ b/qml/js/emoji/1faf7-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf7.svg b/qml/js/emoji/1faf7.svg new file mode 100644 index 0000000..1237887 --- /dev/null +++ b/qml/js/emoji/1faf7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8-1f3fb.svg b/qml/js/emoji/1faf8-1f3fb.svg new file mode 100644 index 0000000..3a28a11 --- /dev/null +++ b/qml/js/emoji/1faf8-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8-1f3fc.svg b/qml/js/emoji/1faf8-1f3fc.svg new file mode 100644 index 0000000..544719e --- /dev/null +++ b/qml/js/emoji/1faf8-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8-1f3fd.svg b/qml/js/emoji/1faf8-1f3fd.svg new file mode 100644 index 0000000..607bcf2 --- /dev/null +++ b/qml/js/emoji/1faf8-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8-1f3fe.svg b/qml/js/emoji/1faf8-1f3fe.svg new file mode 100644 index 0000000..378fa2e --- /dev/null +++ b/qml/js/emoji/1faf8-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8-1f3ff.svg b/qml/js/emoji/1faf8-1f3ff.svg new file mode 100644 index 0000000..b3cccfc --- /dev/null +++ b/qml/js/emoji/1faf8-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/emoji/1faf8.svg b/qml/js/emoji/1faf8.svg new file mode 100644 index 0000000..fadecd8 --- /dev/null +++ b/qml/js/emoji/1faf8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qml/js/twemoji.js b/qml/js/twemoji.js index 044a067..0825c58 100644 --- a/qml/js/twemoji.js +++ b/qml/js/twemoji.js @@ -8,7 +8,7 @@ // RegExp based on emoji's official Unicode standards // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt -var re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, +var re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude88\ude90-\udebd\udebf-\udec2\udece-\udedb\udee0-\udee8]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, // avoid runtime RegExp creation for not so smart, // not JIT based, and old browsers / engines diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index c06fb51..3fa4eec 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -1877,7 +1877,7 @@ Page { Image { id: emojiPicture - source: "../js/emoji/" + modelData.file_name + source: "../js/emoji/" + modelData.file_name +".svg" width: Theme.fontSizeLarge height: Theme.fontSizeLarge } From 3a8f20a1ce94e98ed1d52f471d37b8491a581c5d Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Mon, 4 Dec 2023 19:12:18 +0300 Subject: [PATCH 03/12] Fix Copy message to clipboard not working from extended menu --- qml/pages/ChatPage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index 3fa4eec..1808d58 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -781,7 +781,7 @@ Page { NamedAction { visible: messageOptionsDrawer.showCopyMessageToClipboardMenuItem name: qsTr("Copy Message to Clipboard") - action: messageOptionsDrawer.myMessage.copyMessageToClipboard + action: messageOptionsDrawer.sourceItem.copyMessageToClipboard }, NamedAction { visible: messageOptionsDrawer.showForwardMessageMenuItem && messageOptionsDrawer.myMessage.can_be_forwarded From 80f76c8eb8022b11b0fcd2453610cbd043b4fb6d Mon Sep 17 00:00:00 2001 From: jgibbon Date: Thu, 28 Dec 2023 13:03:13 +0100 Subject: [PATCH 04/12] fix range + message updates; implement album filter --- harbour-fernschreiber.pro | 10 + qml/components/MessageListViewItem.qml | 47 ++- qml/components/TDLibMinithumbnail.qml | 15 +- qml/components/TDLibThumbnail.qml | 4 +- .../messageContent/MessageContentBase.qml | 1 - .../messageContent/MessagePhoto.qml | 36 +-- .../messageContent/MessagePhotoAlbum.qml | 207 +++++++++++++ .../messageContent/MessageVideo.qml | 7 +- .../messageContent/MessageVideoAlbum.qml | 19 ++ .../mediaAlbumPage/FullscreenOverlay.qml | 279 ++++++++++++++++++ .../mediaAlbumPage/PhotoComponent.qml | 16 + .../mediaAlbumPage/VideoComponent.qml | 181 ++++++++++++ .../mediaAlbumPage/ZoomArea.qml | 148 ++++++++++ .../mediaAlbumPage/ZoomImage.qml | 127 ++++++++ qml/pages/ChatPage.qml | 76 ++++- qml/pages/MediaAlbumPage.qml | 109 +++++++ src/boolfiltermodel.cpp | 153 ++++++++++ src/boolfiltermodel.h | 63 ++++ src/chatmodel.cpp | 210 ++++++++++++- src/chatmodel.h | 7 + src/harbour-fernschreiber.cpp | 2 + 21 files changed, 1649 insertions(+), 68 deletions(-) create mode 100644 qml/components/messageContent/MessagePhotoAlbum.qml create mode 100644 qml/components/messageContent/MessageVideoAlbum.qml create mode 100644 qml/components/messageContent/mediaAlbumPage/FullscreenOverlay.qml create mode 100644 qml/components/messageContent/mediaAlbumPage/PhotoComponent.qml create mode 100644 qml/components/messageContent/mediaAlbumPage/VideoComponent.qml create mode 100644 qml/components/messageContent/mediaAlbumPage/ZoomArea.qml create mode 100644 qml/components/messageContent/mediaAlbumPage/ZoomImage.qml create mode 100644 qml/pages/MediaAlbumPage.qml create mode 100644 src/boolfiltermodel.cpp create mode 100644 src/boolfiltermodel.h diff --git a/harbour-fernschreiber.pro b/harbour-fernschreiber.pro index 79af618..a16ad98 100644 --- a/harbour-fernschreiber.pro +++ b/harbour-fernschreiber.pro @@ -22,6 +22,7 @@ DEFINES += QT_STATICPLUGIN SOURCES += src/harbour-fernschreiber.cpp \ src/appsettings.cpp \ + src/boolfiltermodel.cpp \ src/chatpermissionfiltermodel.cpp \ src/chatlistmodel.cpp \ src/chatmodel.cpp \ @@ -105,14 +106,21 @@ DISTFILES += qml/harbour-fernschreiber.qml \ qml/components/messageContent/MessageGame.qml \ qml/components/messageContent/MessageLocation.qml \ qml/components/messageContent/MessagePhoto.qml \ + qml/components/messageContent/MessagePhotoAlbum.qml \ qml/components/messageContent/MessagePoll.qml \ qml/components/messageContent/MessageSticker.qml \ qml/components/messageContent/MessageVenue.qml \ + qml/components/messageContent/MessageVideoAlbum.qml \ qml/components/messageContent/MessageVideoNote.qml \ qml/components/messageContent/MessageVideo.qml \ qml/components/messageContent/MessageVoiceNote.qml \ qml/components/messageContent/SponsoredMessage.qml \ qml/components/messageContent/WebPagePreview.qml \ + qml/components/messageContent/mediaAlbumPage/FullscreenOverlay.qml \ + qml/components/messageContent/mediaAlbumPage/PhotoComponent.qml \ + qml/components/messageContent/mediaAlbumPage/VideoComponent.qml \ + qml/components/messageContent/mediaAlbumPage/ZoomArea.qml \ + qml/components/messageContent/mediaAlbumPage/ZoomImage.qml \ qml/components/settingsPage/Accordion.qml \ qml/components/settingsPage/AccordionItem.qml \ qml/components/settingsPage/ResponsiveGrid.qml \ @@ -130,6 +138,7 @@ DISTFILES += qml/harbour-fernschreiber.qml \ qml/pages/CoverPage.qml \ qml/pages/DebugPage.qml \ qml/pages/InitializationPage.qml \ + qml/pages/MediaAlbumPage.qml \ qml/pages/NewChatPage.qml \ qml/pages/OverviewPage.qml \ qml/pages/AboutPage.qml \ @@ -212,6 +221,7 @@ INSTALLS += telegram 86.png 108.png 128.png 172.png 256.png \ HEADERS += \ src/appsettings.h \ + src/boolfiltermodel.h \ src/chatpermissionfiltermodel.h \ src/chatlistmodel.h \ src/chatmodel.h \ diff --git a/qml/components/MessageListViewItem.qml b/qml/components/MessageListViewItem.qml index a0cf5d8..5b597f6 100644 --- a/qml/components/MessageListViewItem.qml +++ b/qml/components/MessageListViewItem.qml @@ -32,6 +32,7 @@ ListItem { property int messageIndex property int messageViewCount property var myMessage + property var messageAlbumMessageIds property var reactions property bool canReplyToMessage readonly property bool isAnonymous: myMessage.sender_id["@type"] === "messageSenderChat" @@ -68,7 +69,7 @@ ListItem { property var chatReactions property var messageReactions - highlighted: (down || isSelected || additionalOptionsOpened || wasNavigatedTo) && !menuOpen + highlighted: (down || (isSelected && messageAlbumMessageIds.length === 0) || additionalOptionsOpened || wasNavigatedTo) && !menuOpen openMenuOnPressAndHold: !messageListItem.precalculatedValues.pageIsSelecting signal replyToMessage() @@ -268,20 +269,20 @@ ListItem { Connections { target: chatModel onMessagesReceived: { - messageBackground.isUnread = index > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; + messageBackground.isUnread = messageIndex > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; } onMessagesIncrementalUpdate: { - messageBackground.isUnread = index > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; + messageBackground.isUnread = messageIndex > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; } onNewMessageReceived: { - messageBackground.isUnread = index > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; + messageBackground.isUnread = messageIndex > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; } onUnreadCountUpdated: { - messageBackground.isUnread = index > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; + messageBackground.isUnread = messageIndex > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage"; } onLastReadSentMessageUpdated: { - Debug.log("[ChatModel] Messages in this chat were read, new last read: ", lastReadSentIndex, ", updating description for index ", index, ", status: ", (index <= lastReadSentIndex)); - messageDateText.text = getMessageStatusText(myMessage, index, lastReadSentIndex, messageDateText.useElapsed); + Debug.log("[ChatModel] Messages in this chat were read, new last read: ", lastReadSentIndex, ", updating description for index ", index, ", status: ", (messageIndex <= lastReadSentIndex)); + messageDateText.text = getMessageStatusText(myMessage, messageIndex, lastReadSentIndex, messageDateText.useElapsed); } } @@ -302,7 +303,7 @@ ListItem { pageStack.currentPage === chatPage) { Debug.log("Available reactions for this message: " + reactions); messageListItem.messageReactions = reactions; - showItemCompletelyTimer.requestedIndex = index; + showItemCompletelyTimer.requestedIndex = messageIndex; showItemCompletelyTimer.start(); } else { messageListItem.messageReactions = null; @@ -323,6 +324,13 @@ ListItem { interval: 200 triggeredOnStart: false onTriggered: { + if (requestedIndex === messageIndex) { + chatView.highlightMoveDuration = -1; + chatView.highlightResizeDuration = -1; + chatView.scrollToIndex(requestedIndex); + chatView.highlightMoveDuration = 0; + chatView.highlightResizeDuration = 0; + } Debug.log("Show item completely timer triggered, requested index: " + requestedIndex + ", current index: " + index) if (requestedIndex === index) { var p = chatView.contentItem.mapFromItem(reactionsColumn, 0, 0) @@ -376,8 +384,10 @@ ListItem { onTriggered: { if (messageListItem.hasContentComponent) { var type = myMessage.content["@type"]; + var albumComponentPart = (myMessage.media_album_id !== "0" && ['messagePhoto', 'messageVideo'].indexOf(type) !== -1) ? 'Album' : ''; + console.log('delegateComponentLoadingTimer', myMessage.media_album_id, albumComponentPart) extraContentLoader.setSource( - "../components/messageContent/" + type.charAt(0).toUpperCase() + type.substring(1) + ".qml", + "../components/messageContent/" + type.charAt(0).toUpperCase() + type.substring(1) + albumComponentPart + ".qml", { messageListItem: messageListItem }) @@ -441,7 +451,7 @@ ListItem { } height: messageTextColumn.height + precalculatedValues.paddingMediumDouble width: precalculatedValues.backgroundWidth - property bool isUnread: index > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage" + property bool isUnread: messageIndex > chatModel.getLastReadMessageIndex() && myMessage['@type'] !== "sponsoredMessage" color: Theme.colorScheme === Theme.LightOnDark ? (isUnread ? Theme.secondaryHighlightColor : Theme.secondaryColor) : (isUnread ? Theme.backgroundGlowColor : Theme.overlayBackgroundColor) radius: parent.width / 50 opacity: isUnread ? 0.5 : 0.2 @@ -463,7 +473,13 @@ ListItem { id: userText width: parent.width - text: messageListItem.isOwnMessage ? qsTr("You") : Emoji.emojify( myMessage['@type'] === "sponsoredMessage" ? tdLibWrapper.getChat(myMessage.sponsor_chat_id).title : ( messageListItem.isAnonymous ? page.chatInformation.title : Functions.getUserName(messageListItem.userInformation) ), font.pixelSize) + text: messageListItem.isOwnMessage + ? qsTr("You") + : Emoji.emojify( myMessage['@type'] === "sponsoredMessage" + ? tdLibWrapper.getChat(myMessage.sponsor_chat_id).title + : ( messageListItem.isAnonymous + ? page.chatInformation.title + : Functions.getUserName(messageListItem.userInformation) ), font.pixelSize) font.pixelSize: Theme.fontSizeExtraSmall font.weight: Font.ExtraBold color: messageListItem.textColor @@ -646,7 +662,8 @@ ListItem { id: extraContentLoader width: parent.width * getContentWidthMultiplier() asynchronous: true - height: item ? item.height : (messageListItem.hasContentComponent ? chatView.getContentComponentHeight(model.content_type, myMessage.content, width) : 0) + readonly property var defaultExtraContentHeight: messageListItem.hasContentComponent ? chatView.getContentComponentHeight(model.content_type, myMessage.content, width, model.album_message_ids.length) : 0 + height: item ? item.height : defaultExtraContentHeight } Binding { @@ -671,7 +688,7 @@ ListItem { running: true repeat: true onTriggered: { - messageDateText.text = getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed); + messageDateText.text = getMessageStatusText(myMessage, messageIndex, chatView.lastReadSentIndex, messageDateText.useElapsed); } } @@ -684,13 +701,13 @@ ListItem { font.pixelSize: Theme.fontSizeTiny color: messageListItem.isOwnMessage ? Theme.secondaryHighlightColor : Theme.secondaryColor horizontalAlignment: messageListItem.textAlign - text: getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed) + text: getMessageStatusText(myMessage, messageIndex, chatView.lastReadSentIndex, messageDateText.useElapsed) MouseArea { anchors.fill: parent enabled: !messageListItem.precalculatedValues.pageIsSelecting onClicked: { messageDateText.useElapsed = !messageDateText.useElapsed; - messageDateText.text = getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed); + messageDateText.text = getMessageStatusText(myMessage, messageIndex, chatView.lastReadSentIndex, messageDateText.useElapsed); } } } diff --git a/qml/components/TDLibMinithumbnail.qml b/qml/components/TDLibMinithumbnail.qml index c2b8220..22b2aad 100644 --- a/qml/components/TDLibMinithumbnail.qml +++ b/qml/components/TDLibMinithumbnail.qml @@ -24,6 +24,7 @@ Loader { id: loader property var minithumbnail property bool highlighted + property int fillMode: tdLibImage.fillMode anchors.fill: parent active: !!minithumbnail sourceComponent: Component { @@ -32,7 +33,7 @@ Loader { id: minithumbnailImage anchors.fill: parent source: "data:image/jpg;base64,"+minithumbnail.data - fillMode: tdLibImage.fillMode + fillMode: loader.fillMode opacity: status === Image.Ready ? 1.0 : 0.0 cache: false visible: opacity > 0 @@ -43,12 +44,12 @@ Loader { effect: PressEffect { source: minithumbnailImage } } } - - FastBlur { - anchors.fill: parent - source: minithumbnailImage - radius: Theme.paddingLarge - } + // this had a visible impact on performance +// FastBlur { +// anchors.fill: parent +// source: minithumbnailImage +// radius: Theme.paddingLarge +// } } } } diff --git a/qml/components/TDLibThumbnail.qml b/qml/components/TDLibThumbnail.qml index 291f507..b1aa0dc 100644 --- a/qml/components/TDLibThumbnail.qml +++ b/qml/components/TDLibThumbnail.qml @@ -59,7 +59,7 @@ Item { readonly property bool hasVisibleThumbnail: thumbnailImage.opacity !== 1.0 && !(videoThumbnailLoader.item && videoThumbnailLoader.item.opacity === 1.0) - + property alias fillMode: thumbnailImage.fillMode layer { enabled: highlighted effect: PressEffect { source: tdlibThumbnail } @@ -67,6 +67,7 @@ Item { TDLibMinithumbnail { id: minithumbnailLoader + fillMode: thumbnailImage.fillMode active: !!minithumbnail && thumbnailImage.opacity < 1.0 } BackgroundImage { @@ -103,6 +104,7 @@ Item { sourceSize.width: width sourceSize.height: height mimeType: tdlibThumbnail.videoMimeType + fillMode: thumbnailImage.fillMode == Image.PreserveAspectFit ? Thumbnail.PreserveAspectFit : Thumbnail.PreserveAspectCrop visible: opacity > 0 opacity: status === Thumbnail.Ready ? 1.0 : 0.0 Behavior on opacity { FadeAnimation {} } diff --git a/qml/components/messageContent/MessageContentBase.qml b/qml/components/messageContent/MessageContentBase.qml index f85bbfd..2ba2878 100644 --- a/qml/components/messageContent/MessageContentBase.qml +++ b/qml/components/messageContent/MessageContentBase.qml @@ -20,7 +20,6 @@ import QtQuick 2.6 import Sailfish.Silica 1.0 import QtMultimedia 5.6 import "../" -import "../../js/functions.js" as Functions import "../../js/debug.js" as Debug Item { diff --git a/qml/components/messageContent/MessagePhoto.qml b/qml/components/messageContent/MessagePhoto.qml index beb2381..d561dab 100644 --- a/qml/components/messageContent/MessagePhoto.qml +++ b/qml/components/messageContent/MessagePhoto.qml @@ -22,28 +22,25 @@ import "../" MessageContentBase { - function calculateBiggest() { - var candidateBiggest = rawMessage.content.photo.sizes[rawMessage.content.photo.sizes.length - 1]; - if (candidateBiggest.width === 0 && rawMessage.content.photo.sizes.length > 1) { - for (var i = (rawMessage.content.photo.sizes.length - 2); i >= 0; i--) { - candidateBiggest = rawMessage.content.photo.sizes[i]; - if (candidateBiggest.width > 0) { + height: Math.max(Theme.itemSizeExtraSmall, Math.min(Math.round(width * 0.66666666), width / getAspectRatio())) + readonly property alias photoData: photo.photo; + + onClicked: { + pageStack.push(Qt.resolvedUrl("../../pages/MediaAlbumPage.qml"), { + "messages" : [rawMessage], + }) + } + function getAspectRatio() { + var candidate = photoData.sizes[photoData.sizes.length - 1]; + if (candidate.width === 0 && photoData.sizes.length > 1) { + for (var i = (photoData.sizes.length - 2); i >= 0; i--) { + candidate = photoData.sizes[i]; + if (candidate.width > 0) { break; } } } - return candidateBiggest; - } - - height: Math.max(Theme.itemSizeExtraSmall, Math.min(defaultHeight, width / (biggest.width/biggest.height))) - readonly property int defaultHeight: Math.round(width * 0.66666666) - readonly property var biggest: calculateBiggest(); - - onClicked: { - pageStack.push(Qt.resolvedUrl("../../pages/ImagePage.qml"), { - "photoData" : photo.photo, -// "pictureFileInformation" : photo.fileInformation - }) + return candidate.width / candidate.height; } TDLibPhoto { id: photo @@ -51,7 +48,4 @@ MessageContentBase { photo: rawMessage.content.photo highlighted: parent.highlighted } - BackgroundImage { - visible: !rawMessage.content.photo.minithumbnail && photo.image.status !== Image.Ready - } } diff --git a/qml/components/messageContent/MessagePhotoAlbum.qml b/qml/components/messageContent/MessagePhotoAlbum.qml new file mode 100644 index 0000000..bf3a942 --- /dev/null +++ b/qml/components/messageContent/MessagePhotoAlbum.qml @@ -0,0 +1,207 @@ +/* + Copyright (C) 2020 Sebastian J. Wolf and other contributors + + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ +import QtQuick 2.6 +import Sailfish.Silica 1.0 +import "../" + +MessageContentBase { + id: messageContent + property string chatId + readonly property int heightUnit: Math.round(width * 0.66666666) + readonly property var albumId: rawMessage.media_album_id + property var albumMessageIds: messageListItem ? messageListItem.messageAlbumMessageIds : []//overlayFlickable.messageAlbumMessageIds + onAlbumMessageIdsChanged: albumMessages = getMessages() //chatModel.getMessagesForAlbum(messageContent.albumId) + property var albumMessages: getMessages()//chatModel.getMessagesForAlbum(messageContent.albumId) + property bool firstLarge: albumMessages.length % 2 !== 0; + + clip: true + height: defaultExtraContentHeight//(firstLarge ? heightUnit * 0.75 : 0 ) + heightUnit * 0.25 * albumMessageIds.length + + + onClicked: { + if(messageListItem.precalculatedValues.pageIsSelecting) { + page.toggleMessageSelection(rawMessage); + return; + } + openDetail(-1); + } + function getMessages() { + var msgs = [rawMessage]; + if(messageContent.albumId === '0' || messageContent.albumMessageIds.length < 2) { + return msgs; + } +// var othermsgIds = + // getMessages from tdlib isn't faster +// if(rawMessage && rawMessage.chat_id) { +// var messages = []; +// return albumMessageIds.map(function(msgId){ +// if(msgId === rawMessage.id) { +// return rawMessage; +// } +// return tdLibWrapper.getMessage(rawMessage.chat_id, msgId); +// }) +// } + chatModel.getMessagesForAlbum(messageContent.albumId, 1).forEach(function(msg){ + msgs.push(msg); + }); + // + return msgs; //chatModel.getMessagesForAlbum(messageContent.albumId); + } + + function openDetail(index) { + console.log('open detail', index || 0); + + + pageStack.push(Qt.resolvedUrl("../../pages/MediaAlbumPage.qml"), { + "messages" : albumMessages, + "index": index || 0 + }) + } + Connections { // TODO: needed? + target: tdLibWrapper + + onReceivedMessage: { + if (albumMessageIds.indexOf(messageId)) { +// albumMessages = getMessages() + } + } + } + + Component { + id: photoPreviewComponent + MessagePhoto { +// width: parent.width +// height: parent.height + messageListItem: messageContent.messageListItem + overlayFlickable: messageContent.overlayFlickable + rawMessage: albumMessages[modelIndex] + highlighted: mediaBackgroundItem.highlighted + } + } + Component { + id: videoPreviewComponent + Item { + property bool highlighted: mediaBackgroundItem.highlighted + anchors.fill: parent + clip: true + TDLibThumbnail { + id: tdLibImage + width: parent.width //don't use anchors here for easier custom scaling + height: parent.height + highlighted: parent.highlighted + thumbnail: albumMessages[modelIndex].content.video.thumbnail + minithumbnail: albumMessages[modelIndex].content.video.minithumbnail + } + Rectangle { + anchors { + fill: videoIcon + leftMargin: -Theme.paddingSmall + topMargin: -Theme.paddingSmall + bottomMargin: -Theme.paddingSmall + rightMargin: -Theme.paddingLarge + + } + + radius: Theme.paddingSmall + color: Theme.rgba(Theme.overlayBackgroundColor, 0.4) + + } + + Icon { + id: videoIcon + source: "image://theme/icon-m-video" + width: Theme.iconSizeSmall + height: Theme.iconSizeSmall + highlighted: parent.highlighted + anchors { + right: parent.right + rightMargin: Theme.paddingSmall + bottom: parent.bottom + } + } + } + } + + Flow { + id: contentGrid + property int firstWidth: firstLarge ? contentGrid.width : normalWidth + property int firstHeight: firstLarge ? heightUnit - contentGrid.spacing : normalHeight + property int normalWidth: (contentGrid.width - contentGrid.spacing) / 2 + property int normalHeight: (heightUnit / 2) - contentGrid.spacing + + anchors.fill: parent + spacing: Theme.paddingMedium + + Repeater { + model: albumMessages + delegate: BackgroundItem { + id: mediaBackgroundItem + property bool isLarge: firstLarge && model.index === 0 + width: model.index === 0 ? contentGrid.firstWidth : contentGrid.normalWidth + height: model.index === 0 ? contentGrid.firstHeight : contentGrid.normalHeight + + readonly property bool isSelected: messageListItem.precalculatedValues.pageIsSelecting && page.selectedMessages.some(function(existingMessage) { + return existingMessage.id === albumMessages[index].id + }); + highlighted: isSelected || down || messageContent.highlighted + onClicked: { + if(messageListItem.precalculatedValues.pageIsSelecting) { + page.toggleMessageSelection(albumMessages[index]); + return; + } + + openDetail(index); + } + onPressAndHold: { + page.toggleMessageSelection(albumMessages[index]); + } + + Loader { + anchors.fill: parent +// asynchronous: true + + readonly property int modelIndex: index + sourceComponent: albumMessages[index].content["@type"] === 'messageVideo' ? videoPreviewComponent : photoPreviewComponent + opacity: status === Loader.Ready + Behavior on opacity {FadeAnimator{}} + } + + /* + TODO video: + rawMessage.content.video.thumbnail + TDLibPhoto { + id: photo + anchors.fill: parent + photo: rawMessage.content.photo + highlighted: parent.highlighted + } + */ + Rectangle { + visible: mediaBackgroundItem.isSelected + anchors { + fill: parent + } + color: 'transparent' + border.color: Theme.highlightColor + border.width: Theme.paddingSmall + } + } + } + } +} diff --git a/qml/components/messageContent/MessageVideo.qml b/qml/components/messageContent/MessageVideo.qml index 8bec2ca..fe90397 100644 --- a/qml/components/messageContent/MessageVideo.qml +++ b/qml/components/messageContent/MessageVideo.qml @@ -26,7 +26,12 @@ import "../../js/debug.js" as Debug MessageContentBase { id: videoMessageComponent - property var videoData: ( rawMessage.content['@type'] === "messageVideo" ) ? rawMessage.content.video : ( ( rawMessage.content['@type'] === "messageAnimation" ) ? rawMessage.content.animation : rawMessage.content.video_note ) + property var videoData: ( rawMessage.content['@type'] === "messageVideo" ) + ? rawMessage.content.video + : ( + ( rawMessage.content['@type'] === "messageAnimation" ) + ? rawMessage.content.animation + : rawMessage.content.video_note ) property string videoUrl; property int previewFileId; property int videoFileId; diff --git a/qml/components/messageContent/MessageVideoAlbum.qml b/qml/components/messageContent/MessageVideoAlbum.qml new file mode 100644 index 0000000..11b5798 --- /dev/null +++ b/qml/components/messageContent/MessageVideoAlbum.qml @@ -0,0 +1,19 @@ +/* + Copyright (C) 2020 Sebastian J. Wolf and other contributors + + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ +MessagePhotoAlbum {} diff --git a/qml/components/messageContent/mediaAlbumPage/FullscreenOverlay.qml b/qml/components/messageContent/mediaAlbumPage/FullscreenOverlay.qml new file mode 100644 index 0000000..8a069f1 --- /dev/null +++ b/qml/components/messageContent/mediaAlbumPage/FullscreenOverlay.qml @@ -0,0 +1,279 @@ +/* + Copyright (C) 2020 Sebastian J. Wolf and other contributors + + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ +import QtQuick 2.6 +import QtGraphicalEffects 1.0 +import Sailfish.Silica 1.0 +import "../../../js/functions.js" as Functions + + +Item { + // id + id: overlay + // property declarations + property int pageCount + property int currentIndex + property alias text: captionLabel.text + property bool active: true + property var message + readonly property color gradientColor: '#bb000000' + readonly property int gradientPadding: Theme.itemSizeMedium + // signal declarations + // JavaScript functions + // object properties + anchors.fill: parent + opacity: active ? 1 : 0 + Behavior on opacity { FadeAnimator {} } + // large property bindings + // child objects + // states + // transitions + + onActiveChanged: { + console.log('overlay active', active) + } + + function forwardMessage() { + var neededPermissions = Functions.getMessagesNeededForwardPermissions([message]); + pageStack.push(Qt.resolvedUrl("../../../pages/ChatSelectionPage.qml"), { + myUserId: tdLibWrapper.getUserInformation().id, + headerDescription: qsTr("Forward %Ln messages", "dialog header", 1), + payload: {fromChatId: message.chat_id, messageIds:[message.id], neededPermissions: neededPermissions}, + state: "forwardMessages" + }); + } + + // "header" + + LinearGradient { + id: topGradient + property int startY: 0; +// Behavior on startY { NumberAnimation {duration: 2000} } + start: Qt.point(0, Math.min(height-gradientPadding*2, startY)) + anchors { + left: parent.left + right: parent.right + top: parent.top + bottom: closeButton.bottom + + bottomMargin: -gradientPadding + } + + gradient: Gradient { + GradientStop { position: 0.0; color: gradientColor } + GradientStop { position: 1.0; color: 'transparent' } + } + } + + + IconButton { + id: closeButton + icon.source: "image://theme/icon-m-cancel?" + (pressed + ? Theme.highlightColor + : Theme.lightPrimaryColor) + onClicked: pageStack.pop() + anchors { + right: parent.right + top: parent.top + margins: Theme.horizontalPageMargin + } + } + + SilicaFlickable { + id: captionFlickable + anchors { + left: parent.left +// leftMargin: Theme.horizontalPageMargin + right: closeButton.left + top: parent.top +// topMargin: Theme.horizontalPageMargin + } + interactive: captionLabel.expanded && contentHeight > height + clip: true + height: Math.min(contentHeight, parent.height / 4) + contentHeight: captionLabel.height + Theme.horizontalPageMargin + flickableDirection: Flickable.VerticalFlick + VerticalScrollDecorator { + opacity: visible ? 1.0 : 0.0 + flickable: captionFlickable + } + + Label { + id: captionLabel + property bool expandable: expanded || height < contentHeight + property bool expanded + + height: text ? + expanded + ? contentHeight + : Theme.itemSizeMedium + : 0; + // maximumLineCount: expanded ? 0 : 3 + color: Theme.primaryColor +// text: model.modelData.content.caption.text + text: Emoji.emojify(Functions.enhanceMessageText(message.content.caption, false), Theme.fontSizeExtraSmall) + onTextChanged: expanded = false + font.pixelSize: Theme.fontSizeExtraSmall + wrapMode: Text.WrapAnywhere + bottomPadding: expanded ? Theme.paddingLarge : 0 + anchors { + left: parent.left + leftMargin: Theme.horizontalPageMargin + rightMargin: Theme.paddingLarge + right: parent.right + top: parent.top + topMargin: Theme.horizontalPageMargin + } + + Behavior on height { NumberAnimation {duration: 300} } + Behavior on text { + SequentialAnimation { + FadeAnimation { + target: captionLabel + to: 0.0 + duration: 300 + } + PropertyAction {} + FadeAnimation { + target: captionLabel + to: 1.0 + duration: 300 + } + } + } + + } + + OpacityRampEffect { + sourceItem: captionLabel + enabled: !captionLabel.expanded + direction: OpacityRamp.TopToBottom + } + MouseArea { + anchors.fill: captionLabel + enabled: captionLabel.expandable + onClicked: { + captionLabel.expanded = !captionLabel.expanded + } + } + } + + // "footer" + LinearGradient { + anchors { + left: parent.left + right: parent.right + top: buttons.top + bottom: parent.bottom + topMargin: -gradientPadding + } + + gradient: Gradient { + GradientStop { position: 0.0; color: 'transparent' } + GradientStop { position: 1.0; color: gradientColor } + } + } + Loader { + asynchronous: true + active: overlay.pageCount > 1 + + anchors { + horizontalCenter: parent.horizontalCenter + verticalCenter: buttons.bottom + } + sourceComponent: Component { + + Row { + id: pageIndicatorRow + height: Theme.paddingSmall + spacing: height + Repeater { + id: pageIndicator + model: overlay.pageCount + Rectangle { + property bool active: model.index === overlay.currentIndex + width: pageIndicatorRow.height + height: pageIndicatorRow.height + color: active ? Theme.lightPrimaryColor : Theme.rgba(Theme.lightSecondaryColor, Theme.opacityLow) + Behavior on color { ColorAnimation {} } + radius: Theme.paddingSmall + } + } + } + } + } + + + Row { + id: buttons + height: Theme.itemSizeSmall + width: childrenRect.width + spacing: Theme.paddingLarge + anchors { + horizontalCenter: parent.horizontalCenter + bottom: parent.bottom + bottomMargin: Theme.paddingLarge + } + +// IconButton { +// icon.source: "image://theme/icon-m-cancel?" + (pressed +// ? Theme.highlightColor +// : Theme.lightPrimaryColor) +// onClicked: pageStack.pop() + +// } + IconButton { + icon.source: "image://theme/icon-m-downloads?" + (pressed + ? Theme.highlightColor + : Theme.lightPrimaryColor) + onClicked: pageStack.pop() + } + Item { + width: Theme.itemSizeSmall + height: Theme.itemSizeSmall + } + + IconButton { + enabled: message.can_be_forwarded + opacity: enabled ? 1.0 : 0.2 + icon.source: "image://theme/icon-m-share?" + (pressed + ? Theme.highlightColor + : Theme.lightPrimaryColor) + onClicked: forwardMessage() + } + } + states: [ + State { + name: 'hasCaption' + when: captionLabel.height > 0 + PropertyChanges { target: topGradient; + startY: captionFlickable.height + } + AnchorChanges { + target: topGradient +// anchors.top: captionLabel.verticalCenter + anchors.bottom: captionFlickable.bottom + } + } + ] + transitions: + Transition { + AnchorAnimation { duration: 200 } + NumberAnimation { properties: "startY"; duration: 200 } + } +} diff --git a/qml/components/messageContent/mediaAlbumPage/PhotoComponent.qml b/qml/components/messageContent/mediaAlbumPage/PhotoComponent.qml new file mode 100644 index 0000000..71d31b5 --- /dev/null +++ b/qml/components/messageContent/mediaAlbumPage/PhotoComponent.qml @@ -0,0 +1,16 @@ + +import QtQuick 2.6 + +ZoomImage { + photoData: model.modelData.content.photo + onClicked: { + console.log('clicked', zoomed) + if(zoomed) { + zoomOut(true) + page.overlayActive = true + } else { + page.overlayActive = !page.overlayActive + } + } + +} diff --git a/qml/components/messageContent/mediaAlbumPage/VideoComponent.qml b/qml/components/messageContent/mediaAlbumPage/VideoComponent.qml new file mode 100644 index 0000000..a3a01ac --- /dev/null +++ b/qml/components/messageContent/mediaAlbumPage/VideoComponent.qml @@ -0,0 +1,181 @@ +import QtQuick 2.6 +import Sailfish.Silica 1.0 +import WerkWolf.Fernschreiber 1.0 +import QtMultimedia 5.6 +import QtGraphicalEffects 1.0 +import "../../" + +Video { + id: video + property var videoData: model.modelData.content.video + readonly property bool isPlaying: playbackState === MediaPlayer.PlayingState + readonly property bool isCurrent: index === page.index + property bool shouldPlay + autoLoad: true + source: file.isDownloadingCompleted ? file.path : '' + onIsCurrentChanged: { + if(!isCurrent) { + pause() + } + } + onStatusChanged: { + if(status === MediaPlayer.EndOfMedia) { + page.overlayActive = true + } + } + TDLibThumbnail { + id: tdLibImage + + property bool active: !file.isDownloadingCompleted || (!video.isPlaying && (video.position === 0 || video.status === MediaPlayer.EndOfMedia)) + opacity: active ? 1 : 0 + visible: active || opacity > 0 + + width: parent.width //don't use anchors here for easier custom scaling + height: parent.height +// highlighted: parent.highlighted + thumbnail: videoData.thumbnail + minithumbnail: videoData.minithumbnail + fillMode: Image.PreserveAspectFit + + + } + + TDLibFile { + id: file + autoLoad: false + tdlib: tdLibWrapper + fileInformation: videoData.video + property real progress: isDownloadingCompleted ? 1.0 : (downloadedSize / size) + onDownloadingCompletedChanged: { + if(isDownloadingCompleted) { + video.source = file.path + if(video.shouldPlay) { + video.play() + delayedOverlayHide.start() + video.shouldPlay = false + } + } + } + } + Label { + anchors.centerIn: parent + text: 'dl: '+file.downloadedSize + + ' \ns: '+file.size + + ' \nes: '+file.expectedSize + + ' \nd:'+file.isDownloadingActive + + ' \nc:'+file.isDownloadingCompleted + + } + + MouseArea { + anchors.fill: parent + onClicked: page.overlayActive = !page.overlayActive + } + + RadialGradient { // white videos = invisible button. I can't tell since which SFOS version the opaque button is available, so: + id: buttonBg + anchors.centerIn: parent + width: Theme.itemSizeLarge; height: Theme.itemSizeLarge + property color baseColor: Theme.rgba(palette.overlayBackgroundColor, 0.2) + + enabled: videoUI.active || !file.isDownloadingCompleted + opacity: enabled ? 1 : 0 + Behavior on opacity { FadeAnimator {} } + gradient: Gradient { + + GradientStop { position: 0.0; color: buttonBg.baseColor } + GradientStop { position: 0.3; color: buttonBg.baseColor } + GradientStop { position: 0.5; color: 'transparent' } + } + + IconButton { + anchors.fill: parent + icon.source: "image://theme/icon-l-"+(video.isPlaying || video.shouldPlay ? 'pause' : 'play')+"?" + (pressed + ? Theme.highlightColor + : Theme.lightPrimaryColor) + onClicked: { + if (!file.isDownloadingCompleted) { + video.shouldPlay = !video.shouldPlay; + if(video.shouldPlay) { + file.load() + } else { + file.cancel() + } + return; + } + + if (video.isPlaying) { + video.pause() + } else { + video.play() + delayedOverlayHide.start() + } + } + } + } + + ProgressCircle { + property bool active: file.isDownloadingActive + opacity: active ? 1 : 0 + Behavior on opacity { FadeAnimator {} } + anchors.centerIn: parent + value: file.progress + } + Item { + id: videoUI + property bool active: overlay.active// && file.isDownloadingCompleted + anchors.fill: parent + opacity: active ? 1 : 0 + Behavior on opacity { FadeAnimator {} } + + Slider { + id: slider + value: video.position + minimumValue: 0 + maximumValue: video.duration || 0.1 + enabled: parent.active && video.seekable + width: parent.width + handleVisible: false + animateValue: true + stepSize: 500 + anchors { + bottom: parent.bottom + bottomMargin: Theme.itemSizeMedium + } + valueText: value > 0 || down ? Format.formatDuration((value)/1000, Formatter.Duration) : '' + leftMargin: Theme.horizontalPageMargin + rightMargin: Theme.horizontalPageMargin + onDownChanged: { + if(!down) { + video.seek(value) + value = Qt.binding(function() { return video.position }) + } + } + Label { + anchors { + right: parent.right + rightMargin: Theme.horizontalPageMargin + bottom: parent.bottom + topMargin: Theme.paddingSmall + } + font.pixelSize: Theme.fontSizeExtraSmall + text: file.isDownloadingCompleted + ? Format.formatDuration((parent.maximumValue - parent.value)/1000, Formatter.Duration) + : (video.videoData.duration + ? Format.formatDuration(video.videoData.duration, Formatter.Duration) + ', ' + : '') + Format.formatFileSize(file.size || file.expectedSize) + color: Theme.secondaryColor + } + } + + Timer { + id: delayedOverlayHide + interval: 500 + onTriggered: { + if(video.isPlaying) { + page.overlayActive = false + } + } + } + } +} diff --git a/qml/components/messageContent/mediaAlbumPage/ZoomArea.qml b/qml/components/messageContent/mediaAlbumPage/ZoomArea.qml new file mode 100644 index 0000000..0fb04bc --- /dev/null +++ b/qml/components/messageContent/mediaAlbumPage/ZoomArea.qml @@ -0,0 +1,148 @@ +import QtQuick 2.6 +import Sailfish.Silica 1.0 + +SilicaFlickable { + // id + id: flickable + // property declarations + property real zoom + property bool zoomed + // override if needed + property bool zoomEnabled: true + property real minimumZoom: fitZoom + property real maximumZoom: 4 //Math.max(fitZoom, 1) * 3 + + default property alias zoomContentItem: zoomContentItem.data + property alias implicitContentWidth: zoomContentItem.implicitWidth + property alias implicitContentHeight: zoomContentItem.implicitHeight + // factor for "PreserveAspectFit" + readonly property real fitZoom: implicitContentWidth > 0 && implicitContentHeight > 0 + ? Math.min(maximumZoom, width / implicitContentWidth, height / implicitContentHeight) + : 1.0 + readonly property int minimumBoundaryAxis: (implicitContentWidth / implicitContentHeight) > (width / height) ? Qt.Horizontal : Qt.Vertical + + // JavaScript functions + function zoomOut(animated) { + if (zoomed) { + if(animated) { zoomOutAnimation.start() } + else { + zoom = fitZoom + zoomed = false + } + } + } + + // object properties + contentWidth: Math.max(width, zoomContentItem.width) + contentHeight: Math.max(height, zoomContentItem.height) + enabled: !zoomOutAnimation.running && implicitContentWidth > 0 && implicitContentHeight > 0 + flickableDirection: Flickable.HorizontalAndVerticalFlick + interactive: zoomed + // According to Jolla, otherwise pinching would sometimes not work: + pressDelay: 0 + Binding { // Update zoom on orientation changes and set as default + target: flickable + when: !zoomed + property: "zoom" + value: minimumZoom + } + // child objects + + PinchArea { + id: pinchArea + parent: flickable.contentItem + width: flickable.contentWidth + height: flickable.contentHeight + enabled: zoomEnabled && minimumZoom !== maximumZoom && flickable.enabled + onPinchUpdated: { + scrollDecoratorTimer.restart() + var f = flickable; + var requestedZoomFactor = 1.0 + pinch.scale - pinch.previousScale; + var previousWidth = f.contentWidth + var previousHeight = f.contentHeight + var targetWidth + var targetHeight + var targetZoom = requestedZoomFactor * f.zoom; + if (targetZoom < f.minimumZoom) { + f.zoom = f.minimumZoom; + f.zoomed = false; + f.contentX = 0; + f.contentY = 0; + return + } else if(targetZoom >= f.maximumZoom) { + f.zoom = f.maximumZoom; + targetHeight = f.implicitContentHeight * f.zoom + targetWidth = f.implicitContentWidth * f.zoom + } + else if(targetZoom < f.maximumZoom) { + if (f.minimumBoundaryAxis == Qt.Horizontal) { + targetWidth = f.contentWidth * requestedZoomFactor + f.zoom = targetWidth / f.implicitContentWidth + targetHeight = f.implicitContentHeight * f.zoom + } else { + targetHeight = f.contentHeight * requestedZoomFactor + f.zoom = targetHeight / f.implicitContentHeight + targetWidth = f.implicitContentWidth * f.zoom + } + } + // calculate center difference + f.contentX += pinch.previousCenter.x - pinch.center.x + f.contentY += pinch.previousCenter.y - pinch.center.y + // move to new (zoomed) center. this jumps a tiny bit, but is bearable: + if (targetWidth > f.width) + f.contentX -= (previousWidth - targetWidth)/(previousWidth/pinch.previousCenter.x) + if (targetHeight > f.height) + f.contentY -= (previousHeight - targetHeight)/(previousHeight/pinch.previousCenter.y) + + f.zoomed = true + } + onPinchFinished: { + returnToBounds() + } + Item { + id: zoomContentItem + anchors.centerIn: parent + implicitWidth: flickable.width + implicitHeight: flickable.height + width: Math.ceil(implicitWidth * zoom) + height: Math.ceil(implicitHeight * zoom) + } + } + // enable zoom to minimumZoom on click + ParallelAnimation { + id: zoomOutAnimation + NumberAnimation { + target: flickable + properties: "contentX, contentY" + to: 0 + } + NumberAnimation { + target: flickable + property: "zoom" + to: fitZoom + } + onRunningChanged: { + if(!running) { + zoomed = false + } + } + } + + // show scroll decorators when scrolling OR zooming + Timer { + id: scrollDecoratorTimer + readonly property bool moving: flickable.moving + readonly property bool showing: moving || running + onMovingChanged: restart() + interval: 300 + } + + VerticalScrollDecorator { + flickable: flickable + opacity: scrollDecoratorTimer.showing ? 1.0 : 0.0 + } + HorizontalScrollDecorator { + flickable: flickable + opacity: scrollDecoratorTimer.showing ? 1.0 : 0.0 + } +} diff --git a/qml/components/messageContent/mediaAlbumPage/ZoomImage.qml b/qml/components/messageContent/mediaAlbumPage/ZoomImage.qml new file mode 100644 index 0000000..bc3418b --- /dev/null +++ b/qml/components/messageContent/mediaAlbumPage/ZoomImage.qml @@ -0,0 +1,127 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 +import WerkWolf.Fernschreiber 1.0 +import "../../" + +ZoomArea { + // id + id: zoomArea + property var photoData //albumMessages[index].content.photo + property bool active: true + property alias image: image + + signal clicked + + maximumZoom: Math.max(Screen.width, Screen.height) / 200 +// maximumZoom: Math.max(fitZoom, 1) * 3 + implicitContentWidth: image.implicitWidth + implicitContentHeight: image.implicitHeight + zoomEnabled: image.status == Image.Ready + + onActiveChanged: { + if (!active) { + zoomOut() + } + } + + Component.onCompleted: { +// var photoData = albumMessages[index].content.photo; + if (photoData) { + + var biggestIndex = -1 + for (var i = 0; i < photoData.sizes.length; i++) { + if (biggestIndex === -1 || photoData.sizes[i].width > photoData.sizes[biggestIndex].width) { + biggestIndex = i; + } + } + if (biggestIndex > -1) { +// imageDelegate.imageWidth = photoData.sizes[biggestIndex].width; +// imageDelegate.imageHeight = photoData.sizes[biggestIndex].height; + image.sourceSize.width = photoData.sizes[biggestIndex].width + image.sourceSize.height = photoData.sizes[biggestIndex].height + image.fileInformation = photoData.sizes[biggestIndex].photo + + console.log('loading photo', JSON.stringify(image.fileInformation)) + } + } + } + TDLibImage { + id: image + + width: parent.width + height: parent.height + source: file.isDownloadingCompleted ? file.path : "" +// enabled: true //!!file.fileId +// anchors.fill: parent + anchors.centerIn: parent + + fillMode: Image.PreserveAspectFit + asynchronous: true + smooth: !(movingVertically || movingHorizontally) + +// sourceSize.width: Screen.height +// visible: opacity > 0 +// opacity: status === Image.Ready ? 1 : 0 + + Behavior on opacity { FadeAnimator{} } + } +// Label { +// anchors.fill: parent +// text: 'ok?' + image.enabled +' fileid:' +!!(image.file.fileId) +// + '\n - dl?' + image.file.isDownloadingActive +// + '\n completed?' + image.file.isDownloadingCompleted + ' path:'+ image.file.path +// + '\n ' + image.source +// wrapMode: Text.WrapAtWordBoundaryOrAnywhere +// } +// Rectangle { +// color: 'green' +// anchors.fill: image +// opacity: 0.3 + +// } + +// Image { +// id: image +// anchors.fill: parent +// smooth: !(movingVertically || movingHorizontally) +// sourceSize.width: Screen.height +// fillMode: Image.PreserveAspectFit +// asynchronous: true +// cache: false + +// onSourceChanged: { +// zoomOut() +// } + +// opacity: status == Image.Ready ? 1 : 0 +// Behavior on opacity { FadeAnimator{} } +// } + Item { + anchors.fill: parent + + } + MouseArea { + anchors.centerIn: parent + width: zoomArea.contentWidth + height: zoomArea.contentHeight + onClicked: zoomArea.clicked() + } + + + BusyIndicator { + running: image.file.isDownloadingActive && !delayBusyIndicator.running + size: BusyIndicatorSize.Large + anchors.centerIn: parent + parent: zoomArea + Timer { + id: delayBusyIndicator + running: image.file.isDownloadingActive + interval: 1000 + } + } +// Rectangle { +// color: 'green' +// anchors.fill: parent +// parent: zoomArea +// } +} diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index 1808d58..55278fe 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -609,7 +609,8 @@ Page { Connections { target: chatModel onMessagesReceived: { - Debug.log("[ChatPage] Messages received, view has ", chatView.count, " messages, last known message index ", modelIndex, ", own messages were read before index ", lastReadSentIndex); + var proxyIndex = chatProxyModel.mapRowFromSource(modelIndex, -1); + Debug.log("[ChatPage] Messages received, view has ", chatView.count, " messages, last known message index ", proxyIndex, "("+modelIndex+"), own messages were read before index ", lastReadSentIndex); if (totalCount === 0) { if (chatPage.iterativeInitialization) { chatPage.iterativeInitialization = false; @@ -623,9 +624,9 @@ Page { } chatView.lastReadSentIndex = lastReadSentIndex; - chatView.scrollToIndex(modelIndex); + chatView.scrollToIndex(proxyIndex); chatPage.loading = false; - if (chatOverviewItem.visible && modelIndex >= (chatView.count - 10)) { + if (chatOverviewItem.visible && proxyIndex >= (chatView.count - 10)) { chatView.inCooldown = true; chatModel.triggerLoadMoreFuture(); } @@ -669,10 +670,13 @@ Page { chatView.lastReadSentIndex = lastReadSentIndex; } onMessagesIncrementalUpdate: { - Debug.log("Incremental update received. View now has ", chatView.count, " messages, view is on index ", modelIndex, ", own messages were read before index ", lastReadSentIndex); + var proxyIndex = chatProxyModel.mapRowFromSource(modelIndex, -1); + Debug.log("Incremental update received. View now has ", chatView.count, " messages, view is on index ", proxyIndex, "("+modelIndex+"), own messages were read before index ", lastReadSentIndex); chatView.lastReadSentIndex = lastReadSentIndex; if (!chatPage.isInitialized) { - chatView.scrollToIndex(modelIndex); + if (proxyIndex > -1) { + chatView.scrollToIndex(proxyIndex); + } } if (chatView.height > chatView.contentHeight) { Debug.log("[ChatPage] Chat content quite small..."); @@ -748,14 +752,26 @@ Page { onTriggered: { Debug.log("scroll position changed, message index: ", lastQueuedIndex); Debug.log("unread count: ", chatInformation.unread_count); - var messageToRead = chatModel.getMessage(lastQueuedIndex); + var modelIndex = chatProxyModel.mapRowToSource(lastQueuedIndex); + var messageToRead = chatModel.getMessage(modelIndex); if (messageToRead['@type'] === "sponsoredMessage") { Debug.log("sponsored message to read: ", messageToRead.id); tdLibWrapper.viewMessage(chatInformation.id, messageToRead.message_id, false); } else if (chatInformation.unread_count > 0 && lastQueuedIndex > -1) { - Debug.log("message to read: ", messageToRead.id); - if (messageToRead && messageToRead.id) { - tdLibWrapper.viewMessage(chatInformation.id, messageToRead.id, false); + if (messageToRead) { + Debug.log("message to read: ", messageToRead.id); + var messageId = messageToRead.id; + var type = messageToRead.content["@type"]; + if (messageToRead.media_album_id !== '0') { + var albumIds = chatModel.getMessageIdsForAlbum(messageToRead.media_album_id); + if (albumIds.length > 0) { + messageId = albumIds[albumIds.length - 1]; + Debug.log("message to read last album message id: ", messageId); + } + } + if (messageId) { + tdLibWrapper.viewMessage(chatInformation.id, messageId, false); + } } lastQueuedIndex = -1 } @@ -1223,7 +1239,6 @@ Page { readonly property int messageInReplyToHeight: Theme.fontSizeExtraSmall * 2.571428571 + Theme.paddingSmall; readonly property int webPagePreviewHeight: ( (textColumnWidth * 2 / 3) + (6 * Theme.fontSizeExtraSmall) + ( 7 * Theme.paddingSmall) ) readonly property bool pageIsSelecting: chatPage.isSelecting - } function handleScrollPositionChanged() { @@ -1246,6 +1261,9 @@ Page { positionViewAtIndex(index, (mode === undefined) ? ListView.Contain : mode) if(index === chatView.count - 1) { manuallyScrolledToBottom = true; + if(!chatView.atYEnd) { + chatView.positionViewAtEnd(); + } } } } @@ -1278,7 +1296,13 @@ Page { } } - model: chatModel + BoolFilterModel { + id: chatProxyModel + sourceModel: chatModel + filterRoleName: "album_entry_filter" + filterValue: false + } + model: chatProxyModel header: Component { Loader { active: !!chatPage.botInformation @@ -1311,7 +1335,8 @@ Page { } } - function getContentComponentHeight(contentType, content, parentWidth) { + function getContentComponentHeight(contentType, content, parentWidth, albumEntries) { + var unit; switch(contentType) { case "messageAnimatedEmoji": return content.animated_emoji.sticker.height; @@ -1327,6 +1352,10 @@ Page { case "messageVenue": return parentWidth * 0.66666666; // 2 / 3; case "messagePhoto": + if(albumEntries > 0) { + unit = (parentWidth * 0.66666666) + return (albumEntries % 2 !== 0 ? unit * 0.75 : 0) + unit * albumEntries * 0.25 + } var biggest = content.photo.sizes[content.photo.sizes.length - 1]; var aspectRatio = biggest.width/biggest.height; return Math.max(Theme.itemSizeExtraSmall, Math.min(parentWidth * 0.66666666, parentWidth / aspectRatio)); @@ -1335,6 +1364,10 @@ Page { case "messageSticker": return content.sticker.height; case "messageVideo": + if(albumEntries > 0) { + unit = (parentWidth * 0.66666666) + return (albumEntries % 2 !== 0 ? unit * 0.75 : 0) + unit * albumEntries * 0.25 + } return Functions.getVideoHeight(parentWidth, content.video); case "messageVideoNote": return parentWidth @@ -1390,10 +1423,11 @@ Page { chatId: chatModel.chatId myMessage: model.display messageId: model.message_id + messageAlbumMessageIds: model.album_message_ids messageViewCount: model.view_count reactions: model.reactions chatReactions: availableReactions - messageIndex: model.index + messageIndex: chatProxyModel.mapRowToSource(model.index) hasContentComponent: !!myMessage.content && chatView.delegateMessagesContent.indexOf(model.content_type) > -1 canReplyToMessage: chatPage.canSendMessages onReplyToMessage: { @@ -1414,9 +1448,21 @@ Page { id: messageListViewItemSimpleComponent MessageListViewItemSimple {} } - sourceComponent: chatView.simpleDelegateMessages.indexOf(model.content_type) > -1 ? messageListViewItemSimpleComponent : messageListViewItemComponent + Component { + id: messageListViewItemHiddenComponent + Item { + property var myMessage: display + property bool senderIsUser: myMessage.sender_id["@type"] === "messageSenderUser" + property var userInformation: senderIsUser ? tdLibWrapper.getUserInformation(myMessage.sender_id.user_id) : null + property bool isOwnMessage: senderIsUser && chatPage.myUserId === myMessage.sender_id.user_id + height: 1 + } + } + sourceComponent: chatView.simpleDelegateMessages.indexOf(model.content_type) > -1 + ? messageListViewItemSimpleComponent + : messageListViewItemComponent } - VerticalScrollDecorator {} + VerticalScrollDecorator { flickable: chatView } ViewPlaceholder { id: chatViewPlaceholder diff --git a/qml/pages/MediaAlbumPage.qml b/qml/pages/MediaAlbumPage.qml new file mode 100644 index 0000000..77a5caa --- /dev/null +++ b/qml/pages/MediaAlbumPage.qml @@ -0,0 +1,109 @@ +/* + Copyright (C) 2020 Sebastian J. Wolf and other contributors + + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ +// jolla-gallery/pages/FlickableImageView.qml +/* + +FullscreenContentPage + - PagedView (jolla-gallery/FlickableImageView) + - delegate: Loader + - SilicaFlickable (Silica.private/ZoomableFlickable) (Sailfish.Gallery/ImageViewer) + - PinchArea + - dragDetector(?) + - image + - Item (Sailfish.Gallery/GalleryOverlay) + +*/ + +import QtQuick 2.6 +import Sailfish.Silica 1.0 +import WerkWolf.Fernschreiber 1.0 +import "../components" + +import "../components/messageContent/mediaAlbumPage" +import "../js/twemoji.js" as Emoji +import "../js/functions.js" as Functions + +Page { + // id + id: page + // property declarations + + property alias index: pagedView.currentIndex + property alias overlayActive: overlay.active + property alias delegate: pagedView.delegate + property var messages: []; + // message.content.caption.text + palette.colorScheme: Theme.LightOnDark + clip: status !== PageStatus.Active || pageStack.dragInProgress + navigationStyle: PageNavigation.Vertical + backgroundColor: 'black' + allowedOrientations: Orientation.All + // signal declarations + // JavaScript functions + + // object (parent) properties + // large property bindings + // child objects + // states + // transitions + + + + // content + PagedView { + id: pagedView + anchors.fill: parent + model: messages + delegate: Component { + Loader { + id: loader + asynchronous: true + visible: status == Loader.Ready + width: PagedView.contentWidth + height: PagedView.contentHeight + + states: [ + State { + when: model.modelData.content['@type'] === 'messagePhoto' + PropertyChanges { + target: loader + source: "../components/messageContent/mediaAlbumPage/PhotoComponent.qml" + } + }, + State { + when: model.modelData.content['@type'] === 'messageVideo' + PropertyChanges { + target: loader + source: "../components/messageContent/mediaAlbumPage/VideoComponent.qml" + } + } + ] + } + } + } + + // overlay + FullscreenOverlay { + id: overlay + pageCount: messages.length + currentIndex: page.index + message: messages[currentIndex] +// + } +} diff --git a/src/boolfiltermodel.cpp b/src/boolfiltermodel.cpp new file mode 100644 index 0000000..0882292 --- /dev/null +++ b/src/boolfiltermodel.cpp @@ -0,0 +1,153 @@ +/* + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ + +#include "boolfiltermodel.h" + +#define DEBUG_MODULE BoolFilterModel +#include "debuglog.h" + +BoolFilterModel::BoolFilterModel(QObject *parent) : QSortFilterProxyModel(parent) +{ + setDynamicSortFilter(true); +// setFilterCaseSensitivity(Qt::CaseInsensitive); +// setFilterFixedString(QString()); + filterValue = true; +} + +void BoolFilterModel::setSource(QObject *model) +{ + setSourceModel(qobject_cast(model)); +} + +void BoolFilterModel::setSourceModel(QAbstractItemModel *model) +{ + if (sourceModel() != model) { + LOG(model); + QSortFilterProxyModel::setSourceModel(model); + updateFilterRole(); + emit sourceChanged(); + } +} + +QString BoolFilterModel::getFilterRoleName() const +{ + return filterRoleName; +} + +void BoolFilterModel::setFilterRoleName(QString role) +{ + if (filterRoleName != role) { + filterRoleName = role; + LOG(role); + updateFilterRole(); + emit filterRoleNameChanged(); + } +} + +bool BoolFilterModel::getFilterValue() const +{ + return filterValue; +} + +void BoolFilterModel::setFilterValue(bool value) +{ + if(value != filterValue) { + filterValue = value; + invalidateFilter(); + } +} + +int BoolFilterModel::mapRowFromSource(int i, int fallbackDirection) +{ + QModelIndex myIndex = mapFromSource(sourceModel()->index(i, 0)); + LOG("mapping index" << i << "to source model:" << myIndex.row() << "valid?" << myIndex.isValid()); + if(myIndex.isValid()) { + return myIndex.row(); + } + + if(fallbackDirection > 0) { + int max = sourceModel()->rowCount(); + i += 1; + while (i < max) { + myIndex = mapFromSource(sourceModel()->index(i, 0)); + + LOG("fallback ++ " << i << "to source model:" << myIndex.row() << "valid?" << myIndex.isValid()); + if(myIndex.isValid()) { + return myIndex.row(); + } + i += 1; + } + } else if(fallbackDirection < 0) { + i -= 1; + while (i > -1) { + myIndex = mapFromSource(sourceModel()->index(i, 0)); + LOG("fallback -- " << i << "to source model:" << myIndex.row() << "valid?" << myIndex.isValid()); + if(myIndex.isValid()) { + return myIndex.row(); + } + i -= 1; + } + } + + return myIndex.row(); // may still be -1 +} + +int BoolFilterModel::mapRowToSource(int i) +{ + QModelIndex sourceIndex = mapToSource(index(i, 0)); + return sourceIndex.row(); +} +bool BoolFilterModel::filterAcceptsRow(int sourceRow, + const QModelIndex &sourceParent) const + { +// sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(); //.toString().contains( /*string for column 0*/ )) +// LOG("Filter Role " << filterRole()); +// QModelIndex index = this->sourceModel()->index(sourceRow,1,sourceParent); +// sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(filterRole()).toBool(); +// LOG("Filter index DATA"<< sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(filterRole())); //<< index << index.isValid()); +// LOG("Filter parent " << sourceParent << sourceParent.isValid()); +// LOG("Filter Model Value" << sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(filterRole()).toBool()); +// LOG("Filter Model filterValue" << filterValue); +// LOG("Filter Model result" << (sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(filterRole()).toBool() == filterValue)); +// LOG("Filter Model MESSAGE" << sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data()); + return sourceModel()->index(sourceRow, 0, sourceParent.child(sourceRow, 0)).data(filterRole()).toBool() == filterValue; + } + +int BoolFilterModel::findRole(QAbstractItemModel *model, QString role) +{ + if (model && !role.isEmpty()) { + const QByteArray roleName(role.toUtf8()); + const QHash roleMap(model->roleNames()); + const QList roles(roleMap.keys()); + const int n = roles.count(); + for (int i = 0; i < n; i++) { + const QByteArray name(roleMap.value(roles.at(i))); + if (name == roleName) { + LOG(role << roles.at(i)); + return roles.at(i); + } + } + LOG("Unknown role" << role); + } + return -1; +} + +void BoolFilterModel::updateFilterRole() +{ + const int role = findRole(sourceModel(), filterRoleName); + setFilterRole((role >= 0) ? role : Qt::DisplayRole); +} diff --git a/src/boolfiltermodel.h b/src/boolfiltermodel.h new file mode 100644 index 0000000..770b8d3 --- /dev/null +++ b/src/boolfiltermodel.h @@ -0,0 +1,63 @@ +/* + This file is part of Fernschreiber. + + Fernschreiber is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Fernschreiber is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fernschreiber. If not, see . +*/ + +#ifndef BOOLFILTERMODEL_H +#define BOOLFILTERMODEL_H + +#include + +class BoolFilterModel : public QSortFilterProxyModel +{ + Q_OBJECT + Q_PROPERTY(QString filterRoleName READ getFilterRoleName WRITE setFilterRoleName NOTIFY filterRoleNameChanged) + Q_PROPERTY(bool filterValue READ getFilterValue WRITE setFilterValue NOTIFY filterValueChanged) + Q_PROPERTY(QObject* sourceModel READ sourceModel WRITE setSource NOTIFY sourceChanged) + +public: + BoolFilterModel(QObject *parent = Q_NULLPTR); + + void setSource(QObject* model); + void setSourceModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + + + QString getFilterRoleName() const; + void setFilterRoleName(QString role); + + bool getFilterValue() const; + void setFilterValue(bool value); + Q_INVOKABLE int mapRowFromSource(int i, int fallbackDirection); + Q_INVOKABLE int mapRowToSource(int i); + +signals: + void sourceChanged(); + void filterRoleNameChanged(); + void filterValueChanged(); + +private slots: + void updateFilterRole(); + +private: + static int findRole(QAbstractItemModel *model, QString role); + +private: + QString filterRoleName; + bool filterValue; +protected: + bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; +}; + +#endif // BOOLFILTERMODEL_H diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 96c40ce..7dad231 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -30,6 +30,7 @@ namespace { const QString ID("id"); const QString CONTENT("content"); const QString CHAT_ID("chat_id"); + const QString DATE("date"); const QString PHOTO("photo"); const QString SMALL("small"); const QString UNREAD_COUNT("unread_count"); @@ -48,6 +49,7 @@ namespace { // "view_count": 47 // } const QString TYPE_MESSAGE_INTERACTION_INFO("messageInteractionInfo"); + const QString MEDIA_ALBUM_ID("media_album_id"); const QString INTERACTION_INFO("interaction_info"); const QString VIEW_COUNT("view_count"); const QString REACTIONS("reactions"); @@ -63,7 +65,9 @@ public: RoleMessageId, RoleMessageContentType, RoleMessageViewCount, - RoleMessageReactions + RoleMessageReactions, + RoleMessageAlbumEntryFilter, + RoleMessageAlbumMessageIds, }; enum RoleFlag { @@ -71,7 +75,9 @@ public: RoleFlagMessageId = 0x02, RoleFlagMessageContentType = 0x04, RoleFlagMessageViewCount = 0x08, - RoleFlagMessageReactions = 0x16 + RoleFlagMessageReactions = 0x16, + RoleFlagMessageAlbumEntryFilter = 0x32, + RoleFlagMessageAlbumMessageIds = 0x64 }; MessageData(const QVariantMap &data, qlonglong msgid); @@ -86,12 +92,16 @@ public: uint updateViewCount(const QVariantMap &interactionInfo); uint updateInteractionInfo(const QVariantMap &interactionInfo); uint updateReactions(const QVariantMap &interactionInfo); + uint updateAlbumEntryFilter(const bool isAlbumChild); + uint updateAlbumEntryMessageIds(const QVariantList &newAlbumMessageIds); QVector diff(const MessageData *message) const; QVector setMessageData(const QVariantMap &data); QVector setContent(const QVariantMap &content); QVector setReplyMarkup(const QVariantMap &replyMarkup); QVector setInteractionInfo(const QVariantMap &interactionInfo); + QVector setAlbumEntryFilter(bool isAlbumChild); + QVector setAlbumEntryMessageIds(const QVariantList &newAlbumMessageIds); int senderUserId() const; qlonglong senderChatId() const; @@ -104,6 +114,8 @@ public: QString messageContentType; int viewCount; QVariantList reactions; + bool albumEntryFilter; + QVariantList albumMessageIds; }; ChatModel::MessageData::MessageData(const QVariantMap &data, qlonglong msgid) : @@ -112,7 +124,9 @@ ChatModel::MessageData::MessageData(const QVariantMap &data, qlonglong msgid) : messageType(data.value(_TYPE).toString()), messageContentType(data.value(CONTENT).toMap().value(_TYPE).toString()), viewCount(data.value(INTERACTION_INFO).toMap().value(VIEW_COUNT).toInt()), - reactions(data.value(INTERACTION_INFO).toMap().value(REACTIONS).toList()) + reactions(data.value(INTERACTION_INFO).toMap().value(REACTIONS).toList()), + albumEntryFilter(false), + albumMessageIds(QVariantList()) { } @@ -134,6 +148,12 @@ QVector ChatModel::MessageData::flagsToRoles(uint flags) if (flags & RoleFlagMessageReactions) { roles.append(RoleMessageReactions); } + if (flags & RoleFlagMessageAlbumEntryFilter) { + roles.append(RoleMessageAlbumEntryFilter); + } + if (flags & RoleFlagMessageAlbumMessageIds) { + roles.append(RoleMessageAlbumMessageIds); + } return roles; } @@ -169,6 +189,12 @@ QVector ChatModel::MessageData::diff(const MessageData *message) const if (message->reactions != reactions) { roles.append(RoleMessageReactions); } + if (message->albumEntryFilter != albumEntryFilter) { + roles.append(RoleMessageAlbumEntryFilter); + } + if (message->albumMessageIds != albumMessageIds) { + roles.append(RoleMessageAlbumMessageIds); + } } return roles; } @@ -237,6 +263,37 @@ uint ChatModel::MessageData::updateReactions(const QVariantMap &interactionInfo) return (reactions == oldReactions) ? 0 : RoleFlagMessageReactions; } +uint ChatModel::MessageData::updateAlbumEntryFilter(const bool isAlbumChild) +{ + LOG("Updating album filter... for id " << messageId << " value:" << isAlbumChild << "previously" << albumEntryFilter); + const bool oldAlbumFiltered = albumEntryFilter; + albumEntryFilter = isAlbumChild; + return (isAlbumChild == oldAlbumFiltered) ? 0 : RoleFlagMessageAlbumEntryFilter; +} + + +QVector ChatModel::MessageData::setAlbumEntryFilter(bool isAlbumChild) +{ + LOG("setAlbumEntryFilter"); + return flagsToRoles(updateAlbumEntryFilter(isAlbumChild)); +} + +uint ChatModel::MessageData::updateAlbumEntryMessageIds(const QVariantList &newAlbumMessageIds) +{ + LOG("Updating albumMessageIds... id" << messageId); + LOG(" Updating albumMessageIds..." << newAlbumMessageIds << "previously" << albumMessageIds << "same?" << (newAlbumMessageIds == albumMessageIds)); + const QVariantList oldAlbumMessageIds = albumMessageIds; + albumMessageIds = newAlbumMessageIds; + + LOG(" Updating albumMessageIds... same again?" << (newAlbumMessageIds == oldAlbumMessageIds)); + return (newAlbumMessageIds == oldAlbumMessageIds) ? 0 : RoleFlagMessageAlbumMessageIds; +} + +QVector ChatModel::MessageData::setAlbumEntryMessageIds(const QVariantList &newAlbumMessageIds) +{ + return flagsToRoles(updateAlbumEntryMessageIds(newAlbumMessageIds)); +} + QVector ChatModel::MessageData::setInteractionInfo(const QVariantMap &info) { return flagsToRoles(updateInteractionInfo(info)); @@ -295,6 +352,8 @@ QHash ChatModel::roleNames() const roles.insert(MessageData::RoleMessageContentType, "content_type"); roles.insert(MessageData::RoleMessageViewCount, "view_count"); roles.insert(MessageData::RoleMessageReactions, "reactions"); + roles.insert(MessageData::RoleMessageAlbumEntryFilter, "album_entry_filter"); + roles.insert(MessageData::RoleMessageAlbumMessageIds, "album_message_ids"); return roles; } @@ -314,6 +373,8 @@ QVariant ChatModel::data(const QModelIndex &index, int role) const case MessageData::RoleMessageContentType: return message->messageContentType; case MessageData::RoleMessageViewCount: return message->viewCount; case MessageData::RoleMessageReactions: return message->reactions; + case MessageData::RoleMessageAlbumEntryFilter: return message->albumEntryFilter; + case MessageData::RoleMessageAlbumMessageIds: return message->albumMessageIds; } } return QVariant(); @@ -331,6 +392,7 @@ void ChatModel::clear(bool contentOnly) qDeleteAll(messages); messages.clear(); messageIndexMap.clear(); + albumMessageMap.clear(); endResetModel(); } @@ -356,6 +418,7 @@ void ChatModel::initialize(const QVariantMap &chatInformation) this->chatId = chatId; this->messages.clear(); this->messageIndexMap.clear(); + this->albumMessageMap.clear(); this->searchQuery.clear(); endResetModel(); emit chatIdChanged(); @@ -420,6 +483,36 @@ int ChatModel::getMessageIndex(qlonglong messageId) return -1; } +QVariantList ChatModel::getMessageIdsForAlbum(qlonglong albumId) +{ + QVariantList foundMessages; + if(albumMessageMap.contains(albumId)) { // there should be only one in here + QHash< qlonglong, QVariantList >::iterator i = albumMessageMap.find(albumId); + return i.value(); + } + return foundMessages; +} + +QVariantList ChatModel::getMessagesForAlbum(qlonglong albumId, int startAt) +{ + LOG("getMessagesForAlbumId" << albumId); + QVariantList messageIds = getMessageIdsForAlbum(albumId); + int count = messageIds.size(); + if ( count == 0) { + return messageIds; + } + QVariantList foundMessages; + for (int messageNum = startAt; messageNum < count; ++messageNum) { + const int position = messageIndexMap.value(messageIds.at(messageNum).toLongLong(), -1); + if(position >= 0 && position < messages.size()) { + foundMessages.append(messages.at(position)->messageData); + } else { + LOG("Not found in messages: #"<< messageNum); + } + } + return foundMessages; +} + int ChatModel::getLastReadMessageIndex() { LOG("Obtaining last read message index"); @@ -477,7 +570,8 @@ void ChatModel::handleMessagesReceived(const QVariantList &messages, int totalCo const qlonglong messageId = messageData.value(ID).toLongLong(); if (messageId && messageData.value(CHAT_ID).toLongLong() == chatId && !messageIndexMap.contains(messageId)) { LOG("New message will be added:" << messageId); - messagesToBeAdded.append(new MessageData(messageData, messageId)); + MessageData* message = new MessageData(messageData, messageId); + messagesToBeAdded.append(message); } } @@ -485,6 +579,7 @@ void ChatModel::handleMessagesReceived(const QVariantList &messages, int totalCo if (!messagesToBeAdded.isEmpty()) { insertMessages(messagesToBeAdded); + setMessagesAlbum(messagesToBeAdded); } // First call only returns a few messages, we need to get a little more than that... @@ -540,6 +635,7 @@ void ChatModel::handleNewMessageReceived(qlonglong chatId, const QVariantMap &me QList messagesToBeAdded; messagesToBeAdded.append(new MessageData(message, messageId)); insertMessages(messagesToBeAdded); + setMessagesAlbum(messagesToBeAdded); emit newMessageReceived(message); } else { LOG("New message in this chat, but not relevant as less recent messages need to be loaded first!"); @@ -591,6 +687,7 @@ void ChatModel::handleMessageSendSucceeded(qlonglong messageId, qlonglong oldMes messages.replace(pos, newMessage); messageIndexMap.remove(oldMessageId); messageIndexMap.insert(messageId, pos); + // TODO when we support sending album messages, handle ID change in albumMessageMap const QVector changedRoles(newMessage->diff(oldMessage)); delete oldMessage; LOG("Message was replaced at index" << pos); @@ -635,7 +732,8 @@ void ChatModel::handleMessageContentUpdated(qlonglong chatId, qlonglong messageI LOG("We know the message that was updated" << messageId); const int pos = messageIndexMap.value(messageId, -1); if (pos >= 0) { - const QVector changedRoles(messages.at(pos)->setContent(newContent)); + MessageData* messageData = messages.at(pos); + const QVector changedRoles(messageData->setContent(newContent)); LOG("Message was updated at index" << pos); const QModelIndex messageIndex(index(pos)); emit dataChanged(messageIndex, messageIndex, changedRoles); @@ -664,7 +762,8 @@ void ChatModel::handleMessageEditedUpdated(qlonglong chatId, qlonglong messageId LOG("We know the message that was updated" << messageId); const int pos = messageIndexMap.value(messageId, -1); if (pos >= 0) { - const QVector changedRoles(messages.at(pos)->setReplyMarkup(replyMarkup)); + MessageData* messageData = messages.at(pos); + const QVector changedRoles(messageData->setReplyMarkup(replyMarkup)); LOG("Message was edited at index" << pos); const QModelIndex messageIndex(index(pos)); emit dataChanged(messageIndex, messageIndex, changedRoles); @@ -709,18 +808,31 @@ void ChatModel::handleMessagesDeleted(qlonglong chatId, const QList & } } + void ChatModel::removeRange(int firstDeleted, int lastDeleted) { if (firstDeleted >= 0 && firstDeleted <= lastDeleted) { LOG("Removing range" << firstDeleted << "..." << lastDeleted << "| current messages size" << messages.size()); beginRemoveRows(QModelIndex(), firstDeleted, lastDeleted); + QList rescanAlbumIds; for (int i = firstDeleted; i <= lastDeleted; i++) { MessageData *message = messages.at(i); messageIndexMap.remove(message->messageId); + + qlonglong albumId = message->messageData.value(MEDIA_ALBUM_ID).toLongLong(); + if(albumId != 0 && albumMessageMap.contains(albumId)) { + rescanAlbumIds.append(albumId); + } delete message; } messages.erase(messages.begin() + firstDeleted, messages.begin() + (lastDeleted + 1)); + // rebuild following messageIndexMap + for(int i = firstDeleted; i < messages.size(); ++i) { + messageIndexMap.insert(messages.at(i)->messageId, i); + } endRemoveRows(); + + updateAlbumMessages(rescanAlbumIds, true); } } @@ -757,7 +869,7 @@ void ChatModel::appendMessages(const QList newMessages) beginInsertRows(QModelIndex(), oldSize, oldSize + count - 1); messages.append(newMessages); for (int i = 0; i < count; i++) { - // Appens new indeces to the map + // Append new indices to the map messageIndexMap.insert(newMessages.at(i)->messageId, oldSize + i); } endInsertRows(); @@ -785,6 +897,90 @@ void ChatModel::prependMessages(const QList newMessages) endInsertRows(); } +void ChatModel::updateAlbumMessages(qlonglong albumId, bool checkDeleted) +{ + if(albumMessageMap.contains(albumId)) { + const QVariantList empty; + QHash< qlonglong, QVariantList >::iterator album = albumMessageMap.find(albumId); + QVariantList messageIds = album.value(); + std::sort(messageIds.begin(), messageIds.end()); + int count; + // first: clear deleted messageIds: + if(checkDeleted) { + QVariantList::iterator it = messageIds.begin(); + while (it != messageIds.end()) { + if (!messageIndexMap.contains(it->toLongLong())) { + it = messageIds.erase(it); + } + else { + ++it; + } + } + } + // second: remaining ones still exist + count = messageIds.size(); + if(count == 0) { + albumMessageMap.remove(albumId); + } else { + for (int i = 0; i < count; i++) { + const int position = messageIndexMap.value(messageIds.at(i).toLongLong(), -1); + if(position > -1) { + // set list for first entry, empty for all others + QVector changedRolesFilter; + QVector changedRolesIds; + + QModelIndex messageIndex(index(position)); + if(i == 0) { + changedRolesFilter = messages.at(position)->setAlbumEntryFilter(false); + changedRolesIds = messages.at(position)->setAlbumEntryMessageIds(messageIds); + } else { + changedRolesFilter = messages.at(position)->setAlbumEntryFilter(true); + changedRolesIds = messages.at(position)->setAlbumEntryMessageIds(empty); + } + emit dataChanged(messageIndex, messageIndex, changedRolesIds); + emit dataChanged(messageIndex, messageIndex, changedRolesFilter); + } + } + } + albumMessageMap.insert(albumId, messageIds); + } +} + +void ChatModel::updateAlbumMessages(QList albumIds, bool checkDeleted) +{ + const int albumsCount = albumIds.size(); + for (int i = 0; i < albumsCount; i++) { + updateAlbumMessages(albumIds.at(i), checkDeleted); + } +} + +void ChatModel::setMessagesAlbum(const QList newMessages) +{ + const int count = newMessages.size(); + for (int i = 0; i < count; i++) { + setMessagesAlbum(newMessages.at(i)); + } +} + +void ChatModel::setMessagesAlbum(MessageData *message) +{ + qlonglong albumId = message->messageData.value(MEDIA_ALBUM_ID).toLongLong(); + if (albumId > 0 && (message->messageContentType != "messagePhoto" || message->messageContentType != "messageVideo")) { + qlonglong messageId = message->messageId; + + if(albumMessageMap.contains(albumId)) { + // find message id within album: + QHash< qlonglong, QVariantList >::iterator i = albumMessageMap.find(albumId); + if(!i.value().contains(messageId)) { + i.value().append(messageId); + } + } else { // new album id + albumMessageMap.insert(albumId, QVariantList() << messageId); + } + updateAlbumMessages(albumId, false); + } +} + QVariantMap ChatModel::enhanceMessage(const QVariantMap &message) { QVariantMap enhancedMessage = message; diff --git a/src/chatmodel.h b/src/chatmodel.h index bbf1b4a..e2e8bbc 100644 --- a/src/chatmodel.h +++ b/src/chatmodel.h @@ -44,6 +44,8 @@ public: Q_INVOKABLE void triggerLoadMoreFuture(); Q_INVOKABLE QVariantMap getChatInformation(); Q_INVOKABLE QVariantMap getMessage(int index); + Q_INVOKABLE QVariantList getMessageIdsForAlbum(qlonglong albumId); + Q_INVOKABLE QVariantList getMessagesForAlbum(qlonglong albumId, int startAt); Q_INVOKABLE int getLastReadMessageIndex(); Q_INVOKABLE void setSearchQuery(const QString newSearchQuery); @@ -85,6 +87,10 @@ private: void insertMessages(const QList newMessages); void appendMessages(const QList newMessages); void prependMessages(const QList newMessages); + void updateAlbumMessages(qlonglong albumId, bool checkDeleted); + void updateAlbumMessages(QList albumIds, bool checkDeleted); + void setMessagesAlbum(const QList newMessages); + void setMessagesAlbum(MessageData *message); QVariantMap enhanceMessage(const QVariantMap &message); int calculateLastKnownMessageId(); int calculateLastReadSentMessageId(); @@ -95,6 +101,7 @@ private: TDLibWrapper *tdLibWrapper; QList messages; QHash messageIndexMap; + QHash albumMessageMap; QVariantMap chatInformation; qlonglong chatId; bool inReload; diff --git a/src/harbour-fernschreiber.cpp b/src/harbour-fernschreiber.cpp index a584ea7..a6dfd66 100644 --- a/src/harbour-fernschreiber.cpp +++ b/src/harbour-fernschreiber.cpp @@ -51,6 +51,7 @@ #include "processlauncher.h" #include "stickermanager.h" #include "textfiltermodel.h" +#include "boolfiltermodel.h" #include "tgsplugin.h" #include "fernschreiberutils.h" #include "knownusersmodel.h" @@ -130,6 +131,7 @@ int main(int argc, char *argv[]) qmlRegisterType(uri, 1, 0, "TDLibFile"); qmlRegisterType(uri, 1, 0, "NamedAction"); qmlRegisterType(uri, 1, 0, "TextFilterModel"); + qmlRegisterType(uri, 1, 0, "BoolFilterModel"); qmlRegisterType(uri, 1, 0, "ChatPermissionFilterModel"); qmlRegisterSingletonType(uri, 1, 0, "DebugLog", DebugLogJS::createSingleton); From 0817e8c05bef05ef50c70298c70c4b3010c864bc Mon Sep 17 00:00:00 2001 From: jgibbon Date: Thu, 9 May 2024 21:58:57 +0200 Subject: [PATCH 05/12] rebuild translation files + slight cleanup --- translations/harbour-fernschreiber-de.ts | 11 +++++++++++ translations/harbour-fernschreiber-en.ts | 11 +++++++++++ translations/harbour-fernschreiber-es.ts | 11 +++++++++++ translations/harbour-fernschreiber-fi.ts | 11 +++++++++++ translations/harbour-fernschreiber-fr.ts | 11 +++++++++++ translations/harbour-fernschreiber-hu.ts | 10 ++++++++++ translations/harbour-fernschreiber-it.ts | 11 +++++++++++ translations/harbour-fernschreiber-pl.ts | 12 ++++++++++++ translations/harbour-fernschreiber-ru.ts | 12 ++++++++++++ translations/harbour-fernschreiber-sk.ts | 12 ++++++++++++ translations/harbour-fernschreiber-sv.ts | 11 +++++++++++ translations/harbour-fernschreiber-zh_CN.ts | 10 ++++++++++ translations/harbour-fernschreiber.ts | 11 +++++++++++ 13 files changed, 144 insertions(+) diff --git a/translations/harbour-fernschreiber-de.ts b/translations/harbour-fernschreiber-de.ts index 1662801..9712a28 100644 --- a/translations/harbour-fernschreiber-de.ts +++ b/translations/harbour-fernschreiber-de.ts @@ -903,6 +903,17 @@ hat eine Videonachricht geschickt + + FullscreenOverlay + + Forward %Ln messages + dialog header + + %Ln Nachricht weiterleiten + %Ln Nachrichten weiterleiten + + + ImagePage diff --git a/translations/harbour-fernschreiber-en.ts b/translations/harbour-fernschreiber-en.ts index 345cc41..4251ba4 100644 --- a/translations/harbour-fernschreiber-en.ts +++ b/translations/harbour-fernschreiber-en.ts @@ -905,6 +905,17 @@ messages sent a video note + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Forward %Ln message + Forward %Ln messages + + + ImagePage diff --git a/translations/harbour-fernschreiber-es.ts b/translations/harbour-fernschreiber-es.ts index 5b9cf21..3754b0d 100644 --- a/translations/harbour-fernschreiber-es.ts +++ b/translations/harbour-fernschreiber-es.ts @@ -903,6 +903,17 @@ envió nota de video + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Reenviar %Ln mensaje + Reenviar %Ln mensajes + + + ImagePage diff --git a/translations/harbour-fernschreiber-fi.ts b/translations/harbour-fernschreiber-fi.ts index ca6341c..df31ce8 100644 --- a/translations/harbour-fernschreiber-fi.ts +++ b/translations/harbour-fernschreiber-fi.ts @@ -904,6 +904,17 @@ lähetti videoviestin + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Välitä %Ln viesti + Välitä %Ln viestiä + + + ImagePage diff --git a/translations/harbour-fernschreiber-fr.ts b/translations/harbour-fernschreiber-fr.ts index 9cbf533..5cd7743 100644 --- a/translations/harbour-fernschreiber-fr.ts +++ b/translations/harbour-fernschreiber-fr.ts @@ -903,6 +903,17 @@ a envoyé une note vidéo + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Transférer %Ln message + Transférer %Ln messages + + + ImagePage diff --git a/translations/harbour-fernschreiber-hu.ts b/translations/harbour-fernschreiber-hu.ts index e07e622..745dfff 100644 --- a/translations/harbour-fernschreiber-hu.ts +++ b/translations/harbour-fernschreiber-hu.ts @@ -889,6 +889,16 @@ + + FullscreenOverlay + + Forward %Ln messages + dialog header + + + + + ImagePage diff --git a/translations/harbour-fernschreiber-it.ts b/translations/harbour-fernschreiber-it.ts index 8920edd..cf66d21 100644 --- a/translations/harbour-fernschreiber-it.ts +++ b/translations/harbour-fernschreiber-it.ts @@ -903,6 +903,17 @@ ha inviato un videomessaggio + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Inoltra %Ln messaggio + Inoltra %Ln messaggi + + + ImagePage diff --git a/translations/harbour-fernschreiber-pl.ts b/translations/harbour-fernschreiber-pl.ts index 2cf1221..4b8d589 100644 --- a/translations/harbour-fernschreiber-pl.ts +++ b/translations/harbour-fernschreiber-pl.ts @@ -917,6 +917,18 @@ wysłał notatkę video + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Przekaż %Ln wiadomość + Przekaż %Ln wiadomości + Przekaż %Ln wiadomości + + + ImagePage diff --git a/translations/harbour-fernschreiber-ru.ts b/translations/harbour-fernschreiber-ru.ts index 76461d8..6724c98 100644 --- a/translations/harbour-fernschreiber-ru.ts +++ b/translations/harbour-fernschreiber-ru.ts @@ -920,6 +920,18 @@ отправил(а) видео заметку + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Перенаправить %Ln сообщение + Перенаправить %Ln сообщения + Перенаправить %Ln сообщений + + + ImagePage diff --git a/translations/harbour-fernschreiber-sk.ts b/translations/harbour-fernschreiber-sk.ts index c5dc16f..d7105c9 100644 --- a/translations/harbour-fernschreiber-sk.ts +++ b/translations/harbour-fernschreiber-sk.ts @@ -917,6 +917,18 @@ poslal video-poznámku + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Postúpená %Ln správa + Postúpené %Ln správy + Postúpených %Ln správ + + + ImagePage diff --git a/translations/harbour-fernschreiber-sv.ts b/translations/harbour-fernschreiber-sv.ts index 6617ef1..4ed22c8 100644 --- a/translations/harbour-fernschreiber-sv.ts +++ b/translations/harbour-fernschreiber-sv.ts @@ -903,6 +903,17 @@ skickade ett videomeddelande + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Vidarebefordra %Ln meddelande + Vidarebefordra %Ln meddelanden + + + ImagePage diff --git a/translations/harbour-fernschreiber-zh_CN.ts b/translations/harbour-fernschreiber-zh_CN.ts index 63b71e5..674f768 100644 --- a/translations/harbour-fernschreiber-zh_CN.ts +++ b/translations/harbour-fernschreiber-zh_CN.ts @@ -890,6 +890,16 @@ 发送视频消息 + + FullscreenOverlay + + Forward %Ln messages + dialog header + + 转发 %Ln 则消息 + + + ImagePage diff --git a/translations/harbour-fernschreiber.ts b/translations/harbour-fernschreiber.ts index d508bc5..ddfce3b 100644 --- a/translations/harbour-fernschreiber.ts +++ b/translations/harbour-fernschreiber.ts @@ -903,6 +903,17 @@ sent a video note + + FullscreenOverlay + + Forward %Ln messages + dialog header + + Forward %Ln message + Forward %Ln messages + + + ImagePage From 4eb718b02ede38b4204916068bc3514abbb12852 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Tue, 14 May 2024 18:00:32 +0300 Subject: [PATCH 06/12] Fix scroll to quoted message #566 --- qml/pages/ChatPage.qml | 2 +- src/chatmodel.cpp | 15 +++++++++++++-- src/chatmodel.h | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index 55278fe..8cafe57 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -417,7 +417,7 @@ Page { chatPage.messageIdToScrollTo = messageId } if (chatPage.messageIdToScrollTo && chatPage.messageIdToScrollTo != "") { - var index = chatModel.getMessageIndex(chatPage.messageIdToScrollTo); + var index = chatModel.getDisplayedMessageIndex(chatPage.messageIdToScrollTo); if(index !== -1) { chatPage.messageIdToScrollTo = ""; chatView.scrollToIndex(index); diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 7dad231..2c54827 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -472,13 +472,24 @@ QVariantMap ChatModel::getMessage(int index) return QVariantMap(); } -int ChatModel::getMessageIndex(qlonglong messageId) +int ChatModel::getDisplayedMessageIndex(qlonglong messageId) { if (messages.size() == 0) { return -1; } if (messageIndexMap.contains(messageId)) { - return messageIndexMap.value(messageId); + int rawIndex = messageIndexMap.value(messageId); + // We need to substract number of albums which are shown before this item, because that's the index it's displayed on screen at. + int realIndex = rawIndex; + for(int i = 0; i < rawIndex; i++) { + MessageData *message = messages.at(i); + if(message->albumMessageIds.count() > 0) { + realIndex -= (message->albumMessageIds.count() - 1); + } + } + if(realIndex < -1) + return -1; + return realIndex; } return -1; } diff --git a/src/chatmodel.h b/src/chatmodel.h index e2e8bbc..07753b7 100644 --- a/src/chatmodel.h +++ b/src/chatmodel.h @@ -49,7 +49,7 @@ public: Q_INVOKABLE int getLastReadMessageIndex(); Q_INVOKABLE void setSearchQuery(const QString newSearchQuery); - Q_INVOKABLE int getMessageIndex(qlonglong messageId); + Q_INVOKABLE int getDisplayedMessageIndex(qlonglong messageId); QVariantMap smallPhoto() const; qlonglong getChatId() const; From fd7563bc88af18675de9393c0ba7a31ad551bb56 Mon Sep 17 00:00:00 2001 From: Slava Monich Date: Wed, 15 May 2024 05:03:14 +0300 Subject: [PATCH 07/12] Force xz rpm compression That improves the chances of rpm being installable on a system that doesn't support zstd compression --- rpm/harbour-fernschreiber.spec | 1 + rpm/harbour-fernschreiber.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/rpm/harbour-fernschreiber.spec b/rpm/harbour-fernschreiber.spec index 224bf45..731268b 100644 --- a/rpm/harbour-fernschreiber.spec +++ b/rpm/harbour-fernschreiber.spec @@ -9,6 +9,7 @@ Name: harbour-fernschreiber # << macros %define __provides_exclude_from ^%{_datadir}/.*$ %define __requires_exclude ^libtdjson.*$ +%define _binary_payload w6.xzdio Summary: Fernschreiber is a Telegram client for Sailfish OS Version: 0.17 diff --git a/rpm/harbour-fernschreiber.yaml b/rpm/harbour-fernschreiber.yaml index 82dd0f5..368792c 100644 --- a/rpm/harbour-fernschreiber.yaml +++ b/rpm/harbour-fernschreiber.yaml @@ -34,6 +34,7 @@ PkgConfigBR: Macros: - '__provides_exclude_from;^%{_datadir}/.*$' - '__requires_exclude;^libtdjson.*$' + - '_binary_payload;w6.xzdio' # Build dependencies without a pkgconfig setup can be listed here PkgBR: From 23d361a987d429616ab355930eeffaba2864605a Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Sat, 15 Jun 2024 14:14:35 +0300 Subject: [PATCH 08/12] Avoid UI updates in Chat selection screen when forwarding a chat, by cloning the chat list model. --- src/chatlistmodel.cpp | 28 ++++++++++++++++++++++++++++ src/chatlistmodel.h | 1 + src/chatpermissionfiltermodel.cpp | 11 ++++++++++- src/chatpermissionfiltermodel.h | 2 +- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/chatlistmodel.cpp b/src/chatlistmodel.cpp index a361c18..7edfcb4 100644 --- a/src/chatlistmodel.cpp +++ b/src/chatlistmodel.cpp @@ -91,6 +91,7 @@ public: QVector updateLastMessage(const QVariantMap &message); QVector updateGroup(const TDLibWrapper::Group *group); QVector updateSecretChat(const QVariantMap &secretChatDetails); + ChatData* clone(); TDLibWrapper *tdLibWrapper; public: @@ -384,6 +385,24 @@ QVector ChatListModel::ChatData::updateSecretChat(const QVariantMap &secret return changedRoles; } +ChatListModel::ChatData* ChatListModel::ChatData::clone() { + QVariantMap clonedChatData; + + QList keys = chatData.keys(); + for(int i = 0; i < keys.count(); i++) { + clonedChatData.insert(keys[i], QVariant(chatData[keys[i]])); + } + ChatData* res = new ChatData(tdLibWrapper, clonedChatData); + res->chatId = chatId; + res->order = order; + res->groupId = groupId; + res->verified = verified; + res->chatType = chatType; + res->memberStatus = memberStatus; + res->secretChatState = secretChatState; + return res; +} + ChatListModel::ChatListModel(TDLibWrapper *tdLibWrapper, AppSettings *appSettings) : showHiddenChats(false) { this->tdLibWrapper = tdLibWrapper; @@ -426,6 +445,15 @@ ChatListModel::~ChatListModel() qDeleteAll(hiddenChats.values()); } +ChatListModel* ChatListModel::clone() { + ChatListModel* res = new ChatListModel(tdLibWrapper, appSettings); + res->relativeTimeRefreshTimer->stop(); + for(int i = 0; i < chatList.count(); i++) { + res->chatList.append(chatList.at(i)->clone()); + } + return res; +} + void ChatListModel::reset() { chatList.clear(); diff --git a/src/chatlistmodel.h b/src/chatlistmodel.h index af875df..f40cd12 100644 --- a/src/chatlistmodel.h +++ b/src/chatlistmodel.h @@ -75,6 +75,7 @@ public: bool showAllChats() const; void setShowAllChats(bool showAll); + ChatListModel* clone(); private slots: void handleChatDiscovered(const QString &chatId, const QVariantMap &chatInformation); diff --git a/src/chatpermissionfiltermodel.cpp b/src/chatpermissionfiltermodel.cpp index cd99678..6a53cf5 100644 --- a/src/chatpermissionfiltermodel.cpp +++ b/src/chatpermissionfiltermodel.cpp @@ -33,7 +33,9 @@ ChatPermissionFilterModel::ChatPermissionFilterModel(QObject *parent) : QSortFil void ChatPermissionFilterModel::setSource(QObject *model) { - setSourceModel(qobject_cast(model)); + ChatListModel* chatListModel = qobject_cast(model); + ChatListModel* chatListModelClone = chatListModel->clone(); + setSourceModel(chatListModelClone); } void ChatPermissionFilterModel::setSourceModel(QAbstractItemModel *model) @@ -45,6 +47,13 @@ void ChatPermissionFilterModel::setSourceModel(QAbstractItemModel *model) } } +ChatPermissionFilterModel::~ChatPermissionFilterModel() { + QAbstractItemModel* _sourceModel = sourceModel(); + if(_sourceModel != nullptr) { + delete _sourceModel; + } +} + TDLibWrapper *ChatPermissionFilterModel::getTDLibWrapper() const { return tdLibWrapper; diff --git a/src/chatpermissionfiltermodel.h b/src/chatpermissionfiltermodel.h index d77b3f6..dc4f05b 100644 --- a/src/chatpermissionfiltermodel.h +++ b/src/chatpermissionfiltermodel.h @@ -31,7 +31,7 @@ class ChatPermissionFilterModel : public QSortFilterProxyModel public: ChatPermissionFilterModel(QObject *parent = Q_NULLPTR); - + ~ChatPermissionFilterModel() override; TDLibWrapper *getTDLibWrapper() const; void setTDLibWrapper(QObject* obj); From e966eb4abd58e5cb7d2d18b2032130fb18016891 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Sat, 15 Jun 2024 15:35:26 +0300 Subject: [PATCH 09/12] tdlibwrapper changes: refactored misleadingly names variables allUsers and to more proper names usersById and usersByName; fixed handleUserUpdated function as it mixed up userInformation parameter with userInformation member variable; made a dedicated method updateUserInformation to update both usersById and usersByName; eliminated unneeded status updates when user status didn't really change (those tend to happen a lot). --- src/tdlibwrapper.cpp | 39 +++++++++++++++++++++++---------------- src/tdlibwrapper.h | 7 ++++--- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/tdlibwrapper.cpp b/src/tdlibwrapper.cpp index 70dcf65..c174e47 100644 --- a/src/tdlibwrapper.cpp +++ b/src/tdlibwrapper.cpp @@ -1573,17 +1573,17 @@ QVariantMap TDLibWrapper::getUserInformation() QVariantMap TDLibWrapper::getUserInformation(const QString &userId) { // LOG("Returning user information for ID" << userId); - return this->allUsers.value(userId).toMap(); + return this->usersById.value(userId).toMap(); } bool TDLibWrapper::hasUserInformation(const QString &userId) { - return this->allUsers.contains(userId); + return this->usersById.contains(userId); } QVariantMap TDLibWrapper::getUserInformationByName(const QString &userName) { - return this->allUserNames.value(userName).toMap(); + return this->usersByName.value(userName).toMap(); } TDLibWrapper::UserPrivacySettingRule TDLibWrapper::getUserPrivacySettingRule(TDLibWrapper::UserPrivacySetting userPrivacySetting) @@ -1812,8 +1812,8 @@ void TDLibWrapper::handleAuthorizationStateChanged(const QString &authorizationS LOG("Reloading TD Lib..."); this->basicGroups.clear(); this->superGroups.clear(); - this->allUsers.clear(); - this->allUserNames.clear(); + this->usersById.clear(); + this->usersByName.clear(); this->tdLibReceiver->setActive(false); while (this->tdLibReceiver->isRunning()) { QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); @@ -1864,18 +1864,17 @@ void TDLibWrapper::handleConnectionStateChanged(const QString &connectionState) emit connectionStateChanged(this->connectionState); } -void TDLibWrapper::handleUserUpdated(const QVariantMap &userInformation) +void TDLibWrapper::handleUserUpdated(const QVariantMap &updatedUserInformation) { - QString updatedUserId = userInformation.value(ID).toString(); + QString updatedUserId = updatedUserInformation.value(ID).toString(); if (updatedUserId == this->options.value("my_id").toString()) { LOG("Own user information updated :)"); - this->userInformation = userInformation; - emit ownUserUpdated(userInformation); + this->userInformation = updatedUserInformation; + emit ownUserUpdated(updatedUserInformation); } - LOG("User information updated:" << userInformation.value(USERNAMES).toMap().value(EDITABLE_USERNAME).toString() << userInformation.value(FIRST_NAME).toString() << userInformation.value(LAST_NAME).toString()); - this->allUsers.insert(updatedUserId, userInformation); - this->allUserNames.insert(userInformation.value(USERNAMES).toMap().value(EDITABLE_USERNAME).toString(), userInformation); - emit userUpdated(updatedUserId, userInformation); + LOG("User information updated:" << updatedUserInformation.value(USERNAMES).toMap().value(EDITABLE_USERNAME).toString() << updatedUserInformation.value(FIRST_NAME).toString() << updatedUserInformation.value(LAST_NAME).toString()); + updateUserInformation(updatedUserId, updatedUserInformation); + emit userUpdated(updatedUserId, updatedUserInformation); } void TDLibWrapper::handleUserStatusUpdated(const QString &userId, const QVariantMap &userStatusInformation) @@ -1884,14 +1883,22 @@ void TDLibWrapper::handleUserStatusUpdated(const QString &userId, const QVariant LOG("Own user status information updated :)"); this->userInformation.insert(STATUS, userStatusInformation); } + QVariantMap updatedUserInformation = this->usersById.value(userId).toMap(); + if(updatedUserInformation[STATUS] == userStatusInformation) { + return; + } LOG("User status information updated:" << userId << userStatusInformation.value(_TYPE).toString()); - QVariantMap updatedUserInformation = this->allUsers.value(userId).toMap(); updatedUserInformation.insert(STATUS, userStatusInformation); - this->allUsers.insert(userId, updatedUserInformation); - this->allUserNames.insert(userInformation.value(USERNAMES).toMap().value(EDITABLE_USERNAME).toString(), userInformation); + updateUserInformation(userId, updatedUserInformation); emit userUpdated(userId, updatedUserInformation); } +void TDLibWrapper::updateUserInformation(const QString &userId, const QVariantMap &userInformation) +{ + this->usersById.insert(userId, userInformation); + this->usersByName.insert(userInformation.value(USERNAMES).toMap().value(EDITABLE_USERNAME).toString(), userInformation); +} + void TDLibWrapper::handleFileUpdated(const QVariantMap &fileInformation) { emit fileUpdated(fileInformation.value(ID).toInt(), fileInformation); diff --git a/src/tdlibwrapper.h b/src/tdlibwrapper.h index 2487ae5..12bd604 100644 --- a/src/tdlibwrapper.h +++ b/src/tdlibwrapper.h @@ -348,7 +348,7 @@ public slots: void handleAuthorizationStateChanged(const QString &authorizationState, const QVariantMap authorizationStateData); void handleOptionUpdated(const QString &optionName, const QVariant &optionValue); void handleConnectionStateChanged(const QString &connectionState); - void handleUserUpdated(const QVariantMap &userInformation); + void handleUserUpdated(const QVariantMap &updatedUserInformation); void handleUserStatusUpdated(const QString &userId, const QVariantMap &userStatusInformation); void handleFileUpdated(const QVariantMap &fileInformation); void handleNewChatDiscovered(const QVariantMap &chatInformation); @@ -383,6 +383,7 @@ private: const Group *updateGroup(qlonglong groupId, const QVariantMap &groupInfo, QHash *groups); QVariantMap newSendMessageRequest(qlonglong chatId, qlonglong replyToMessageId); void initializeTDLibReceiver(); + void updateUserInformation(const QString &userId, const QVariantMap &userInformation); private: void *tdLibClient; @@ -399,8 +400,8 @@ private: QVariantMap options; QVariantMap userInformation; QMap userPrivacySettingRules; - QVariantMap allUsers; - QVariantMap allUserNames; + QVariantMap usersById; + QVariantMap usersByName; QVariantMap chats; QMap secretChats; QVariantMap unreadMessageInformation; From 15caa6f3c66af1c84eee29cbf9454d88e8e8bb28 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Tue, 2 Jul 2024 11:01:39 +0300 Subject: [PATCH 10/12] Save power by adding delay between network requests in background. --- src/tdlibreceiver.cpp | 11 +++++++++++ src/tdlibreceiver.h | 2 ++ src/tdlibwrapper.cpp | 7 ++++++- src/tdlibwrapper.h | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/tdlibreceiver.cpp b/src/tdlibreceiver.cpp index 44034c7..fc6d7bd 100644 --- a/src/tdlibreceiver.cpp +++ b/src/tdlibreceiver.cpp @@ -81,6 +81,8 @@ namespace { const QString TYPE_ANIMATED_EMOJI("animatedEmoji"); const QString TYPE_INPUT_MESSAGE_REPLY_TO_MESSAGE("inputMessageReplyToMessage"); const QString TYPE_DRAFT_MESSAGE("draftMessage"); + + const double POWERSAVING_TDLIB_REQUEST_INTERVAL = 100; } static QString getChatPositionOrder(const QVariantMap &position) @@ -191,9 +193,15 @@ void TDLibReceiver::setActive(bool active) } else { LOG("Deactivating receiver loop, this may take a while..."); } + this->powerSavingMode = false; this->isActive = active; } +void TDLibReceiver::setPowerSavingMode(bool powerSavingMode) +{ + this->powerSavingMode = powerSavingMode; +} + void TDLibReceiver::receiverLoop() { LOG("Starting receiver loop"); @@ -205,6 +213,9 @@ void TDLibReceiver::receiverLoop() VERBOSE("Raw result:" << receivedJsonDocument.toJson(QJsonDocument::Indented).constData()); processReceivedDocument(receivedJsonDocument); } + if(this->powerSavingMode) { + msleep(POWERSAVING_TDLIB_REQUEST_INTERVAL); + } } LOG("Stopping receiver loop"); } diff --git a/src/tdlibreceiver.h b/src/tdlibreceiver.h index 33771b6..b235461 100644 --- a/src/tdlibreceiver.h +++ b/src/tdlibreceiver.h @@ -35,6 +35,7 @@ class TDLibReceiver : public QThread public: explicit TDLibReceiver(void *tdLibClient, QObject *parent = nullptr); void setActive(bool active); + void setPowerSavingMode(bool active); signals: void versionDetected(const QString &version); @@ -115,6 +116,7 @@ private: QHash handlers; void *tdLibClient; bool isActive; + bool powerSavingMode; private: static const QVariantList cleanupList(const QVariantList& list, bool *updated = Q_NULLPTR); diff --git a/src/tdlibwrapper.cpp b/src/tdlibwrapper.cpp index 70dcf65..bfd8a9b 100644 --- a/src/tdlibwrapper.cpp +++ b/src/tdlibwrapper.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -102,7 +103,7 @@ TDLibWrapper::TDLibWrapper(AppSettings *settings, MceInterface *mce, QObject *pa connect(this->appSettings, SIGNAL(useOpenWithChanged()), this, SLOT(handleOpenWithChanged())); connect(this->appSettings, SIGNAL(storageOptimizerChanged()), this, SLOT(handleStorageOptimizerChanged())); - + connect(qGuiApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(handleApplicationStateChanged(Qt::ApplicationState))); connect(networkConfigurationManager, SIGNAL(configurationChanged(QNetworkConfiguration)), this, SLOT(handleNetworkConfigurationChanged(QNetworkConfiguration))); this->setLogVerbosityLevel(); @@ -2204,6 +2205,10 @@ void TDLibWrapper::handleGetPageSourceFinished() } } +void TDLibWrapper::handleApplicationStateChanged(Qt::ApplicationState state) { + this->tdLibReceiver->setPowerSavingMode(state != Qt::ApplicationState::ApplicationActive); +} + QVariantMap& TDLibWrapper::fillTdlibParameters(QVariantMap& parameters) { parameters.insert("api_id", TDLIB_API_ID); diff --git a/src/tdlibwrapper.h b/src/tdlibwrapper.h index 2487ae5..665f676 100644 --- a/src/tdlibwrapper.h +++ b/src/tdlibwrapper.h @@ -373,6 +373,7 @@ public slots: void handleNetworkConfigurationChanged(const QNetworkConfiguration &config); void handleActiveEmojiReactionsUpdated(const QStringList& emojis); void handleGetPageSourceFinished(); + void handleApplicationStateChanged(Qt::ApplicationState state); private: void setOption(const QString &name, const QString &type, const QVariant &value); From 48aaf577d694b006cfefc9f686d42e99258942cc Mon Sep 17 00:00:00 2001 From: Nikolai Sinyov Date: Tue, 2 Jul 2024 11:24:47 +0300 Subject: [PATCH 11/12] Update git ignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index fbb2bbb..043d60a 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,6 @@ tdlibsecrets.h #Convinience scripts *.sh + +#vscode +.vscode From 1b659ae219947070072f37bae506b12cd224a8fd Mon Sep 17 00:00:00 2001 From: Nikolai Sinyov Date: Tue, 2 Jul 2024 13:36:55 +0300 Subject: [PATCH 12/12] Deleted yaml --- rpm/harbour-fernschreiber.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/rpm/harbour-fernschreiber.spec b/rpm/harbour-fernschreiber.spec index 41e8918..0efd17f 100644 --- a/rpm/harbour-fernschreiber.spec +++ b/rpm/harbour-fernschreiber.spec @@ -17,7 +17,6 @@ Group: Qt/Qt License: LICENSE URL: http://werkwolf.eu/ Source0: %{name}-%{version}.tar.bz2 -Source100: harbour-fernschreiber.yaml Requires: sailfishsilica-qt5 >= 0.10.9 #Requires: nemo-qml-plugin-contacts-qt5 BuildRequires: pkgconfig(sailfishapp) >= 1.0.2