mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-02-07 15:08:24 +00:00
Allow smallbuttons to use emojis. Insert text in text area in chats. Ensure to send plain text message. Use custom text font for text edit. Emoji picker and display it aside of files preview with a splitter. Fix file preview layout in replies. Change double click to simple click on avatar for copying address into the smartsearchbar. Add an option to change emojis font. Update chat actions colors.
91 lines
2.7 KiB
QML
91 lines
2.7 KiB
QML
import QtQuick 2.7
|
|
import QtQuick.Layouts 1.3
|
|
|
|
import Common 1.0
|
|
import Linphone 1.0
|
|
import Linphone.Styles 1.0
|
|
|
|
// =============================================================================
|
|
|
|
RowLayout {
|
|
id:mainRow
|
|
|
|
Layout.fillWidth: true
|
|
|
|
property alias isHovering: message.isHovering
|
|
property alias isTopGrouped: message.isTopGrouped
|
|
property alias isBottomGrouped: message.isBottomGrouped
|
|
|
|
signal copyAllDone()
|
|
signal copySelectionDone()
|
|
signal replyClicked()
|
|
signal forwardClicked()
|
|
signal goToMessage(ChatMessageModel message)
|
|
signal conferenceIcsCopied()
|
|
signal addContactClicked(string contactAddress)
|
|
signal viewContactClicked(string contactAddress)
|
|
|
|
implicitHeight: message.height
|
|
spacing: 0
|
|
|
|
Item {
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.preferredHeight: ChatStyle.entry.lineHeight
|
|
Layout.preferredWidth: ChatStyle.entry.metaWidth
|
|
|
|
Avatar {
|
|
id:avatar
|
|
anchors.centerIn: parent
|
|
height: ChatStyle.entry.message.incoming.avatarSize
|
|
image: $chatEntry.contactModel? $chatEntry.contactModel.vcard.avatar : '' //chat.sipAddressObserver.contact ? chat.sipAddressObserver.contact.vcard.avatar : ''
|
|
username: $chatEntry.fromDisplayName
|
|
|
|
width: ChatStyle.entry.message.incoming.avatarSize
|
|
|
|
// The avatar is only visible for the first message of a incoming messages sequence.
|
|
visible: {
|
|
if (index <= 0) {
|
|
return true // 1. First message, so visible.
|
|
}
|
|
var previousEntry = proxyModel.getAt(index - 1)
|
|
return !$chatEntry.isOutgoing && (// Only outgoing
|
|
!previousEntry //No previous entry
|
|
|| previousEntry.type != ChatRoomModel.MessageEntry // Previous entry is a message
|
|
|| previousEntry.fromSipAddress != $chatEntry.fromSipAddress // Different user
|
|
|| (new Date(previousEntry.timestamp)).setHours(0, 0, 0, 0) != (new Date($chatEntry.timestamp)).setHours(0, 0, 0, 0) // Same day == section
|
|
)
|
|
}
|
|
TooltipArea{
|
|
delay:0
|
|
text:avatar.username+'\n'+$chatEntry.fromSipAddress
|
|
maxWidth: mainRow.width
|
|
isClickable: true
|
|
onClicked: {
|
|
window.mainSearchBar.text = $chatEntry.fromSipAddress
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Message {
|
|
id: message
|
|
|
|
onCopyAllDone: mainRow.copyAllDone()
|
|
onCopySelectionDone: mainRow.copySelectionDone()
|
|
onReplyClicked: mainRow.replyClicked()
|
|
onForwardClicked: mainRow.forwardClicked()
|
|
onGoToMessage: mainRow.goToMessage(message)
|
|
onConferenceIcsCopied: mainRow.conferenceIcsCopied()
|
|
onAddContactClicked: mainRow.addContactClicked(contactAddress)
|
|
onViewContactClicked: mainRow.viewContactClicked(contactAddress)
|
|
|
|
Layout.fillWidth: true
|
|
Layout.rightMargin: 10
|
|
|
|
// Not a style. Workaround to avoid a 0 width.
|
|
// Arbitrary value.
|
|
Layout.minimumWidth: 1
|
|
|
|
backgroundColorModel: ChatStyle.entry.message.incoming.backgroundColor
|
|
}
|
|
}
|