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

commit673ab8e058149b935750609389c7b8b5c0095a90 authorAlbert Astals Cid <albert.astals@canonical.com> dateWed 5 Aug 2015, 17:36 (11 years ago) parenta3f9d04
2 files changed+35−19
qml/Dash/GenericScopeView.qml+21−15 qml/Dash/PreviewListView.qml+14−4
qml/Dash/GenericScopeView.qml+21−15
@@ -95,23 +95,25 @@ FocusScope {
9595 scopeView.maybePreviewLimitedCategoryItemCount = undefined;
9696 scopeView.maybePreviewCategoryId = "";
9797
98− if (scope.preview(result, categoryId)) {
99− openPreview(index, resultsModel, limitedCategoryItemCount, categoryId);
100− }
98+ openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId);
10199 }
102100
103− function openPreview(index, resultsModel, limitedCategoryItemCount, categoryId) {
104− if (limitedCategoryItemCount > 0) {
105− previewLimitModel.model = resultsModel;
106− previewLimitModel.limit = limitedCategoryItemCount;
107− subPageLoader.model = previewLimitModel;
108− } else {
109− subPageLoader.model = resultsModel;
101+ function openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId) {
102+ var previewStack = scope.preview(result, categoryId);
103+ if (previewStack) {
104+ if (limitedCategoryItemCount > 0) {
105+ previewLimitModel.model = resultsModel;
106+ previewLimitModel.limit = limitedCategoryItemCount;
107+ subPageLoader.model = previewLimitModel;
108+ } else {
109+ subPageLoader.model = resultsModel;
110+ }
111+ subPageLoader.initialIndex = -1;
112+ subPageLoader.initialIndex = index;
113+ subPageLoader.categoryId = categoryId;
114+ subPageLoader.previewStack = previewStack;
115+ subPageLoader.openSubPage("preview");
110116 }
111− subPageLoader.initialIndex = -1;
112− subPageLoader.initialIndex = index;
113− subPageLoader.categoryId = categoryId;
114− subPageLoader.openSubPage("preview");
115117 }
116118
117119 Binding {
@@ -159,7 +161,8 @@ FocusScope {
159161 onHideDash: subPageLoader.closeSubPage()
160162 onPreviewRequested: { // (QVariant const& result)
161163 if (result === scopeView.maybePreviewResult) {
162− openPreview(scopeView.maybePreviewIndex,
164+ openPreview(result,
165+ scopeView.maybePreviewIndex,
163166 scopeView.maybePreviewResultsModel,
164167 scopeView.maybePreviewLimitedCategoryItemCount,
165168 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 }