/
erhoof
/
telegraf
Обзор
Документация
Войти
/
erhoof
/
telegraf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
qml/components/MessageListViewItemSimple.qml
71 строка
4 KB
mbarashkov
Рефакторинг зависимости tdLibRequestSender
04 июн 2025, 16:23
04 июн 2025, 16:23
be09f3b
Код
Авторство
О чём код?
import QtQuick 2.6 import Sailfish.Silica 1.0 import "../js/twemoji.js" as Emoji import "../js/functions.js" as Functions import "../js/debug.js" as Debug import ru.telegrafaurora.telegraf 1.0 Item { id: messageListItem property var myMessage: display property bool senderIsUser: myMessage.sender_id["@type"] === "messageSenderUser" property var userInformation: senderIsUser ? TDLibDataRepository.getUserById(myMessage.sender_id.user_id) : null property bool isOwnMessage: senderIsUser && TDLibState.myUserId === myMessage.sender_id.user_id property var linkedMessage height: backgroundRectangle.height + Theme.paddingMedium Rectangle { id: backgroundRectangle anchors.centerIn: parent height: messageText.height + Theme.paddingMedium * 2 width: Math.min(messageText.implicitWidth, messageText.contentWidth) + Theme.paddingMedium * 2 color: Theme.colorScheme === Theme.LightOnDark ? Theme.rgba(Theme.secondaryColor, 0.1) : Theme.rgba(Theme.overlayBackgroundColor, 0.1) radius: parent.width / 50 } Text { id: messageText width: parent.width - Theme.paddingMedium * 4 - Theme.horizontalPageMargin * 2 anchors.centerIn: parent color: Theme.highlightColor horizontalAlignment: Text.AlignHCenter font.pixelSize: Theme.fontSizeExtraSmall property string messageContentText: Functions.getMessageText(messageListItem.myMessage, false, TDLibState.myUserId, false) text: (messageListItem.senderIsUser ? "<a style=\"text-decoration: none; font-weight: bold; color:"+Theme.primaryColor+"\" href=\"userId://" + messageListItem.userInformation.id + "\">" + (!messageListItem.isOwnMessage ? Functions.getUserName(messageListItem.userInformation) : qsTr("You")) + "</a> " : "<a style=\"text-decoration: none; font-weight: bold; color:"+Theme.secondaryHighlightColor+"\">" + (chatPage.chatInformation.title || "") + "</a> ") + Emoji.emojify(messageContentText, font.pixelSize) textFormat: Text.RichText wrapMode: Text.WrapAtWordBoundaryOrAnywhere onLinkActivated: { if(link === "linkedmessage" && linkedMessage) { messageOverlayLoader.overlayMessage = linkedMessage; messageOverlayLoader.active = true; } else { Functions.handleLink(link); } } } Loader { id: gameScoreInfoLoader active: myMessage.content["@type"] === "messageGameScore" asynchronous: true sourceComponent: Component { Connections { target: TDLibResponseHandler onReceivedMessage: { if(chatId === chatPage.chatInformation.id && messageId === myMessage.content.game_message_id) { messageListItem.linkedMessage = message; messageText.messageContentText = messageListItem.isOwnMessage ? qsTr("scored %Ln points in %2", "myself", myMessage.content.score).arg("<a href=\"linkedmessage\" style=\"text-decoration: none; color:"+Theme.primaryColor+"\">"+message.content.game.title+"</a>") : qsTr("scored %Ln points in %2", "", myMessage.content.score).arg("<a href=\"linkedmessage\" style=\"text-decoration: none; color:"+Theme.primaryColor+"\" >"+message.content.game.title+"</a>"); } } Component.onCompleted: { TDLibRequestSender.callGetMessage(chatPage.chatInformation.id, myMessage.content.game_message_id); } } } } }