Fixed image preview
[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         CameraToolBar {
84                 id: toolBar
85
86                 property bool show: true
87
88                 manualBack: true
89                 expanded: true
90                 anchors.bottom: parent.bottom
91                 anchors.bottomMargin: show ? 20 : -1 * (height + 20)
92                 anchors.left: parent.left
93                 anchors.leftMargin: 20
94                 opacity: 0.5
95
96                 Behavior on anchors.bottomMargin {
97                         PropertyAnimation { duration: 200; }
98                 }
99
100                 onClicked: {
101                         page.popTwice = true;
102                         video.stop();
103                 }
104
105                 items: [
106                         ToolIcon { iconId: "icon-m-toolbar-mediacontrol-stop-white"; onClicked: { video.stop(); } },
107                         Slider {
108                                 id: slider
109                                 height: toolBar.height
110                                 anchors.verticalCenter: parent.verticalCenter
111
112                                 platformStyle: SliderStyle {
113                                         handleBackground: ""
114                                         handleBackgroundPressed: ""
115                                 }
116
117                                 minimumValue: 0
118                                 maximumValue: video.duration
119                                 value: video.position
120                                 orientation: Qt.Horizontal
121
122                                 onPressedChanged: {
123                                         if (!slider.pressed) {
124                                                 video.position = slider.value;
125                                         }
126                                 }
127                         },
128                         ToolIcon {
129                                 id: control
130                                 iconId: !video.paused ? "icon-m-toolbar-mediacontrol-pause-white" : "icon-m-toolbar-mediacontrol-play-white"; onClicked: video.toggle();
131                         }
132                 ]
133         }
134 }