From: Mohammed Sameer Date: Mon, 11 Mar 2013 22:05:25 +0000 (+0200) Subject: Use zoom keys to start/stop video recording X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=commitdiff_plain;h=70f4ba0a064d4a6f210361e61492fd47751e18ec Use zoom keys to start/stop video recording --- diff --git a/qml/RecordingPage.qml b/qml/RecordingPage.qml index e40830f..3dffe72 100644 --- a/qml/RecordingPage.qml +++ b/qml/RecordingPage.qml @@ -100,6 +100,11 @@ CameraPage { } } + ZoomCaptureButton { + page: page + onReleased: page.stopRecording(); + } + CaptureButton { id: recording anchors.right: parent.right diff --git a/qml/VideoPage.qml b/qml/VideoPage.qml index 147e66a..8c0c264 100644 --- a/qml/VideoPage.qml +++ b/qml/VideoPage.qml @@ -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 index 0000000..b2bef31 --- /dev/null +++ b/qml/ZoomCaptureButton.qml @@ -0,0 +1,80 @@ +// -*- qml -*- + +/*! + * This file is part of CameraPlus. + * + * Copyright (C) 2012-2013 Mohammed Sameer + * + * 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; + } + } + } +} diff --git a/qml/qml.qrc b/qml/qml.qrc index 9f56db1..a45898b 100644 --- a/qml/qml.qrc +++ b/qml/qml.qrc @@ -41,5 +41,6 @@ ImageResolutionSettings.qml VideoSettingsDialog.qml VideoResolutionSettings.qml + ZoomCaptureButton.qml