@@ -72,28 +72,39 @@ FocusScope {
72 pageHeaderLoader.item.resetSearch()
72 pageHeaderLoader.item.resetSearch()
75− function itemClicked(index, result, item, itemModel, resultsModel, limitedCategoryItemCount, categoryId) {
75+ property var maybePreviewResult;
76− if (itemModel.uri.indexOf("scope://") === 0 || scope.id === "clickscope" || (scope.id === "videoaggregator" && categoryId === "myvideos-getstarted")) {
76+ property int maybePreviewIndex;
77− // TODO Technically it is possible that calling activate() will make the scope emit
77+ property var maybePreviewResultsModel;
78− // previewRequested so that we show a preview but there's no scope that does that yet
78+ property int maybePreviewLimitedCategoryItemCount;
79− // so it's not implemented
79+ property string maybePreviewCategoryId;
80− scope.activate(result)
80+
81− } else {
81+ function clearMaybePreviewData() {
82− if (scope.preview(result)) {
82+ scopeView.maybePreviewResult = undefined;
83− openPreview(index, resultsModel, limitedCategoryItemCount);
83+ scopeView.maybePreviewIndex = -1;
84− }
84+ scopeView.maybePreviewResultsModel = undefined;
85− }
85+ scopeView.maybePreviewLimitedCategoryItemCount = -1;
86+ scopeView.maybePreviewCategoryId = "";
89+ function itemClicked(index, result, itemModel, resultsModel, limitedCategoryItemCount, categoryId) {
90+ scopeView.maybePreviewResult = result;
91+ scopeView.maybePreviewIndex = index;
92+ scopeView.maybePreviewResultsModel = resultsModel;
93+ scopeView.maybePreviewLimitedCategoryItemCount = limitedCategoryItemCount;
94+ scopeView.maybePreviewCategoryId = categoryId;
96+ scope.activate(result, categoryId);
88− function itemPressedAndHeld(index, result, itemModel, resultsModel, limitedCategoryItemCount, categoryId) {
99+ function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
89− if (itemModel.uri.indexOf("scope://") !== 0 && !(scope.id === "videoaggregator" && categoryId === "myvideos-getstarted")) {
100+ clearMaybePreviewData();
90− if (scope.preview(result)) {
102+ if (scope.preview(result, categoryId)) {
91− openPreview(index, resultsModel, limitedCategoryItemCount);
103+ openPreview(index, resultsModel, limitedCategoryItemCount, categoryId);
96− function openPreview(index, resultsModel, limitedCategoryItemCount) {
107+ function openPreview(index, resultsModel, limitedCategoryItemCount, categoryId) {
97 if (limitedCategoryItemCount > 0) {
108 if (limitedCategoryItemCount > 0) {
98 previewLimitModel.model = resultsModel;
109 previewLimitModel.model = resultsModel;
99 previewLimitModel.limit = limitedCategoryItemCount;
110 previewLimitModel.limit = limitedCategoryItemCount;
@@ -103,6 +114,7 @@ FocusScope {
104 subPageLoader.initialIndex = -1;
115 subPageLoader.initialIndex = -1;
105 subPageLoader.initialIndex = index;
116 subPageLoader.initialIndex = index;
117+ subPageLoader.categoryId = categoryId;
106 subPageLoader.openSubPage("preview");
118 subPageLoader.openSubPage("preview");
@@ -149,6 +161,16 @@ FocusScope {
149 target: scopeView.scope
161 target: scopeView.scope
150 onShowDash: subPageLoader.closeSubPage()
162 onShowDash: subPageLoader.closeSubPage()
151 onHideDash: subPageLoader.closeSubPage()
163 onHideDash: subPageLoader.closeSubPage()
164+ onPreviewRequested: { // (QVariant const& result)
165+ if (result === scopeView.maybePreviewResult) {
166+ openPreview(scopeView.maybePreviewIndex,
167+ scopeView.maybePreviewResultsModel,
168+ scopeView.maybePreviewLimitedCategoryItemCount,
169+ scopeView.maybePreviewCategoryId);
171+ clearMaybePreviewData();
154 Connections {
176 Connections {
@@ -357,12 +379,12 @@ FocusScope {
358 Connections {
380 Connections {
359 target: rendererLoader.item
381 target: rendererLoader.item
360− onClicked: {
382+ onClicked: { // (int index, var result, var item, var itemModel)
361− scopeView.itemClicked(index, result, item, itemModel, target.model, categoryItemCount(), baseItem.category);
383+ scopeView.itemClicked(index, result, itemModel, target.model, categoryItemCount(), baseItem.category);
364− onPressAndHold: {
386+ onPressAndHold: { // (int index, var result, var itemModel)
365− scopeView.itemPressedAndHeld(index, result, itemModel, target.model, categoryItemCount(), baseItem.category);
387+ scopeView.itemPressedAndHeld(index, result, target.model, categoryItemCount(), baseItem.category);
368 function categoryItemCount() {
390 function categoryItemCount() {
@@ -736,6 +758,7 @@ FocusScope {
736 property var scope: scopeView.scope
758 property var scope: scopeView.scope
737 property var scopeStyle: scopeView.scopeStyle
759 property var scopeStyle: scopeView.scopeStyle
738 property int initialIndex: -1
760 property int initialIndex: -1
761+ property string categoryId
739 property var model: null
762 property var model: null
741 readonly property bool processing: item && item.processing || false
764 readonly property bool processing: item && item.processing || false
@@ -767,6 +790,7 @@ FocusScope {
767 item.open = Qt.binding(function() { return subPageLoader.open; } )
790 item.open = Qt.binding(function() { return subPageLoader.open; } )
768 item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
791 item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
769 item.model = Qt.binding(function() { return subPageLoader.model; } )
792 item.model = Qt.binding(function() { return subPageLoader.model; } )
793+ item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
771 open = true;
795 open = true;