@@ -18,6 +18,7 @@ import QtQuick 2.4
1818import QtMultimedia 5.0
1919import Ubuntu.Components 1.3
2020import Ubuntu.Thumbnailer 0.1
21+import "PreviewSingleton"
2122import "../../Components"
2223import "../../Components/MediaServices"
2324
@@ -36,6 +37,23 @@ PreviewWidget {
3637 orientationLock: services.fullscreen
3738
3839 property alias rootItem: services.rootItem
40+ readonly property string widgetExtraDataKey: services.source.toString()
41+
42+ function seek() {
43+ services.mediaPlayer.seek(services.initialPosition);
44+ services.initialPosition = -1;
45+ }
46+
47+ function storePlaybackState() {
48+ PreviewSingleton.widgetExtraData[widgetExtraDataKey] = services.mediaPlayer.position;
49+ }
50+
51+
52+ function restorePlaybackState() {
53+ if (PreviewSingleton.widgetExtraData[widgetExtraDataKey] > 0) {
54+ services.initialPosition = PreviewSingleton.widgetExtraData[widgetExtraDataKey];
55+ }
56+ }
3957
4058 MediaServices {
4159 id: services
@@ -49,6 +67,30 @@ PreviewWidget {
4967
5068 onClose: fullscreen = false
5169
70+ readonly property var mediaPlayer: footer.mediaPlayer
71+ readonly property url source: mediaPlayer.source
72+ readonly property int position: mediaPlayer.position
73+
74+ onSourceChanged: {
75+ root.restorePlaybackState();
76+ }
77+
78+ onPositionChanged: {
79+ if (mediaPlayer.playbackState === MediaPlayer.StoppedState) return;
80+ root.storePlaybackState();
81+ }
82+
83+ property int initialPosition: -1
84+
85+ Connections {
86+ target: services.mediaPlayer
87+ ignoreUnknownSignals: true
88+ onPlaying: {
89+ // at the first playback of the file, do a seek()
90+ if (services.initialPosition > 0) root.seek();
91+ }
92+ }
93+
5294 Action {
5395 id: sharingAction
5496 iconName: "share"