mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-29 20:23:04 +02:00
149 lines
3.5 KiB
QML
149 lines
3.5 KiB
QML
import QtQuick 2.0
|
|
import QtGraphicalEffects 1.0
|
|
|
|
Item {
|
|
id: tabletButton
|
|
property string text: "EDIT"
|
|
property string icon: "icons/edit-icon.svg"
|
|
property bool isActive: false
|
|
width: 129
|
|
height: 129
|
|
|
|
signal clicked()
|
|
|
|
function changeProperty(key, value) {
|
|
tabletButton[key] = value;
|
|
}
|
|
|
|
Rectangle {
|
|
id: buttonBg
|
|
color: "#2b2b2b"
|
|
opacity: 0.2
|
|
radius: 8
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 0
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 0
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 0
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 0
|
|
}
|
|
|
|
Rectangle {
|
|
id: buttonOutline
|
|
color: "#00000000"
|
|
opacity: 0.2
|
|
radius: 8
|
|
z: 1
|
|
border.width: 2
|
|
border.color: "#ffffff"
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 0
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 0
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 0
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 0
|
|
}
|
|
|
|
|
|
Image {
|
|
id: icon
|
|
width: 60
|
|
height: 60
|
|
visible: false
|
|
anchors.bottom: text.top
|
|
anchors.bottomMargin: 5
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
fillMode: Image.Stretch
|
|
source: "../../../" + tabletButton.icon
|
|
}
|
|
|
|
ColorOverlay {
|
|
id: iconColorOverlay
|
|
anchors.fill: icon
|
|
source: icon
|
|
color: "#ffffff"
|
|
}
|
|
|
|
Text {
|
|
id: text
|
|
color: "#ffffff"
|
|
text: tabletButton.text
|
|
font.bold: true
|
|
font.pixelSize: 18
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 20
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
onClicked: {
|
|
console.log("Tablet Button Clicked!");
|
|
if (tabletButton.isActive) {
|
|
tabletButton.state = "base state";
|
|
tabletButton.isActive = false;
|
|
} else {
|
|
tabletButton.state = "active state";
|
|
tabletButton.isActive = true;
|
|
}
|
|
tabletButton.clicked();
|
|
}
|
|
onEntered: {
|
|
console.log("Tablet Button Hovered!");
|
|
tabletButton.state = "hover state";
|
|
}
|
|
onExited: {
|
|
console.log("Tablet Button Unhovered!");
|
|
if (tabletButton.isActive) {
|
|
tabletButton.state = "active state";
|
|
} else {
|
|
tabletButton.state = "base state";
|
|
}
|
|
}
|
|
}
|
|
|
|
states: [
|
|
State {
|
|
name: "hover state"
|
|
|
|
PropertyChanges {
|
|
target: buttonOutline
|
|
border.color: "#1fc6a6"
|
|
opacity: 1
|
|
}
|
|
},
|
|
State {
|
|
name: "active state"
|
|
|
|
PropertyChanges {
|
|
target: buttonOutline
|
|
border.color: "#1fc6a6"
|
|
opacity: 1
|
|
}
|
|
|
|
PropertyChanges {
|
|
target: buttonBg
|
|
color: "#1fc6a6"
|
|
opacity: 1
|
|
}
|
|
|
|
PropertyChanges {
|
|
target: text
|
|
color: "#333333"
|
|
}
|
|
|
|
PropertyChanges {
|
|
target: iconColorOverlay
|
|
color: "#333333"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
|