summaryrefslogtreecommitdiffstats
path: root/examples/declarative/slideswitch/content/Switch.qml
diff options
context:
space:
mode:
Diffstat (limited to 'examples/declarative/slideswitch/content/Switch.qml')
-rw-r--r--examples/declarative/slideswitch/content/Switch.qml63
1 files changed, 63 insertions, 0 deletions
diff --git a/examples/declarative/slideswitch/content/Switch.qml b/examples/declarative/slideswitch/content/Switch.qml
new file mode 100644
index 0000000..b65936a
--- /dev/null
+++ b/examples/declarative/slideswitch/content/Switch.qml
@@ -0,0 +1,63 @@
+import Qt 4.6
+
+Item {
+ id: mySwitch
+ width: background.width; height: background.height
+
+ property bool on: false
+
+ Script {
+ function toggle() {
+ if (mySwitch.state == "On")
+ mySwitch.state = "Off";
+ else
+ mySwitch.state = "On";
+ }
+
+ function dorelease() {
+ if (knob.x == 1) {
+ if (mySwitch.state == "Off")
+ return;
+ }
+
+ if (knob.x == 78) {
+ if (mySwitch.state == "On")
+ return;
+ }
+ toggle();
+ }
+ }
+
+ Image {
+ id: background; source: "background.svg"
+ MouseRegion { anchors.fill: parent; onClicked: toggle() }
+ }
+
+ Image {
+ id: knob; source: "knob.svg"; x: 1; y: 2
+
+ MouseRegion {
+ anchors.fill: parent
+ drag.target: knob; drag.axis: "XAxis"; drag.minimumX: 1; drag.maximumX: 78
+ onClicked: toggle()
+ onReleased: dorelease()
+ }
+ }
+
+ states: [
+ State {
+ name: "On"
+ PropertyChanges { target: knob; x: 78 }
+ PropertyChanges { target: mySwitch; on: true }
+ },
+ State {
+ name: "Off"
+ PropertyChanges { target: knob; x: 1 }
+ PropertyChanges { target: mySwitch; on: false }
+ }
+ ]
+
+ transitions: Transition {
+ NumberAnimation { matchProperties: "x"; easing: "easeInOutQuad"; duration: 200 }
+ }
+}