harbour-seaprint/qml/components/Setting.qml

86 lines
1.7 KiB
QML
Raw Normal View History

2021-07-11 15:27:03 +03:00
import QtQuick 2.6
2019-12-01 22:27:00 +03:00
import Sailfish.Silica 1.0
Item {
height: button.height + (menu != undefined ? menu.height : 0) + resetMenu.height
width: parent.width
2019-12-01 22:27:00 +03:00
property string name
property string prettyName
property int tag
property string subkey: ""
2021-03-21 16:01:19 +03:00
property bool _valid: parent.isValid(name)
property bool valid: _valid
2019-12-01 22:27:00 +03:00
property var choice
2021-03-21 16:01:19 +03:00
property var default_choice: parent.getDefaultChoice(name)
Component.onCompleted: parent.setInitialChoice(this)
onChoiceChanged: parent.choiceMade(this)
2020-11-23 22:29:59 +03:00
2019-12-01 22:27:00 +03:00
signal clicked()
onClicked: {
if (hasMenu)
{
menu.open(this)
}
}
2019-12-01 22:27:00 +03:00
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
}
2019-12-01 22:27:00 +03:00
property var menu
property bool hasMenu: true
2019-12-01 22:27:00 +03:00
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
}
2019-12-01 22:27:00 +03:00
}