mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-23 14:48:15 +00:00
118 lines
2.9 KiB
QML
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|