diff --git a/harbour-fernschreiber.pro b/harbour-fernschreiber.pro index 0c3a283..31887de 100644 --- a/harbour-fernschreiber.pro +++ b/harbour-fernschreiber.pro @@ -46,6 +46,7 @@ DISTFILES += qml/harbour-fernschreiber.qml \ qml/components/LocationPreview.qml \ qml/components/MessageListViewItem.qml \ qml/components/MessageListViewItemSimple.qml \ + qml/components/MessageOverlayFlickable.qml \ qml/components/PinnedMessageItem.qml \ qml/components/PollPreview.qml \ qml/components/StickerPicker.qml \ diff --git a/qml/components/MessageListViewItem.qml b/qml/components/MessageListViewItem.qml index a1c117b..04eb353 100644 --- a/qml/components/MessageListViewItem.qml +++ b/qml/components/MessageListViewItem.qml @@ -357,8 +357,6 @@ ListItem { } } } - - } } } diff --git a/qml/components/MessageOverlayFlickable.qml b/qml/components/MessageOverlayFlickable.qml new file mode 100644 index 0000000..f40a73d --- /dev/null +++ b/qml/components/MessageOverlayFlickable.qml @@ -0,0 +1,181 @@ +/* + 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 "../components" +import "../js/functions.js" as Functions +import "../js/twemoji.js" as Emoji + +Flickable { + id: messageOverlayFlickable + anchors.fill: parent + boundsBehavior: Flickable.StopAtBounds + contentHeight: messageContentColumn.height + clip: true + + property var overlayMessage; + property bool showHeader: true + readonly property var userInformation: tdLibWrapper.getUserInformation(overlayMessage.sender_user_id); + readonly property bool isOwnMessage: tdLibWrapper.getUserInformation().id === overlayMessage.sender_user_id; + signal requestClose; + + function getOriginalAuthor(forwardInformation, fontSize) { + if (forwardInformation.origin["@type"] === "messageForwardOriginChannel") { + var otherChatInformation = tdLibWrapper.getChat(forwardInformation.origin.chat_id); + return Emoji.emojify(otherChatInformation.title, fontSize); + } else if (forwardInformation.origin["@type"] === "messageForwardOriginUser") { + var otherUserInformation = tdLibWrapper.getUserInformation(forwardInformation.origin.sender_user_id); + return Emoji.emojify(Functions.getUserName(otherUserInformation), fontSize); + } else { + return Emoji.emojify(forwardInformation.origin.sender_name, fontSize); + } + } + + Component.onCompleted: { + delegateComponentLoadingTimer.start(); + } + + Timer { + id: delegateComponentLoadingTimer + interval: 500 + repeat: false + running: false + onTriggered: { + if (typeof overlayMessage.content !== "undefined") { +// if (messageListItem.extraContentComponentName !== "") { +// extraContentLoader.setSource( +// "../components/" +messageListItem.extraContentComponentName +".qml", +// { +// messageListItem: messageListItem +// }) +// } else { + if (typeof overlayMessage.content.web_page !== "undefined") { + overlayWebPagePreviewLoader.active = true; + } +// } + } + } + } + + Rectangle { + id: messageContentBackground + color: (Theme.colorScheme === Theme.LightOnDark) ? Theme.darkSecondaryColor : Theme.lightSecondaryColor + width: parent.width + height: messageContentColumn.height >= messageOverlayFlickable.height ? messageContentColumn.height : messageOverlayFlickable.height + MouseArea { + anchors.fill: parent + onClicked: { + messageOverlayFlickable.requestClose(); + } + } + } + + Column { + id: messageContentColumn + spacing: Theme.paddingMedium + anchors.top: parent.top + anchors.topMargin: Theme.paddingMedium + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width - ( 2 * Theme.horizontalPageMargin ) + + Row { + visible: messageOverlayFlickable.showHeader + width: parent.width + spacing: Theme.paddingMedium + ProfileThumbnail { + id: overlayMessagePictureThumbnail + photoData: (typeof messageOverlayFlickable.userInformation.profile_photo !== "undefined") ? messageOverlayFlickable.userInformation.profile_photo.small : ({}) + replacementStringHint: overlayMessageUserText.text + width: Theme.itemSizeLarge + height: Theme.itemSizeLarge + } + Text { + id: overlayMessageUserText + + width: parent.width - overlayMessagePictureThumbnail.width + anchors.verticalCenter: parent.verticalCenter + text: messageOverlayFlickable.isOwnMessage ? qsTr("You") : Emoji.emojify(Functions.getUserName(messageOverlayFlickable.userInformation), font.pixelSize) + font.pixelSize: Theme.fontSizeExtraLarge + font.weight: Font.ExtraBold + color: Theme.primaryColor + maximumLineCount: 1 + elide: Text.ElideRight + textFormat: Text.StyledText + } + } + + Text { + id: overlayForwardedInfoText + width: parent.width + visible: typeof overlayMessage.forward_info !== "undefined" + font.pixelSize: Theme.fontSizeSmall + font.italic: true + textFormat: Text.StyledText + color: Theme.secondaryColor + wrapMode: Text.Wrap + text: visible ? qsTr("This message was forwarded. Original author: %1").arg(getOriginalAuthor(overlayMessage.forward_info, font.pixelSize)) : "" + } + + Text { + id: overlayMessageText + width: parent.width + text: Emoji.emojify(Functions.getMessageText(overlayMessage, false, messageOverlayFlickable.isOwnMessage), font.pixelSize) + font.pixelSize: Theme.fontSizeMedium + color: Theme.primaryColor + wrapMode: Text.Wrap + textFormat: Text.StyledText + onLinkActivated: { + Functions.handleLink(link); + } + linkColor: Theme.highlightColor + visible: (text !== "") + } + + Loader { + id: overlayWebPagePreviewLoader + active: false + asynchronous: true + width: parent.width + + sourceComponent: Component { + id: webPagePreviewComponent + WebPagePreview { + id: webPagePreview + + onImplicitHeightChanged: { + webPagePreviewLoader.height = webPagePreview.implicitHeight; + } + + webPageData: overlayMessage.content.web_page + largerFontSize: true + width: parent.width + } + } + } + + Label { + id: separatorLabel + width: parent.width + font.pixelSize: Theme.fontSizeSmall + } + + } + + VerticalScrollDecorator {} +} diff --git a/qml/components/PinnedMessageItem.qml b/qml/components/PinnedMessageItem.qml index 542e091..06ccc5e 100644 --- a/qml/components/PinnedMessageItem.qml +++ b/qml/components/PinnedMessageItem.qml @@ -26,11 +26,13 @@ Item { id: pinnedMessageItem property var pinnedMessage; + signal requestShowMessage; onPinnedMessageChanged: { if (pinnedMessage) { console.log("[ChatPage] Activating pinned message"); - pinnedMessageUserText.text = (pinnedMessage.sender_user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender_user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You"); + var messageUserText = (pinnedMessage.sender_user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender_user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You"); + pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText ); pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender_user_id === chatPage.myUserId), pinnedMessageText.font.pixelSize); pinnedMessageItem.visible = true; } else { @@ -61,7 +63,7 @@ Item { height: Theme.itemSizeLarge icon.source: "image://theme/icon-m-mark-unread" onClicked: { - console.log("Opening pinned message"); + pinnedMessageItem.requestShowMessage(); } } @@ -85,7 +87,7 @@ Item { MouseArea { anchors.fill: parent onClicked: { - console.log("Opening pinned message"); + pinnedMessageItem.requestShowMessage(); } } } @@ -102,7 +104,7 @@ Item { MouseArea { anchors.fill: parent onClicked: { - console.log("Opening pinned message"); + pinnedMessageItem.requestShowMessage(); } } } diff --git a/qml/components/WebPagePreview.qml b/qml/components/WebPagePreview.qml index a31c1c0..3437110 100644 --- a/qml/components/WebPagePreview.qml +++ b/qml/components/WebPagePreview.qml @@ -30,6 +30,7 @@ Column { property var webPageData; property var pictureFileInformation; property bool hasImage: false; + property bool largerFontSize: false; spacing: Theme.paddingSmall @@ -74,7 +75,7 @@ Column { width: parent.width text: webPageData.site_name ? Emoji.emojify(webPageData.site_name, font.pixelSize) : "" - font.pixelSize: Theme.fontSizeExtraSmall + font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall font.bold: true color: Theme.secondaryHighlightColor elide: Text.ElideRight @@ -88,7 +89,7 @@ Column { width: parent.width text: webPageData.title ? Emoji.emojify(webPageData.title, font.pixelSize) : "" - font.pixelSize: Theme.fontSizeExtraSmall + font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall font.bold: true color: Theme.primaryColor elide: Text.ElideRight @@ -103,7 +104,7 @@ Column { width: parent.width text: webPageData.description ? Emoji.emojify(webPageData.description, font.pixelSize) : "" - font.pixelSize: Theme.fontSizeExtraSmall + font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall color: Theme.primaryColor elide: Text.ElideRight wrapMode: Text.Wrap @@ -150,7 +151,7 @@ Column { width: parent.width text: qsTr("Preview not supported for this link...") - font.pixelSize: Theme.fontSizeTiny + font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeExtraSmall : Theme.fontSizeTiny font.italic: true color: Theme.secondaryColor elide: Text.ElideRight diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index 93ccf56..dca402a 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -425,6 +425,15 @@ Page { chatInformation = chatModel.getChatInformation(); muteChatMenuItem.text = chatInformation.notification_settings.mute_for > 0 ? qsTr("Unmute Chat") : qsTr("Mute Chat"); } + onPinnedMessageChanged: { + chatInformation = chatModel.getChatInformation(); + if (chatInformation.pinned_message_id.toString() !== "0") { + console.log("[ChatPage] Loading pinned message " + chatInformation.pinned_message_id); + tdLibWrapper.getMessage(chatInformation.id, chatInformation.pinned_message_id); + } else { + pinnedMessageItem.pinnedMessage = undefined; + } + } } Connections { @@ -492,7 +501,7 @@ Page { contentWidth: width PullDownMenu { - visible: chatInformation.id !== chatPage.myUserId && !stickerPickerLoader.active + visible: chatInformation.id !== chatPage.myUserId && !stickerPickerLoader.active && !messageOverlayLoader.active MenuItem { id: joinLeaveChatMenuItem visible: (chatPage.isSuperGroup || chatPage.isBasicGroup) && chatGroupInformation && chatGroupInformation.status["@type"] !== "chatMemberStatusBanned" @@ -602,6 +611,10 @@ Page { PinnedMessageItem { id: pinnedMessageItem + onRequestShowMessage: { + messageOverlayLoader.overlayMessage = pinnedMessageItem.pinnedMessage; + messageOverlayLoader.active = !messageOverlayLoader.active; + } } Item { @@ -844,6 +857,26 @@ Page { source: "../components/StickerPicker.qml" } + Loader { + id: messageOverlayLoader + + property var overlayMessage; + + active: false + asynchronous: true + width: parent.width + height: active ? parent.height : 0 + sourceComponent: Component { + MessageOverlayFlickable { + overlayMessage: messageOverlayLoader.overlayMessage + showHeader: !chatPage.isChannel + onRequestClose: { + messageOverlayLoader.active = false; + } + } + } + } + } Column { diff --git a/src/chatlistmodel.cpp b/src/chatlistmodel.cpp index 6de9094..5ce7145 100644 --- a/src/chatlistmodel.cpp +++ b/src/chatlistmodel.cpp @@ -44,6 +44,7 @@ namespace { const QString LAST_READ_OUTBOX_MESSAGE_ID("last_read_outbox_message_id"); const QString SENDING_STATE("sending_state"); const QString IS_CHANNEL("is_channel"); + const QString PINNED_MESSAGE_ID("pinned_message_id"); const QString _TYPE("@type"); } @@ -296,6 +297,7 @@ ChatListModel::ChatListModel(TDLibWrapper *tdLibWrapper) : showHiddenChats(false connect(tdLibWrapper, SIGNAL(chatReadInboxUpdated(QString, QString, int)), this, SLOT(handleChatReadInboxUpdated(QString, QString, int))); connect(tdLibWrapper, SIGNAL(chatReadOutboxUpdated(QString, QString)), this, SLOT(handleChatReadOutboxUpdated(QString, QString))); connect(tdLibWrapper, SIGNAL(chatPhotoUpdated(qlonglong, QVariantMap)), this, SLOT(handleChatPhotoUpdated(qlonglong, QVariantMap))); + connect(tdLibWrapper, SIGNAL(chatPinnedMessageUpdated(qlonglong, qlonglong)), this, SLOT(handleChatPinnedMessageUpdated(qlonglong, qlonglong))); connect(tdLibWrapper, SIGNAL(messageSendSucceeded(QString, QString, QVariantMap)), this, SLOT(handleMessageSendSucceeded(QString, QString, QVariantMap))); connect(tdLibWrapper, SIGNAL(chatNotificationSettingsUpdated(QString, QVariantMap)), this, SLOT(handleChatNotificationSettingsUpdated(QString, QVariantMap))); connect(tdLibWrapper, SIGNAL(superGroupUpdated(qlonglong)), this, SLOT(handleGroupUpdated(qlonglong))); @@ -635,6 +637,22 @@ void ChatListModel::handleChatPhotoUpdated(qlonglong chatId, const QVariantMap & } } +void ChatListModel::handleChatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId) +{ + if (chatIndexMap.contains(chatId)) { + LOG("Updating pinned message for" << chatId); + const int chatIndex = chatIndexMap.value(chatId); + ChatData *chat = chatList.at(chatIndex); + chat->chatData.insert(PINNED_MESSAGE_ID, pinnedMessageId); + } else { + ChatData *chat = hiddenChats.value(chatId); + if (chat) { + LOG("Updating pinned message for hidden chat" << chatId); + chat->chatData.insert(PINNED_MESSAGE_ID, pinnedMessageId); + } + } +} + void ChatListModel::handleMessageSendSucceeded(const QString &messageId, const QString &oldMessageId, const QVariantMap &message) { bool ok; diff --git a/src/chatlistmodel.h b/src/chatlistmodel.h index e43ee57..1185b37 100644 --- a/src/chatlistmodel.h +++ b/src/chatlistmodel.h @@ -49,6 +49,7 @@ private slots: void handleChatReadInboxUpdated(const QString &chatId, const QString &lastReadInboxMessageId, int unreadCount); void handleChatReadOutboxUpdated(const QString &chatId, const QString &lastReadOutboxMessageId); void handleChatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); + void handleChatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void handleMessageSendSucceeded(const QString &messageId, const QString &oldMessageId, const QVariantMap &message); void handleChatNotificationSettingsUpdated(const QString &chatId, const QVariantMap &chatNotificationSettings); void handleGroupUpdated(qlonglong groupId); diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 72d6886..ab84c14 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -34,6 +34,7 @@ namespace { const QString UNREAD_COUNT("unread_count"); const QString LAST_READ_INBOX_MESSAGE_ID("last_read_inbox_message_id"); const QString SENDER_USER_ID("sender_user_id"); + const QString PINNED_MESSAGE_ID("pinned_message_id"); } ChatModel::ChatModel(TDLibWrapper *tdLibWrapper) : @@ -49,6 +50,7 @@ ChatModel::ChatModel(TDLibWrapper *tdLibWrapper) : connect(this->tdLibWrapper, SIGNAL(messageSendSucceeded(QString, QString, QVariantMap)), this, SLOT(handleMessageSendSucceeded(QString, QString, QVariantMap))); connect(this->tdLibWrapper, SIGNAL(chatNotificationSettingsUpdated(QString, QVariantMap)), this, SLOT(handleChatNotificationSettingsUpdated(QString, QVariantMap))); connect(this->tdLibWrapper, SIGNAL(chatPhotoUpdated(qlonglong, QVariantMap)), this, SLOT(handleChatPhotoUpdated(qlonglong, QVariantMap))); + connect(this->tdLibWrapper, SIGNAL(chatPinnedMessageUpdated(qlonglong, qlonglong)), this, SLOT(handleChatPinnedMessageUpdated(qlonglong, qlonglong))); connect(this->tdLibWrapper, SIGNAL(messageContentUpdated(QString, QString, QVariantMap)), this, SLOT(handleMessageContentUpdated(QString, QString, QVariantMap))); connect(this->tdLibWrapper, SIGNAL(messagesDeleted(QString, QVariantList)), this, SLOT(handleMessagesDeleted(QString, QVariantList))); } @@ -292,6 +294,15 @@ void ChatModel::handleChatPhotoUpdated(qlonglong id, const QVariantMap &photo) } } +void ChatModel::handleChatPinnedMessageUpdated(qlonglong id, qlonglong pinnedMessageId) +{ + if (id == chatId) { + LOG("Pinned message updated" << chatId); + chatInformation.insert(PINNED_MESSAGE_ID, pinnedMessageId); + emit pinnedMessageChanged(); + } +} + void ChatModel::handleMessageContentUpdated(const QString &id, const QString &messageId, const QVariantMap &newContent) { LOG("Message content updated" << id << messageId); diff --git a/src/chatmodel.h b/src/chatmodel.h index a10e80d..7c54f5e 100644 --- a/src/chatmodel.h +++ b/src/chatmodel.h @@ -55,6 +55,7 @@ signals: void messageUpdated(int modelIndex); void messagesDeleted(); void smallPhotoChanged(); + void pinnedMessageChanged(); public slots: void handleMessagesReceived(const QVariantList &messages, int totalCount); @@ -64,6 +65,7 @@ public slots: void handleMessageSendSucceeded(const QString &messageId, const QString &oldMessageId, const QVariantMap &message); void handleChatNotificationSettingsUpdated(const QString &chatId, const QVariantMap &chatNotificationSettings); void handleChatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); + void handleChatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void handleMessageContentUpdated(const QString &chatId, const QString &messageId, const QVariantMap &newContent); void handleMessagesDeleted(const QString &chatId, const QVariantList &messageIds); diff --git a/src/tdlibreceiver.cpp b/src/tdlibreceiver.cpp index b96c0dc..a37f1a9 100644 --- a/src/tdlibreceiver.cpp +++ b/src/tdlibreceiver.cpp @@ -127,6 +127,7 @@ TDLibReceiver::TDLibReceiver(void *tdLibClient, QObject *parent) : QThread(paren handlers.insert("updateChatPermissions", &TDLibReceiver::processUpdateChatPermissions); handlers.insert("updateChatPhoto", &TDLibReceiver::processUpdateChatPhoto); handlers.insert("updateChatTitle", &TDLibReceiver::processUpdateChatTitle); + handlers.insert("updateChatPinnedMessage", &TDLibReceiver::processUpdateChatPinnedMessage); handlers.insert("users", &TDLibReceiver::processUsers); handlers.insert("error", &TDLibReceiver::processError); handlers.insert("ok", &TDLibReceiver::nop); @@ -506,6 +507,12 @@ void TDLibReceiver::processUpdateChatTitle(const QVariantMap &receivedInformatio emit chatTitleUpdated(receivedInformation.value(CHAT_ID).toString(), receivedInformation.value(TITLE).toString()); } +void TDLibReceiver::processUpdateChatPinnedMessage(const QVariantMap &receivedInformation) +{ + LOG("Received UpdateChatPinnedMessage"); + emit chatPinnedMessageUpdated(receivedInformation.value(CHAT_ID).toLongLong(), receivedInformation.value("pinned_message_id").toLongLong()); +} + void TDLibReceiver::processUsers(const QVariantMap &receivedInformation) { LOG("Received Users"); diff --git a/src/tdlibreceiver.h b/src/tdlibreceiver.h index a06bed8..3d041c7 100644 --- a/src/tdlibreceiver.h +++ b/src/tdlibreceiver.h @@ -80,7 +80,8 @@ signals: void userProfilePhotos(const QString &extra, const QVariantList &photos, int totalPhotos); void chatPermissionsUpdated(const QString &chatId, const QVariantMap &chatPermissions); void chatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); - void chatTitleUpdated(const QString &chatId, const QString &title); + void chatTitleUpdated(const QString &chatId, const QString &title); + void chatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void usersReceived(const QString &extra, const QVariantList &userIds, int totalUsers); void errorReceived(const int code, const QString &message); @@ -139,6 +140,7 @@ private: void processUpdateChatPermissions(const QVariantMap &receivedInformation); void processUpdateChatPhoto(const QVariantMap &receivedInformation); void processUpdateChatTitle(const QVariantMap &receivedInformation); + void processUpdateChatPinnedMessage(const QVariantMap &receivedInformation); void processUsers(const QVariantMap &receivedInformation); void processError(const QVariantMap &receivedInformation); void nop(const QVariantMap &receivedInformation); diff --git a/src/tdlibwrapper.cpp b/src/tdlibwrapper.cpp index 4ab4ea7..2b85a41 100644 --- a/src/tdlibwrapper.cpp +++ b/src/tdlibwrapper.cpp @@ -112,6 +112,7 @@ TDLibWrapper::TDLibWrapper(AppSettings *appSettings, QObject *parent) : QObject( connect(this->tdLibReceiver, SIGNAL(chatPermissionsUpdated(QString, QVariantMap)), this, SIGNAL(chatPermissionsUpdated(QString, QVariantMap))); connect(this->tdLibReceiver, SIGNAL(chatPhotoUpdated(qlonglong, QVariantMap)), this, SIGNAL(chatPhotoUpdated(qlonglong, QVariantMap))); connect(this->tdLibReceiver, SIGNAL(chatTitleUpdated(QString, QString)), this, SIGNAL(chatTitleUpdated(QString, QString))); + connect(this->tdLibReceiver, SIGNAL(chatPinnedMessageUpdated(qlonglong, qlonglong)), this, SIGNAL(chatPinnedMessageUpdated(qlonglong, qlonglong))); connect(this->tdLibReceiver, SIGNAL(usersReceived(QString, QVariantList, int)), this, SIGNAL(usersReceived(QString, QVariantList, int))); connect(this->tdLibReceiver, SIGNAL(errorReceived(int, QString)), this, SIGNAL(errorReceived(int, QString))); diff --git a/src/tdlibwrapper.h b/src/tdlibwrapper.h index c88b3c7..a33eed8 100644 --- a/src/tdlibwrapper.h +++ b/src/tdlibwrapper.h @@ -218,6 +218,7 @@ signals: void chatPermissionsUpdated(const QString &chatId, const QVariantMap &permissions); void chatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); void chatTitleUpdated(const QString &chatId, const QString &title); + void chatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void usersReceived(const QString &extra, const QVariantList &userIds, int totalUsers); void errorReceived(const int code, const QString &message); diff --git a/translations/harbour-fernschreiber-de.ts b/translations/harbour-fernschreiber-de.ts index bc09134..81d3bce 100644 --- a/translations/harbour-fernschreiber-de.ts +++ b/translations/harbour-fernschreiber-de.ts @@ -847,6 +847,17 @@ Sie + + MessageOverlayFlickable + + You + Sie + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -903,6 +914,10 @@ You Sie + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-en.ts b/translations/harbour-fernschreiber-en.ts index f38d398..1a1fe99 100644 --- a/translations/harbour-fernschreiber-en.ts +++ b/translations/harbour-fernschreiber-en.ts @@ -847,6 +847,17 @@ You + + MessageOverlayFlickable + + You + You + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -903,6 +914,10 @@ You You + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-es.ts b/translations/harbour-fernschreiber-es.ts index 5565c05..204bdde 100644 --- a/translations/harbour-fernschreiber-es.ts +++ b/translations/harbour-fernschreiber-es.ts @@ -843,6 +843,17 @@ Usted + + MessageOverlayFlickable + + You + Usted + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -899,6 +910,10 @@ You Usted + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-fi.ts b/translations/harbour-fernschreiber-fi.ts index 44f9ecb..77c4c98 100644 --- a/translations/harbour-fernschreiber-fi.ts +++ b/translations/harbour-fernschreiber-fi.ts @@ -848,6 +848,17 @@ Sinä + + MessageOverlayFlickable + + You + Sinä + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -904,6 +915,10 @@ You Sinä + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-hu.ts b/translations/harbour-fernschreiber-hu.ts index a378d47..f34c208 100644 --- a/translations/harbour-fernschreiber-hu.ts +++ b/translations/harbour-fernschreiber-hu.ts @@ -843,6 +843,17 @@ Te + + MessageOverlayFlickable + + You + Te + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -899,6 +910,10 @@ You Te + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-it.ts b/translations/harbour-fernschreiber-it.ts index 6bbd72a..71a1e56 100644 --- a/translations/harbour-fernschreiber-it.ts +++ b/translations/harbour-fernschreiber-it.ts @@ -847,6 +847,17 @@ Tu + + MessageOverlayFlickable + + You + Tu + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -903,6 +914,10 @@ You Tu + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-pl.ts b/translations/harbour-fernschreiber-pl.ts index c084f44..5cecd1a 100644 --- a/translations/harbour-fernschreiber-pl.ts +++ b/translations/harbour-fernschreiber-pl.ts @@ -851,6 +851,17 @@ Ty + + MessageOverlayFlickable + + You + Ty + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -907,6 +918,10 @@ You Ty + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-ru.ts b/translations/harbour-fernschreiber-ru.ts index 1cd53b4..1688340 100644 --- a/translations/harbour-fernschreiber-ru.ts +++ b/translations/harbour-fernschreiber-ru.ts @@ -851,6 +851,17 @@ Вы + + MessageOverlayFlickable + + You + Вы + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -907,6 +918,10 @@ You Вы + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-sv.ts b/translations/harbour-fernschreiber-sv.ts index e7cd308..132ba3c 100644 --- a/translations/harbour-fernschreiber-sv.ts +++ b/translations/harbour-fernschreiber-sv.ts @@ -847,6 +847,17 @@ Du + + MessageOverlayFlickable + + You + Du + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -903,6 +914,10 @@ You Du + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber-zh_CN.ts b/translations/harbour-fernschreiber-zh_CN.ts index 0e2ee11..aabec73 100644 --- a/translations/harbour-fernschreiber-zh_CN.ts +++ b/translations/harbour-fernschreiber-zh_CN.ts @@ -843,6 +843,17 @@ + + MessageOverlayFlickable + + You + + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -899,6 +910,10 @@ You + + Pinned Message + + PollCreationPage diff --git a/translations/harbour-fernschreiber.ts b/translations/harbour-fernschreiber.ts index 46ab50b..7154fb4 100644 --- a/translations/harbour-fernschreiber.ts +++ b/translations/harbour-fernschreiber.ts @@ -843,6 +843,17 @@ + + MessageOverlayFlickable + + You + + + + This message was forwarded. Original author: %1 + + + NotificationManager @@ -899,6 +910,10 @@ You + + Pinned Message + + PollCreationPage