React properly on pinned message changes, nice message overlay ;)
This commit is contained in:
parent
15be3862f6
commit
2830f50a35
25 changed files with 436 additions and 12 deletions
|
@ -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 \
|
||||
|
|
|
@ -357,8 +357,6 @@ ListItem {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
181
qml/components/MessageOverlayFlickable.qml
Normal file
181
qml/components/MessageOverlayFlickable.qml
Normal file
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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 {}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -81,6 +81,7 @@ signals:
|
|||
void chatPermissionsUpdated(const QString &chatId, const QVariantMap &chatPermissions);
|
||||
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);
|
||||
|
||||
|
@ -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);
|
||||
|
|
|
@ -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)));
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -847,6 +847,17 @@
|
|||
<translation>Sie</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Sie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -903,6 +914,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Sie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -847,6 +847,17 @@
|
|||
<translation>You</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">You</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -903,6 +914,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">You</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -843,6 +843,17 @@
|
|||
<translation>Usted</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Usted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -899,6 +910,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Usted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -848,6 +848,17 @@
|
|||
<translation>Sinä</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Sinä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -904,6 +915,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Sinä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -843,6 +843,17 @@
|
|||
<translation type="unfinished">Te</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Te</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -899,6 +910,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Te</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -847,6 +847,17 @@
|
|||
<translation>Tu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Tu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -903,6 +914,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Tu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -851,6 +851,17 @@
|
|||
<translation>Ty</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Ty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -907,6 +918,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Ty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -851,6 +851,17 @@
|
|||
<translation>Вы</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Вы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -907,6 +918,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Вы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -847,6 +847,17 @@
|
|||
<translation>Du</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">Du</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -903,6 +914,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">Du</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -843,6 +843,17 @@
|
|||
<translation>你</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">你</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -899,6 +910,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished">你</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
|
@ -843,6 +843,17 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
<message>
|
||||
|
@ -899,6 +910,10 @@
|
|||
<source>You</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PollCreationPage</name>
|
||||
|
|
Loading…
Reference in a new issue