mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-25 07:38:11 +00:00
136 lines
3.9 KiB
QML
136 lines
3.9 KiB
QML
import QtQuick 2.7
|
|
import QtQuick.Controls 2.0
|
|
import QtQuick.Layouts 1.3
|
|
|
|
import Common 1.0
|
|
import Linphone 1.0
|
|
|
|
ScrollableListView {
|
|
id: chat
|
|
|
|
model: ListModel {
|
|
ListElement { $dateSection: 1465389121000; $outgoing: true; $timestamp: 1465389121000; $type: 'message'; $content: 'This is it: fefe efzzzzzzzzzz aaaaaaaaa erfeezffeefzfzefzefzezfefez wfef efef e efeffefe fee efefefeefef fefefefefe eff fefefe fefeffww.linphone.org' }
|
|
ListElement { $dateSection: 1465389121000; $timestamp: 1465389133000; $type: 'event'; $content: 'incoming_call' }
|
|
ListElement { $dateSection: 1465389121000; $timestamp: 1465389439000; $type: 'message'; $content: 'Perfect!' }
|
|
ListElement { $dateSection: 1465389121000; $timestamp: 1465389500000; $type: 'event'; $content: 'hangup' }
|
|
ListElement { $dateSection: 1465994221000; $outgoing: true; $timestamp: 1465924321000; $type: 'message'; $content: 'You\'ve heard the expression, "Just believe it and it will come." Well, technically, that is true, however, \'believing\' is not just thinking that you can have it...' }
|
|
ListElement { $dateSection: 1465994221000; $timestamp: 1465924391000; $type: 'event'; $content: 'lost_incoming_call' }
|
|
}
|
|
|
|
Component {
|
|
id: sectionHeading
|
|
|
|
Item {
|
|
implicitHeight: text.height +
|
|
container.anchors.topMargin +
|
|
container.anchors.bottomMargin
|
|
width: parent.width
|
|
|
|
Item {
|
|
anchors.bottomMargin: 10
|
|
anchors.fill: parent
|
|
anchors.leftMargin: 18
|
|
anchors.topMargin: 20
|
|
id: container
|
|
|
|
Text {
|
|
color: '#434343'
|
|
font.bold: true
|
|
id: text
|
|
|
|
// Cast section to integer because Qt convert the
|
|
// $dateSection in string!!!
|
|
text: new Date(+section).toLocaleDateString(
|
|
Qt.locale()
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
section.criteria: ViewSection.FullString
|
|
section.delegate: sectionHeading
|
|
section.property: '$dateSection'
|
|
|
|
delegate: Rectangle {
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 18
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 18
|
|
|
|
// Unable to use `height` property.
|
|
// The height is given by message height.
|
|
implicitHeight: layout.height + 10
|
|
width: parent.width
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
onEntered: parent.state = 'hover'
|
|
onExited: parent.state = ''
|
|
}
|
|
|
|
RowLayout {
|
|
id: layout
|
|
spacing: 0
|
|
|
|
// The height is computed with the message height.
|
|
// Unable to use `height` and `implicitHeight` property.
|
|
width: parent.width
|
|
|
|
// Display time.
|
|
Text {
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.preferredHeight: 30
|
|
Layout.preferredWidth: 50
|
|
color: '#898989'
|
|
font.bold: $type === 'event'
|
|
text: new Date($timestamp).toLocaleString(
|
|
Qt.locale(),
|
|
'hh:mm'
|
|
)
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
|
|
// Icons area.
|
|
Row {
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.preferredHeight: 30
|
|
Layout.preferredWidth: 54
|
|
spacing: 10
|
|
|
|
Icon {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
icon: ($type === 'event' && $content) || ''
|
|
iconSize: 16
|
|
}
|
|
|
|
ActionButton {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
icon: 'delete'
|
|
iconSize: 16
|
|
id: removeAction
|
|
onClicked: chat.model.remove(index)
|
|
visible: false
|
|
}
|
|
}
|
|
|
|
// Display content.
|
|
Loader {
|
|
Layout.fillWidth: true
|
|
id: loader
|
|
source: $type === 'message'
|
|
? (
|
|
'qrc:/ui/modules/Linphone/Chat/' +
|
|
($outgoing ? 'Outgoing' : 'Incoming') +
|
|
'Message.qml'
|
|
) : 'qrc:/ui/modules/Linphone/Chat/Event.qml'
|
|
}
|
|
}
|
|
|
|
states: State {
|
|
name: 'hover'
|
|
PropertyChanges { target: removeAction; visible: true }
|
|
}
|
|
}
|
|
}
|