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