Convert TextSwitch to a platform specific component and rename it to CameraTextSwitch
[harmattan/cameraplus] / qml / ZoomSlider.qml
index 3d340d8..0f0b74a 100644 (file)
@@ -3,7 +3,7 @@
 /*!
  * This file is part of CameraPlus.
  *
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-import QtQuick 1.1
-import com.nokia.meego 1.1
+import QtQuick 2.0
 import QtCamera 1.0
 
-Slider {
-        id: slider
-        property alias camera: zoom.camera
-        platformStyle: SliderStyle {
-                // HACK
-                handleBackground: " "
-                handleBackgroundPressed: " "
-        }
+CameraSlider {
+    id: slider
+    property Camera camera: null
+
+    handleBackground: ""
+    handleBackgroundPressed: ""
+
+    Binding {
+        target: camera ? camera.zoom : null
+        property: "value"
+        value: slider.value
+        when: camera != null
+    }
+
+    Connections {
+        target: camera
+        onModeChanged: slider.value = camera.zoom.minimum;
+    }
+
+    Connections {
+        target: keys
 
-        Zoom {
-                id: zoom
-                value: slider.value
+        onVolumeUpPressed: {
+            if (settings.zoomAsShutter) {
+                return;
+            }
+
+            slider.value = Math.min(slider.value + slider.stepSize, slider.maximumValue)
+            hackTimer.running = true
         }
 
-        Connections {
-                target: camera
-                onModeChanged: slider.value = zoom.minimum;
+        onVolumeDownPressed: {
+            if (settings.zoomAsShutter) {
+                return;
+            }
+
+            slider.value = Math.max(slider.value - slider.stepSize, slider.minimumValue)
+            hackTimer.running = true
         }
+    }
 
-        orientation: Qt.Horizontal
-        width: 500
-        height: 50
-        stepSize:0.1
-        minimumValue: zoom.minimum
-        maximumValue: zoom.maximum
+    orientation: Qt.Horizontal
+    width: 500
+    height: 50
+    stepSize:0.1
+    value: camera ? camera.zoom.value : 0
+    minimumValue: camera ? camera.zoom.minimum : 0
+    maximumValue: camera ? camera.zoom.maximum : 0
 
-        state: "hidden"
-        states: [
+    state: "hidden"
+    states: [
         State {
-                name: "visible"
-                when: slider.pressed
-                PropertyChanges { target: slider; opacity: 1.0 }
+            name: "visible"
+            when: slider.pressed || hackTimer.running
+            PropertyChanges { target: slider; opacity: 1.0 }
         },
         State {
-                name: "hidden"
-                when: !slider.pressed
-                PropertyChanges { target: slider; opacity: 0.2 }
-        }]
-
-        transitions: Transition {
-                to: "hidden"
-                SequentialAnimation {
-                        PauseAnimation { duration: 2000 }
-                        NumberAnimation { target: slider; property: "opacity"; duration: 250 }
-                }
+            name: "hidden"
+            when: !slider.pressed
+            PropertyChanges { target: slider; opacity: 0.2 }
         }
+    ]
+
+    transitions: Transition {
+        to: "hidden"
+            SequentialAnimation {
+                PauseAnimation { duration: 2000 }
+                NumberAnimation { target: slider; property: "opacity"; duration: 250 }
+            }
+    }
+
+    Timer {
+        id: hackTimer
+        interval: 1
+    }
 }