Autohide video player toolbar after 3 seconds of inactivity
[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         Timer {
52                 id: hideTimer
53                 running: toolBar.show
54                 interval: 3000
55                 onTriggered: toolBar.show = false;
56         }
57
58                 Video {
59                 id: video
60                 anchors.fill: parent
61
62                 function toggle() {
63                         if (!video.paused) {
64                                 video.pause();
65                         }
66                         else {
67                                 video.play();
68                         }
69                 }
70
71                 onStopped: {
72                         source = "";
73                         pageStack.pop(undefined, true);
74
75                         if (page.popTwice) {
76                                 pageStack.pop(undefined);
77                         }
78                 }
79                 }
80
81         Connections {
82                 target: Qt.application
83                 onActiveChanged: {
84                         if (!Qt.application.active) {
85                                 video.stop();
86                         }
87                 }
88         }
89
90         CameraToolBar {
91                 id: toolBar
92
93                 property bool show: true
94
95                 manualBack: true
96                 expanded: true
97                 anchors.bottom: parent.bottom
98                 anchors.bottomMargin: show ? 20 : -1 * (height + 20)
99                 anchors.left: parent.left
100                 anchors.leftMargin: 20
101                 opacity: 0.5
102
103                 Behavior on anchors.bottomMargin {
104                         PropertyAnimation { duration: 200; }
105                 }
106
107                 onClicked: {
108                         page.popTwice = true;
109                         video.stop();
110                 }
111
112                 items: [
113                         ToolIcon { iconId: "icon-m-toolbar-mediacontrol-stop-white"; onClicked: { video.stop(); } },
114                         Slider {
115                                 id: slider
116                                 height: toolBar.height
117                                 anchors.verticalCenter: parent.verticalCenter
118
119                                 platformStyle: SliderStyle {
120                                         handleBackground: ""
121                                         handleBackgroundPressed: ""
122                                 }
123
124                                 minimumValue: 0
125                                 maximumValue: video.duration
126                                 value: video.position
127                                 orientation: Qt.Horizontal
128
129                                 onPressedChanged: {
130                                         if (!slider.pressed) {
131                                                 video.position = slider.value;
132                                         }
133
134                                         hideTimer.restart();
135                                 }
136                         },
137                         ToolIcon {
138                                 id: control
139                                 iconId: !video.paused ? "icon-m-toolbar-mediacontrol-pause-white" : "icon-m-toolbar-mediacontrol-play-white"
140                                 onClicked: {
141                                         video.toggle();
142                                         hideTimer.restart();
143                                 }
144                         }
145                 ]
146         }
147 }