linux.x86.linphone/Linphone/view/Item/VerticalTabBar.qml
Gaelle Braud 305c969bbb FIXES:
LINQT-1166 handle complete sip uri login
LINQT-1182 hide waiting timer in local sticker
LINQT-368 share contact (by copying its vcard, may be improved in the future)
fix notif ui
fix waiting room camera
fix missed notifications
windows ui fixes
fix LINQT-1189 start call on click not selected contact changed
2024-05-28 16:32:11 +02:00

138 lines
3.5 KiB
QML

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.2 as Control
import QtQuick.Effects
import Linphone
Control.TabBar {
id: mainItem
spacing: 32 * DefaultStyle.dp
topPadding: 36 * DefaultStyle.dp
property var model
readonly property alias cornerRadius: bottomLeftCorner.radius
property AccountGui defaultAccount
onDefaultAccountChanged: {
defaultAccount.core.lRefreshNotifications()
}
component UnreadNotification: Rectangle {
id: unreadNotifications
property int unread: 0
visible: unread > 0
width: 15 * DefaultStyle.dp
height: 15 * DefaultStyle.dp
radius: width/2
color: DefaultStyle.danger_500main
Text{
id: unreadCount
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: DefaultStyle.grey_0
fontSizeMode: Text.Fit
font.pixelSize: 15 * DefaultStyle.dp
text: parent.unread > 100 ? '99+' : parent.unread
}
}
contentItem: ListView {
model: mainItem.contentModel
currentIndex: mainItem.currentIndex
spacing: mainItem.spacing
orientation: ListView.Vertical
// boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.AutoFlickIfNeeded
// snapMode: ListView.SnapToItem
// highlightMoveDuration: 0
// highlightRangeMode: ListView.ApplyRange
// preferredHighlightBegin: 40
// preferredHighlightEnd: width - 40
}
background: Item {
id: background
anchors.fill: parent
Rectangle {
id: bottomLeftCorner
anchors.fill: parent
color: DefaultStyle.main1_500_main
radius: 25 * DefaultStyle.dp
}
Rectangle {
color: DefaultStyle.main1_500_main
anchors.left: parent.left
anchors.top: parent.top
width: parent.width/2
height: parent.height/2
}
Rectangle {
color: DefaultStyle.main1_500_main
x: parent.x + parent.width/2
y: parent.y + parent.height/2
width: parent.width/2
height: parent.height/2
}
}
Repeater {
id: actionsRepeater
model: mainItem.model
Control.TabButton {
id: tabButton
width: mainItem.width
UnreadNotification {
unread: index == 0 ? defaultAccount.core.unreadCallNotifications : index == 2 ? defaultAccount.core.unreadMessageNotifications : 0// modelData.unreadNotifications
anchors.right: parent.right
anchors.rightMargin: 15 * DefaultStyle.dp
anchors.top: parent.top
}
contentItem: ColumnLayout {
// height: tabButton.height
// width: tabButton.width
EffectImage {
id: buttonIcon
property int buttonSize: 24 * DefaultStyle.dp
imageSource: mainItem.currentIndex === index ? modelData.selectedIcon : modelData.icon
Layout.preferredWidth: buttonSize
Layout.preferredHeight: buttonSize
Layout.alignment: Qt.AlignHCenter
fillMode: Image.PreserveAspectFit
colorizationColor: DefaultStyle.grey_0
}
Text {
id: buttonText
text: modelData.label
font {
weight: mainItem.currentIndex === index ? 800 * DefaultStyle.dp : 400 * DefaultStyle.dp
pixelSize: 9 * DefaultStyle.dp
}
color: DefaultStyle.grey_0
Layout.fillWidth: true
Layout.preferredHeight: txtMeter.height
Layout.alignment: Qt.AlignHCenter
horizontalAlignment: Text.AlignHCenter
leftPadding: 3 * DefaultStyle.dp
rightPadding: 3 * DefaultStyle.dp
}
}
TextMetrics {
id: txtMeter
text: modelData.label
font: buttonText.font
Component.onCompleted: {
font.weight = 800 * DefaultStyle.dp
mainItem.implicitWidth = Math.max(mainItem.implicitWidth, advanceWidth + buttonIcon.buttonSize)
}
}
background: Item {
}
}
}
}