/*!
* This file is part of CameraPlus.
*
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-import QtQuick 1.1
-import com.nokia.meego 1.1
+import QtQuick 2.0
import CameraPlus 1.0
Item {
- id: postCaptureItem
- property bool isVideo: itemData.type.search("nmm#Video") > 0
- property alias error: image.error
- property variant itemData: item
- property bool isCurrentItem: PathView.isCurrentItem
- signal clicked
-
- onIsCurrentItemChanged: {
- if (isCurrentItem) {
- page.currentItem = postCaptureItem;
- }
+ id: postCaptureItem
+
+ property bool isVideo: itemData.type.search("nmm#Video") > 0
+ property alias error: image.error
+ property variant itemData: item
+ property bool playing: loader.source != ""
+ signal clicked
+ clip: true
+
+ function startPlayback() {
+ loader.source = Qt.resolvedUrl("VideoPlayerPage.qml")
+ loader.item.source = itemData.url
+ if (!loader.item.play()) {
+ showError(qsTr("Error playing video. Please try again."))
+ loader.source = ""
+ }
+ }
+
+ function stopPlayback() {
+ if (loader.item) {
+ loader.item.stop()
+ }
+ }
+
+ Loader {
+ id: loader
+ anchors.fill: parent
+ }
+
+ Connections {
+ target: loader.item
+ onFinished: loader.source = ""
+ }
+
+ FullScreenThumbnail {
+ id: image
+ source: itemData.url
+ mimeType: itemData.mimeType
+ rotation: calculateRotation(orientation.orientation)
+ width: isPortrait ? parent.height : parent.width - 10
+ height: isPortrait ? parent.width - 10 : parent.height
+ anchors.centerIn: parent
+ visible: loader.source == ""
+ property bool isPortrait: rotation == -90
+
+ Behavior on width {
+ PropertyAnimation { duration: 100 }
}
- function startPlayback() {
- openFileNow("VideoPlayerPage.qml");
- pageStack.currentPage.source = itemData.url;
- pageStack.currentPage.play();
+ Behavior on height {
+ PropertyAnimation { duration: 100 }
}
- Label {
- anchors.fill: parent
- visible: image.error && page.status == PageStatus.Active
- text: qsTr("Failed to load preview");
+ Behavior on rotation {
+ PropertyAnimation { duration: 100 }
+ }
+
+ function calculateRotation(orientation) {
+ switch (orientation) {
+ case CameraOrientation.InvertedLandscape:
+ case CameraOrientation.Landscape:
+ return 0
+ case CameraOrientation.InvertedPortrait:
+ case CameraOrientation.Portrait:
+ return -90
+ default:
+ return 0
+ }
+ }
+
+ MouseArea {
+ id: mouse
+ anchors.fill: parent
+ enabled: true
+ onClicked: postCaptureItem.clicked()
+ }
+
+ Column {
+ anchors.centerIn: parent
+ width: parent.width
+
+ CameraLabel {
+ id: errorLabel
+ width: parent.width
+ visible: image.error
+ text: qsTr("Failed to load preview")
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 32
- }
+ }
- QuillItem {
- id: image
- width: parent.width - 10
- height: parent.height
- anchors.centerIn: parent
-
- visible: page.status == PageStatus.Activating || page.status == PageStatus.Active && !error
-
- Component.onCompleted: initialize(itemData.url, itemData.mimetype);
-
- MouseArea {
- id: mouse
- anchors.fill: parent
- enabled: true
- onClicked: postCaptureItem.clicked();
- }
-
- ToolIcon {
- id: playIcon
- anchors.centerIn: parent
- iconSource: "image://theme/icon-s-music-video-play"
- visible: isVideo
- onClicked: startPlayback();
- }
+ CameraToolIcon {
+ id: playIcon
+ anchors.horizontalCenter: parent.horizontalCenter
+ iconId: cameraTheme.videoPlayIconId
+ visible: isVideo
+ onClicked: startPlayback()
+ }
}
+ }
}