Use zoom keys to start/stop video recording
authorMohammed Sameer <msameer@foolab.org>
Mon, 11 Mar 2013 22:05:25 +0000 (00:05 +0200)
committerMohammed Sameer <msameer@foolab.org>
Mon, 11 Mar 2013 22:05:25 +0000 (00:05 +0200)
qml/RecordingPage.qml
qml/VideoPage.qml
qml/ZoomCaptureButton.qml [new file with mode: 0644]
qml/qml.qrc

index e40830f..3dffe72 100644 (file)
@@ -100,6 +100,11 @@ CameraPage {
                 }
         }
 
+        ZoomCaptureButton {
+                page: page
+                onReleased: page.stopRecording();
+        }
+
         CaptureButton {
                 id: recording
                 anchors.right: parent.right
index 147e66a..8c0c264 100644 (file)
@@ -55,6 +55,11 @@ CameraPage {
                 openFileNow("RecordingPage.qml");
         }
 
+        ZoomCaptureButton {
+                page: page
+                onReleased: page.startRecording();
+        }
+
         CaptureButton {
                 id: recording
                 anchors.right: parent.right
diff --git a/qml/ZoomCaptureButton.qml b/qml/ZoomCaptureButton.qml
new file mode 100644 (file)
index 0000000..b2bef31
--- /dev/null
@@ -0,0 +1,80 @@
+// -*- qml -*-
+
+/*!
+ * This file is part of CameraPlus.
+ *
+ * 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
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+import QtQuick 1.1
+import com.nokia.meego 1.1
+import CameraPlus 1.0
+
+Item {
+        id: zoomHandler
+        property Item page
+        property bool zoomPressed: false
+
+        signal pressed();
+        signal released();
+
+        property bool active: settings.zoomAsShutter && page.status == PageStatus.Active && Qt.application.active
+
+        function handlePress() {
+                if (!zoomHandler.active || zoomHandler.zoomPressed) {
+                        return;
+                }
+
+                zoomHandler.zoomPressed = true;
+                zoomHandler.pressed();
+        }
+
+        function handleRelease() {
+                if (!zoomHandler.active || !zoomHandler.zoomPressed) {
+                        return;
+                }
+
+                zoomHandler.zoomPressed = false;
+
+                zoomHandler.released();
+        }
+
+        Connections {
+                id: zoomConnection
+                target: keys
+
+                onActiveChanged: {
+                        if (!zoomConnection.active) {
+                                zoomHandler.zoomPressed = false;
+                        }
+                }
+
+                onVolumeUpPressed: zoomHandler.handlePress();
+                onVolumeDownPressed: zoomHandler.handlePress();
+                onVolumeUpReleased: zoomHandler.handleRelease();
+                onVolumeDownReleased: zoomHandler.handleRelease();
+        }
+
+        Connections {
+                target: Qt.application
+                onActiveChanged: {
+                        if (!Qt.application.active) {
+                                zoomHandler.zoomPressed = false;
+                        }
+                }
+        }
+}
index 9f56db1..a45898b 100644 (file)
@@ -41,5 +41,6 @@
        <file>ImageResolutionSettings.qml</file>
        <file>VideoSettingsDialog.qml</file>
        <file>VideoResolutionSettings.qml</file>
+       <file>ZoomCaptureButton.qml</file>
     </qresource>
 </RCC>