on xenial help sign in
Optimize scope.preview() calls

Don't call it in PreviewListView if we're still not open (i.e the list is being constructed) Also reuse the call we do in GenericScopeView and pass it down for PreviewListView to use Fixes: #1478022 Approved by: Andrea Cimitan

commit6b67e03179d570afd270e5999970142480fd730b authorAlbert Astals Cid <albert.astals@canonical.com> dateMon 17 Aug 2015, 11:57 (11 years ago) parentae9d4d8673ab8e
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 onCountChanged: {
88− if (count > 0 && initialIndex >= 0) {
90+ if (count > 0 && initialIndex >= 0 && !usedInitialIndex) {
91+ usedInitialIndex = true;
8992 currentIndex = initialIndex;
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 }