Use zoom keys to start/stop video recording
[harmattan/cameraplus] / qml / ZoomCaptureButton.qml
1 // -*- qml -*-
2
3 /*!
4  * This file is part of CameraPlus.
5  *
6  * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21  */
22
23 import QtQuick 1.1
24 import com.nokia.meego 1.1
25 import CameraPlus 1.0
26
27 Item {
28         id: zoomHandler
29         property Item page
30         property bool zoomPressed: false
31
32         signal pressed();
33         signal released();
34
35         property bool active: settings.zoomAsShutter && page.status == PageStatus.Active && Qt.application.active
36
37         function handlePress() {
38                 if (!zoomHandler.active || zoomHandler.zoomPressed) {
39                         return;
40                 }
41
42                 zoomHandler.zoomPressed = true;
43                 zoomHandler.pressed();
44         }
45
46         function handleRelease() {
47                 if (!zoomHandler.active || !zoomHandler.zoomPressed) {
48                         return;
49                 }
50
51                 zoomHandler.zoomPressed = false;
52
53                 zoomHandler.released();
54         }
55
56         Connections {
57                 id: zoomConnection
58                 target: keys
59
60                 onActiveChanged: {
61                         if (!zoomConnection.active) {
62                                 zoomHandler.zoomPressed = false;
63                         }
64                 }
65
66                 onVolumeUpPressed: zoomHandler.handlePress();
67                 onVolumeDownPressed: zoomHandler.handlePress();
68                 onVolumeUpReleased: zoomHandler.handleRelease();
69                 onVolumeDownReleased: zoomHandler.handleRelease();
70         }
71
72         Connections {
73                 target: Qt.application
74                 onActiveChanged: {
75                         if (!Qt.application.active) {
76                                 zoomHandler.zoomPressed = false;
77                         }
78                 }
79         }
80 }