linphone-desktop/tests/ui/modules/Linphone/Timeline.qml
2016-11-24 16:03:01 +01:00

118 lines
2.9 KiB
QML

import QtQuick 2.7
import QtQuick.Layouts 1.3
import Common 1.0
import Linphone 1.0
import Linphone.Styles 1.0
import Utils 1.0
// ===================================================================
ColumnLayout {
id: timeline
property alias model: view.model
signal entrySelected (var entry)
// -----------------------------------------------------------------
function resetSelectedItem () {
view.currentIndex = -1
}
// -----------------------------------------------------------------
spacing: 0
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: TimelineStyle.legend.height
color: TimelineStyle.legend.backgroundColor
// Legend.
Row {
anchors {
fill: parent
leftMargin: TimelineStyle.legend.leftMargin
rightMargin: TimelineStyle.legend.rightMargin
}
spacing: TimelineStyle.legend.spacing
Icon {
anchors.verticalCenter: parent.verticalCenter
icon: 'history'
iconSize: TimelineStyle.legend.iconSize
}
Text {
color: TimelineStyle.legend.color
font.pointSize: TimelineStyle.legend.fontSize
height: parent.height
text: qsTr('timelineTitle')
verticalAlignment: Text.AlignVCenter
}
}
}
// History.
ScrollableListView {
id: view
Layout.fillHeight: true
Layout.fillWidth: true
currentIndex: -1
delegate: Item {
property var contact: {
Utils.assert(
!Utils.isArray($timelineEntry.sipAddresses),
'Conferences are not supported at this moment.'
)
return ContactsListModel.mapSipAddressToContact(
$timelineEntry.sipAddresses
) || $timelineEntry.sipAddresses
}
height: TimelineStyle.contact.height
width: parent.width
Contact {
anchors.fill: parent
color: view.currentIndex === index
? TimelineStyle.contact.backgroundColor.selected
: (
index % 2 == 0
? TimelineStyle.contact.backgroundColor.a
: TimelineStyle.contact.backgroundColor.b
)
contact: parent.contact
sipAddress: $timelineEntry.sipAddresses
sipAddressColor: view.currentIndex === index
? TimelineStyle.contact.sipAddress.color.selected
: TimelineStyle.contact.sipAddress.color.normal
usernameColor: view.currentIndex === index
? TimelineStyle.contact.username.color.selected
: TimelineStyle.contact.username.color.normal
Loader {
anchors.fill: parent
sourceComponent: TooltipArea {
text: $timelineEntry.timestamp.toLocaleString(
Qt.locale(App.locale()), Locale.ShortFormat
)
}
}
}
MouseArea {
anchors.fill: parent
onClicked: {
view.currentIndex = index
timeline.entrySelected($timelineEntry.sipAddresses)
}
}
}
}
}