on xenial help sign in
Merge previews-in-order
commitc7add694af5e81b68da9e2b39db1ef39edf16c08 authorAlberto Mardegan <alberto.mardegan@canonical.com> dateMon 17 Aug 2015, 14:30 (11 years ago) parente322859673ab8e
2 files changed+35−19
qml/Dash/GenericScopeView.qml+21−15 qml/Dash/PreviewListView.qml+14−4
qml/Dash/GenericScopeView.qml+21−15
@@ -99,23 +99,25 @@ FocusScope {
9999 function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
100100 clearMaybePreviewData();
101101
102− if (scope.preview(result, categoryId)) {
103− openPreview(index, resultsModel, limitedCategoryItemCount, categoryId);
104− }
102+ openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId);
105103 }
106104
107− function openPreview(index, resultsModel, limitedCategoryItemCount, categoryId) {
108− if (limitedCategoryItemCount > 0) {
109− previewLimitModel.model = resultsModel;
110− previewLimitModel.limit = limitedCategoryItemCount;
111− subPageLoader.model = previewLimitModel;
112− } else {
113− subPageLoader.model = resultsModel;
105+ function openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId) {
106+ var previewStack = scope.preview(result, categoryId);
107+ if (previewStack) {
108+ if (limitedCategoryItemCount > 0) {
109+ previewLimitModel.model = resultsModel;
110+ previewLimitModel.limit = limitedCategoryItemCount;
111+ subPageLoader.model = previewLimitModel;
112+ } else {
113+ subPageLoader.model = resultsModel;
114+ }
115+ subPageLoader.initialIndex = -1;
116+ subPageLoader.initialIndex = index;
117+ subPageLoader.categoryId = categoryId;
118+ subPageLoader.previewStack = previewStack;
119+ subPageLoader.openSubPage("preview");
114120 }
115− subPageLoader.initialIndex = -1;
116− subPageLoader.initialIndex = index;
117− subPageLoader.categoryId = categoryId;
118− subPageLoader.openSubPage("preview");
119121 }
120122
121123 Binding {
@@ -163,7 +165,8 @@ FocusScope {
163165 onHideDash: subPageLoader.closeSubPage()
164166 onPreviewRequested: { // (QVariant const& result)
165167 if (result === scopeView.maybePreviewResult) {
166− openPreview(scopeView.maybePreviewIndex,
168+ openPreview(result,
169+ scopeView.maybePreviewIndex,
167170 scopeView.maybePreviewResultsModel,
168171 scopeView.maybePreviewLimitedCategoryItemCount,
169172 scopeView.maybePreviewCategoryId);
@@ -758,6 +761,7 @@ FocusScope {
758761 property var scope: scopeView.scope
759762 property var scopeStyle: scopeView.scopeStyle
760763 property int initialIndex: -1
764+ property var previewStack;
761765 property string categoryId
762766 property var model: null
763767
@@ -791,6 +795,8 @@ FocusScope {
791795 item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
792796 item.model = Qt.binding(function() { return subPageLoader.model; } )
793797 item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
798+ item.initialIndexPreviewStack = subPageLoader.previewStack;
799+ subPageLoader.previewStack = null;
794800 }
795801 open = true;
796802 }
qml/Dash/PreviewListView.qml+14−4
@@ -24,9 +24,11 @@ Item {
2424 id: root
2525
2626 property int initialIndex: -1
27+ property var initialIndexPreviewStack: null
2728 property var scope: null
2829 property var scopeStyle: null
2930 property string categoryId
31+ property bool usedInitialIndex: false
3032
3133 property alias showSignatureLine: header.showSignatureLine
3234
@@ -85,9 +87,9 @@ Item {
8587 }
8688
8789 onModelChanged: {
88− if (count > 0 && initialIndex >= 0) {
90+ if (count > 0 && initialIndex >= 0 && !usedInitialIndex) {
91+ usedInitialIndex = true;
8992 previewListView.positionViewAtIndex(initialIndex, ListView.SnapPosition);
90− initialIndex = -1;
9193 }
9294 }
9395
@@ -100,8 +102,16 @@ Item {
100102 isCurrent: ListView.isCurrentItem
101103
102104 previewModel: {
103− var previewStack = root.scope.preview(result, root.categoryId);
104− return previewStack.getPreviewModel(0);
105+ if (root.open) {
106+ if (index === root.initialIndex) {
107+ return root.initialIndexPreviewStack.getPreviewModel(0);
108+ } else {
109+ var previewStack = root.scope.preview(result, root.categoryId);
110+ return previewStack.getPreviewModel(0);
111+ }
112+ } else {
113+ return null;
114+ }
105115 }
106116 scopeStyle: root.scopeStyle
107117 }