opaque/Toolbar.qml

117 lines
2.6 KiB
QML

import QtGraphicalEffects 1.0
import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import "." as Opaque
import "theme"
import "fonts"
Rectangle { // Global Toolbar
id: toolbar
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 2 * Theme.paddingSmall + Math.max(iconSize, paneTitleTextMetric.height)
property int iconSize: Theme.uiIconSizeM
Layout.minimumHeight: height
Layout.maximumHeight: height
color: Theme.toolbarMainColor
property alias leftMenuVisible: btnLeftMenu.visible
property alias backVisible: btnLeftBack.visible
property alias rightMenuVisible: btnRightMenu.visible
property int rightPaneWidth: 0
signal leftMenu()
signal back()
signal rightMenu()
Icon {
id: btnLeftMenu
iconColor: Theme.toolbarIconColor
source: gcd.assetPath + "core/menu-24px.webp"
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
width: toolbar.iconSize
height: toolbar.iconSize
onClicked: { leftMenu() }
}
Icon {
id: btnLeftBack
iconColor: Theme.toolbarIconColor
source: gcd.assetPath + "core/chevron_left-24px.webp"
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
width: toolbar.iconSize
height: toolbar.iconSize
onClicked: { back() }
}
Opaque.Label {
id: paneTitle
width: rightPaneWidth - (btnRightMenu.visible ? btnRightMenu.width : 0) - 2 * Theme.paddingStandard
horizontalAlignment: Text.AlignHCenter
anchors.right: btnRightMenu.visible ? btnRightMenu.left : parent.right
anchors.rightMargin: Theme.paddingStandard
anchors.verticalCenter: parent.verticalCenter
header: true
multiline: false
text: "global toolbar"
}
TextMetrics {
id: paneTitleTextMetric
text: paneTitle.text
font: paneTitle.font
}
Icon {
id: btnRightMenu
iconColor: Theme.toolbarIconColor
source: gcd.assetPath + "core/more_vert-24px.webp"
visible: false
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
width: toolbar.iconSize
height: toolbar.iconSize
onClicked: { rightMenu() }
}
function setTitle(text) {
paneTitle.text = text
paneTitle.visible = true
}
function hideTitle() {
paneTitle.visible = false
}
Connections {
target: gcd
onSetToolbarTitle: function(handle) {
setTitle(handle)
btnRightMenu.visible = true
}
}
}