111 lines
2.9 KiB
QML
111 lines
2.9 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import qs.Commons
|
|
import qs.Services
|
|
import qs.Widgets
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property string icon: ""
|
|
property string text: ""
|
|
property string suffix: ""
|
|
property string tooltipText: ""
|
|
property bool autoHide: false
|
|
property bool forceOpen: false
|
|
property bool forceClose: false
|
|
property bool disableOpen: false
|
|
property bool rightOpen: false
|
|
property bool hovered: false
|
|
property bool compact: false
|
|
|
|
readonly property string barPosition: Settings.data.bar.position
|
|
readonly property bool isVerticalBar: barPosition === "left" || barPosition === "right"
|
|
|
|
signal shown
|
|
signal hidden
|
|
signal entered
|
|
signal exited
|
|
signal clicked
|
|
signal rightClicked
|
|
signal middleClicked
|
|
signal wheel(int delta)
|
|
|
|
// Dynamic sizing based on loaded component
|
|
width: pillLoader.item ? pillLoader.item.width : 0
|
|
height: pillLoader.item ? pillLoader.item.height : 0
|
|
|
|
// Loader to switch between vertical and horizontal pill implementations
|
|
Loader {
|
|
id: pillLoader
|
|
sourceComponent: isVerticalBar ? verticalPillComponent : horizontalPillComponent
|
|
|
|
Component {
|
|
id: verticalPillComponent
|
|
BarPillVertical {
|
|
icon: root.icon
|
|
text: root.text
|
|
suffix: root.suffix
|
|
tooltipText: root.tooltipText
|
|
autoHide: root.autoHide
|
|
forceOpen: root.forceOpen
|
|
forceClose: root.forceClose
|
|
disableOpen: root.disableOpen
|
|
rightOpen: root.rightOpen
|
|
hovered: root.hovered
|
|
compact: root.compact
|
|
onShown: root.shown()
|
|
onHidden: root.hidden()
|
|
onEntered: root.entered()
|
|
onExited: root.exited()
|
|
onClicked: root.clicked()
|
|
onRightClicked: root.rightClicked()
|
|
onMiddleClicked: root.middleClicked()
|
|
onWheel: delta => root.wheel(delta)
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: horizontalPillComponent
|
|
BarPillHorizontal {
|
|
icon: root.icon
|
|
text: root.text
|
|
suffix: root.suffix
|
|
tooltipText: root.tooltipText
|
|
autoHide: root.autoHide
|
|
forceOpen: root.forceOpen
|
|
forceClose: root.forceClose
|
|
disableOpen: root.disableOpen
|
|
rightOpen: root.rightOpen
|
|
hovered: root.hovered
|
|
compact: root.compact
|
|
onShown: root.shown()
|
|
onHidden: root.hidden()
|
|
onEntered: root.entered()
|
|
onExited: root.exited()
|
|
onClicked: root.clicked()
|
|
onRightClicked: root.rightClicked()
|
|
onMiddleClicked: root.middleClicked()
|
|
onWheel: delta => root.wheel(delta)
|
|
}
|
|
}
|
|
}
|
|
|
|
function show() {
|
|
if (pillLoader.item && pillLoader.item.show) {
|
|
pillLoader.item.show()
|
|
}
|
|
}
|
|
|
|
function hide() {
|
|
if (pillLoader.item && pillLoader.item.hide) {
|
|
pillLoader.item.hide()
|
|
}
|
|
}
|
|
|
|
function showDelayed() {
|
|
if (pillLoader.item && pillLoader.item.showDelayed) {
|
|
pillLoader.item.showDelayed()
|
|
}
|
|
}
|
|
}
|