Volume up and down keys should now work and change zoom
[harmattan/cameraplus] / qml / VideoPlayerPage.qml
1 // -*- qml -*-
2
3 /*!
4  * This file is part of CameraPlus.
5  *
6  * Copyright (C) 2012 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 QtMultimediaKit 1.1
26 import CameraPlus 1.0
27
28 CameraPage {
29         id: page
30
31         property bool popTwice: false
32         controlsVisible: false
33         policyMode: CameraResources.PostCapture
34         needsPipeline: false
35         standbyVisible: false
36
37         property alias source: video.source
38         function play() {
39                 video.play();
40         }
41
42         MouseArea {
43                 anchors.top: parent.top
44                 anchors.bottom: toolBar.top
45                 anchors.left: parent.left
46                 anchors.right: parent.right
47
48                 onClicked: toolBar.show = !toolBar.show
49         }
50
51                 Video {
52                 id: video
53                 anchors.fill: parent
54
55                 function toggle() {
56                         if (!video.paused) {
57                                 video.pause();
58                         }
59                         else {
60                                 video.play();
61                         }
62                 }
63
64                 onStopped: {
65                         source = "";
66                         pageStack.pop(undefined, true);
67
68                         if (page.popTwice) {
69                                 pageStack.pop(undefined);
70                         }
71                 }
72                 }
73
74         Connections {
75                 target: Qt.application
76                 onActiveChanged: {
77                         if (!Qt.application.active) {
78                                 video.stop();
79                         }
80                 }
81         }
82
83         // TODO: auto-hide this
84         CameraToolBar {
85                 id: toolBar
86
87                 property bool show: true
88
89                 manualBack: true
90                 expanded: true
91                 anchors.bottom: parent.bottom
92                 anchors.bottomMargin: show ? 20 : -1 * (height + 20)
93                 anchors.left: parent.left
94                 anchors.leftMargin: 20
95                 opacity: 0.5
96
97                 Behavior on anchors.bottomMargin {
98                         PropertyAnimation { duration: 200; }
99                 }
100
101                 onClicked: {
102                         page.popTwice = true;
103                         video.stop();
104                 }
105
106                 items: [
107                         ToolIcon { iconId: "icon-m-toolbar-mediacontrol-stop-white"; onClicked: { video.stop(); } },
108                         Slider {
109                                 id: slider
110                                 height: toolBar.height
111                                 anchors.verticalCenter: parent.verticalCenter
112
113                                 platformStyle: SliderStyle {
114                                         handleBackground: ""
115                                         handleBackgroundPressed: ""
116                                 }
117
118                                 minimumValue: 0
119                                 maximumValue: video.duration
120                                 value: video.position
121                                 orientation: Qt.Horizontal
122
123                                 onPressedChanged: {
124                                         if (!slider.pressed) {
125                                                 video.position = slider.value;
126                                         }
127                                 }
128                         },
129                         ToolIcon {
130                                 id: control
131                                 iconId: !video.paused ? "icon-m-toolbar-mediacontrol-pause-white" : "icon-m-toolbar-mediacontrol-play-white"; onClicked: video.toggle();
132                         }
133                 ]
134         }
135 }