@@ -18,6 +18,7 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Unity 0.2
2020import "../Components"
21+import "Previews" as Previews
2122
2223Item {
2324 property OpenEffect openEffect: null
@@ -28,7 +29,6 @@ Item {
2829 property alias onScreen: previewListView.onScreen
2930 property alias categoryId: previewListView.categoryId
3031 property alias categoryDelegate: previewListView.categoryDelegate
31− property alias init: previewListView.init
3232 property alias model: previewListView.model
3333 property alias currentIndex: previewListView.currentIndex
3434 property alias currentItem: previewListView.currentItem
@@ -83,11 +83,8 @@ Item {
8383 // when the first preview is ready to be displayed.
8484 property bool init: true
8585
86− PreviewDelegateMapper {
87− id: previewDelegateMapper
88− }
89−
9086 onCurrentIndexChanged: {
87+ if (currentIndex < 0) return;
9188 var row = Math.floor(currentIndex / categoryDelegate.columns);
9289 if (categoryDelegate.collapsedRowCount <= row) {
9390 categoryView.expandedCategoryId = categoryId
@@ -97,9 +94,9 @@ Item {
9794 categoryDelegate.highlightIndex = currentIndex
9895 }
9996
100− if (!init && model !== undefined) {
97+ if (model !== undefined) {
10198 var item = model.get(currentIndex)
102− scope.preview(item.uri, item.icon, item.category, 0, item.mimetype, item.title, item.comment, item.dndUri, item.metadata)
99+ previewListView.currentItem.previewModel = scope.preview(item.result)
103100 }
104101
105102 // Adjust contentY in case we need to change to it to show the next row
@@ -154,58 +151,32 @@ Item {
154151 z: -1
155152 }
156153
157− delegate: Loader {
158− id: previewLoader
159− objectName: "previewLoader" + index
154+ delegate: Previews.Preview {
155+ id: preview
156+ objectName: "preview" + index
160157 height: previewListView.height
161158 width: previewListView.width
162− asynchronous: true
163− source: previewListView.onScreen ?
164− (previewData !== undefined ? previewDelegateMapper.map(previewData.rendererName) : "DashPreviewPlaceholder.qml") : ""
165159
166− onPreviewDataChanged: {
167− if (previewData !== undefined && source.toString().indexOf("DashPreviewPlaceholder.qml") != -1) {
168− previewLoader.opacity = 0;
169− }
170− }
160+ isCurrent: ListView.isCurrentItem
171161
172− onSourceChanged: {
173− if (previewData !== undefined) {
174− fadeIn.start()
175− }
176− }
162+ onPreviewModelChanged: preview.opacity = 0;
163+ onReadyChanged: if (ready) fadeIn.start()
164+// onClose: {
165+// previewListView.open = false
166+// }
177167
178168 PropertyAnimation {
179169 id: fadeIn
180− target: previewLoader
170+ target: preview
181171 property: "opacity"
182172 from: 0.0
183173 to: 1.0
184174 duration: UbuntuAnimation.BriskDuration
185175 }
186176
187− property var previewData
188− property bool valid: item !== null
189−
190− onLoaded: {
191− if (previewListView.onScreen && previewData !== undefined) {
192− item.previewData = Qt.binding(function() { return previewData })
193− item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
194− }
195− }
196−
197− Connections {
198− ignoreUnknownSignals: true
199− target: item
200− onClose: {
201− previewListView.open = false
202− }
203− }
204−
205− function closePreviewSpinner() {
206− if (item) {
207− item.showProcessingAction = false;
208− }
177+ ActivityIndicator {
178+ anchors.centerIn: parent
179+ running: visible
209180 }
210181 }
211182 }