harbour-seaprint/qml/components/Setting.qml
2022-01-14 22:14:06 +01:00

87 lines
1.7 KiB
QML

import QtQuick 2.6
import Sailfish.Silica 1.0
Item {
height: button.height + (menu != undefined ? menu.height : 0) + resetMenu.height
width: parent.width
property string name
property string prettyName
property int tag
property string subkey: ""
property bool _valid: parent.isValid(name)
property bool valid: _valid
property var choice
property var default_choice: parent.getDefaultChoice(name)
property var strings: parent.printer.strings
Component.onCompleted: parent.setInitialChoice(this)
onChoiceChanged: parent.choiceMade(this)
signal clicked()
onClicked: {
if (hasMenu)
{
menu.open(this)
}
}
signal pressAndHold()
onPressAndHold: {
resetMenu.open(this)
}
property alias displayValue: button.value
ValueButton {
id: button
enabled: valid
label: prettyName
onClicked: parent.clicked()
onPressAndHold: parent.pressAndHold()
valueColor: choice != undefined ? Theme.highlightColor : Theme.secondaryHighlightColor
}
property var menu
property bool hasMenu: true
function reset()
{
choice = undefined
}
ContextMenu {
id: resetMenu
MenuItem {
text: qsTr("Reset")
onClicked: reset()
}
}
function highlight()
{
highlightAnimation.start()
}
NumberAnimation
{
id: highlightAnimation
target: fillRectangle
property: "opacity"
from: 0.5
to: 0
duration: 1000
}
Rectangle {
id: fillRectangle
anchors.fill: parent
color: Theme.highlightBackgroundColor
opacity: 0
}
}