mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-20 13:18:06 +00:00
144 lines
3.6 KiB
QML
144 lines
3.6 KiB
QML
import QtQuick 2.7
|
|
import QtQuick.Layouts 1.3
|
|
import QtQuick.Controls 2.5
|
|
import QtQuick.Shapes 1.10
|
|
|
|
|
|
import Common 1.0
|
|
import Common.Styles 1.0
|
|
import Linphone 1.0
|
|
import Linphone.Styles 1.0
|
|
import ColorsList 1.0
|
|
|
|
import UtilsCpp 1.0
|
|
|
|
import 'Timeline.js' as Logic
|
|
import 'qrc:/ui/scripts/Utils/utils.js' as Utils
|
|
|
|
// =============================================================================
|
|
ColumnLayout{
|
|
id: mainItem
|
|
signal entrySelected(var model)
|
|
|
|
Layout.fillHeight: true
|
|
spacing: 0
|
|
// HEADER
|
|
Rectangle {
|
|
id: legendArea
|
|
Layout.preferredWidth: mainItem.width
|
|
Layout.preferredHeight: 50
|
|
Layout.alignment: Qt.AlignTop
|
|
color: CallTimelineStyle.backgroundColor.normal.color
|
|
RowLayout{
|
|
anchors.fill: parent
|
|
spacing: 2
|
|
Text {
|
|
Layout.preferredHeight: parent.height
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: 10
|
|
color: CallTimelineStyle.colorModel.color
|
|
font.pointSize: CallTimelineStyle.pointSize
|
|
font.weight: Font.Bold
|
|
font.capitalization: Font.Capitalize
|
|
//: 'Call list' : Call histories title
|
|
text: qsTr('callListTitle').toLowerCase()
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
|
|
ActionButton {
|
|
id:filterButton
|
|
Layout.alignment: Qt.AlignRight
|
|
isCustom: true
|
|
colorSet: CallTimelineStyle.filterAction
|
|
toggled: view.model.filterFlags != 0 && view.model.filterFlags != CallHistoryProxyModel.All
|
|
|
|
onClicked: filterMenu.open()
|
|
Menu{
|
|
id: filterMenu
|
|
MenuItem{
|
|
id: incomingFilter
|
|
//: 'Incoming' : Filter label for incoming call
|
|
text: qsTr('incomingFilter')
|
|
checkable: true
|
|
}
|
|
MenuItem{
|
|
id: outgoingFilter
|
|
//: 'Outgoing' : Filter label for outgoing call
|
|
text: qsTr('outgoingFilter')
|
|
checkable: true
|
|
}
|
|
MenuItem{
|
|
id: missedFilter
|
|
//: 'Missed' : Filter label for missed call
|
|
text: qsTr('missedFilter')
|
|
checkable: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// -------------------------------------------------------------------------
|
|
// Search.
|
|
// -------------------------------------------------------------------------
|
|
Rectangle{
|
|
id:searchView
|
|
Layout.preferredWidth: mainItem.width
|
|
Layout.preferredHeight: 50
|
|
Layout.alignment: Qt.AlignCenter
|
|
color: legendArea.color
|
|
TextField {
|
|
id:searchBar
|
|
anchors.fill: parent
|
|
anchors.rightMargin: 10
|
|
anchors.leftMargin: 10
|
|
anchors.topMargin: 5
|
|
anchors.bottomMargin: 10
|
|
width: parent.width - 14
|
|
icon: text == '' ? 'search_custom' : 'close_custom'
|
|
iconSize: 30
|
|
overwriteColor: CallTimelineStyle.searchField.colorModel.color
|
|
//: 'Search in the list' : ths is a placeholder when searching something in a list
|
|
placeholderText: qsTr('searchListPlaceholderText')
|
|
|
|
onTextChanged: searchDelay.restart()
|
|
font.pointSize: CallTimelineStyle.searchField.pointSize
|
|
Timer{
|
|
id: searchDelay
|
|
interval: 600
|
|
repeat: false
|
|
onTriggered: view.model.filterText = searchBar.text
|
|
}
|
|
}
|
|
}
|
|
|
|
ScrollableListView {
|
|
id: view
|
|
Layout.fillHeight: true
|
|
Layout.preferredWidth: mainItem.width
|
|
currentIndex: -1
|
|
|
|
model: CallHistoryProxyModel{
|
|
filterFlags: (incomingFilter.checked ? CallHistoryProxyModel.Incoming : 0)
|
|
| (outgoingFilter.checked ? CallHistoryProxyModel.Outgoing : 0)
|
|
| (missedFilter.checked ? CallHistoryProxyModel.Missed : 0)
|
|
}
|
|
delegate: Loader{
|
|
width: view.contentWidth
|
|
asynchronous: index > 20
|
|
active: true
|
|
sourceComponent: CallTimelineItem{
|
|
callHistoryModel: $modelData
|
|
modelIndex: index
|
|
Connections{
|
|
target: $modelData
|
|
onSelectedChanged:{
|
|
if(selected) {
|
|
view.currentIndex = index;
|
|
mainItem.entrySelected(model)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|