@@ -18,6 +18,7 @@ import QtQuick 2.4
18import QtMultimedia 5.0
18import QtMultimedia 5.0
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20import Ubuntu.Thumbnailer 0.1
20import Ubuntu.Thumbnailer 0.1
21+import "PreviewSingleton"
21import "../../Components"
22import "../../Components"
22import "../../Components/MediaServices"
23import "../../Components/MediaServices"
@@ -36,9 +37,35 @@ PreviewWidget {
36 orientationLock: services.fullscreen
37 orientationLock: services.fullscreen
38 property alias rootItem: services.rootItem
39 property alias rootItem: services.rootItem
40+ readonly property string widgetExtraDataKey: services.source.toString()
42+ onWidgetExtraDataKeyChanged: {
43+ root.restorePlaybackState();
47+ services.mediaPlayer.seek(services.initialPosition);
48+ services.initialPosition = -1;
51+ function storePlaybackState() {
52+ if ((services.mediaPlayer.duration - services.mediaPlayer.position) < 1000) {
53+ // we're at the end of the video
54+ PreviewSingleton.widgetExtraData[widgetExtraDataKey] = 0;
56+ PreviewSingleton.widgetExtraData[widgetExtraDataKey] = services.mediaPlayer.position;
60+ function restorePlaybackState() {
61+ if (PreviewSingleton.widgetExtraData[widgetExtraDataKey] > 0) {
62+ services.initialPosition = PreviewSingleton.widgetExtraData[widgetExtraDataKey];
40 MediaServices {
66 MediaServices {
41 id: services
67 id: services
68+ objectName: "services"
42 width: parent.width
69 width: parent.width
44 actions: sharingAction
71 actions: sharingAction
@@ -47,8 +74,28 @@ PreviewWidget {
47 fullscreen: false
74 fullscreen: false
48 maximumEmbeddedHeight: rootItem.height / 2
75 maximumEmbeddedHeight: rootItem.height / 2
77+ property int initialPosition: -1
79+ readonly property var mediaPlayer: footer.mediaPlayer
80+ readonly property url source: mediaPlayer.source
81+ readonly property int position: mediaPlayer.position
50 onClose: fullscreen = false
83 onClose: fullscreen = false
86+ if (mediaPlayer.playbackState === MediaPlayer.StoppedState) return;
87+ root.storePlaybackState();
91+ target: services.mediaPlayer
92+ ignoreUnknownSignals: true
94+ // at the first playback of the file, do a seek()
95+ if (services.initialPosition > 0) root.seek();
53 id: sharingAction
100 id: sharingAction
54 iconName: "share"
101 iconName: "share"