linphone-desktop/linphone-app/ui/modules/Linphone/Chat/ChatReactions.qml
Julien Wadel f496600004 Fix reactions synchronizations.
Generic reactions (support any emojies) but display in priority a fix list (defined in Constants).
Clean old codes and make a ChatReactions UI.
2023-08-31 18:39:18 +02:00

72 lines
1.9 KiB
QML

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQml.Models 2.15
import Common 1.0
import Linphone 1.0
import Units 1.0
// =============================================================================
Rectangle{
id: mainItem
property ChatReactionProxyModel model
property var modelData
signal reactionsClicked()
height: visible ? reactionList.height +10 : 0
width: visible ? reactionLayout.width + 10 : 0
visible: reactionList.count > 0
property font customFont : SettingsModel.textMessageFont
property font customEmojiFont : SettingsModel.emojiFont
RowLayout{
id: reactionLayout
anchors.centerIn: parent
ListView{
id: reactionList
Layout.preferredWidth: contentItem.childrenRect.width
Layout.preferredHeight: reactionMetrics.height
TextMetrics{
id: reactionMetrics
text: '😮'
font.family: mainItem.customEmojiFont.family
font.pointSize: Units.dp * mainItem.customEmojiFont.pointSize * 2
}
orientation: ListView.Horizontal
model: mainItem.model
spacing: 10
delegate:
Text{
width: reactionMetrics.width
height: reactionList.height
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.family: mainItem.customEmojiFont.family
font.pointSize: Units.dp * mainItem.customEmojiFont.pointSize * 2
text: $modelData.body || ''
}
}
Text{
Layout.preferredWidth: contentWidth
Layout.preferredHeight: reactionList.height
Layout.alignment: Qt.AlignVCenter
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.family: mainItem.customFont.family
font.pointSize: Units.dp * mainItem.customFont.pointSize
visible: mainItem.model && mainItem.model.count != mainItem.model.reactionCount
text: mainItem.model && mainItem.model.reactionCount || ''
}
}
MouseArea{
anchors.fill: parent
onClicked: mainItem.reactionsClicked()
}
}