on xenial help sign in
If you select a favorite in All, go back to Dash not to temp scope
5a2dcf2Albert Astals
qml/Dash/CardCarousel.qml+1−1
@@ -53,7 +53,7 @@ DashRenderer {
53
53
54 objectName: "carouselDelegate" + index
54 objectName: "carouselDelegate" + index
55
55
56− function clicked() { cardCarousel.clicked(index, model.result, loader.item) }
56+ function clicked() { cardCarousel.clicked(index, model.result, loader.item, model) }
57 function pressAndHold() { cardCarousel.pressAndHold(index, model.result) }
57 function pressAndHold() { cardCarousel.pressAndHold(index, model.result) }
58
58
59 sourceComponent: cardTool.cardComponent
59 sourceComponent: cardTool.cardComponent
qml/Dash/CardFilterGrid.qml+1−1
@@ -74,7 +74,7 @@ DashRenderer {
74 }
74 }
75 Connections {
75 Connections {
76 target: loader.item
76 target: loader.item
77− onClicked: genericFilterGrid.clicked(index, result, loader.item)
77+ onClicked: genericFilterGrid.clicked(index, result, loader.item, model)
78 onPressAndHold: genericFilterGrid.pressAndHold(index)
78 onPressAndHold: genericFilterGrid.pressAndHold(index)
79 }
79 }
80 }
80 }
qml/Dash/CardVerticalJournal.qml+1−1
@@ -79,7 +79,7 @@ DashRenderer {
79 }
79 }
80 Connections {
80 Connections {
81 target: loader.item
81 target: loader.item
82− onClicked: root.clicked(index, result, loader.item)
82+ onClicked: root.clicked(index, result, loader.item, model)
83 onPressAndHold: root.pressAndHold(index)
83 onPressAndHold: root.pressAndHold(index)
84 }
84 }
85 }
85 }
qml/Dash/Dash.qml+16−9
@@ -99,15 +99,7 @@ Showable {
99 currentIndex: dashContent.currentIndex
99 currentIndex: dashContent.currentIndex
100 onDone: {
100 onDone: {
101 if (dashContent.parent == scopesOverviewXYScaler) {
101 if (dashContent.parent == scopesOverviewXYScaler) {
102− // Animate Dash growing from the All screen
102+ animateDashFromAll();
103− var currentScopePos = scopesOverview.allScopeCardPosition(dashContent.currentScopeId);
104− scopesOverviewXYScaler.scale = scopesOverview.allCardSize.width / scopesOverviewXYScaler.width;
105− scopesOverviewXYScaler.x = currentScopePos.x -(scopesOverviewXYScaler.width - scopesOverviewXYScaler.width * scopesOverviewXYScaler.scale) / 2;
106− scopesOverviewXYScaler.y = currentScopePos.y -(scopesOverviewXYScaler.height - scopesOverviewXYScaler.height * scopesOverviewXYScaler.scale) / 2;
107− overviewController.growingDashFromAll = true;
108− scopesOverviewXYScaler.scale = 1;
109− scopesOverviewXYScaler.x = 0;
110− scopesOverviewXYScaler.y = 0;
111 }
103 }
112 hide();
104 hide();
113 }
105 }
@@ -115,11 +107,26 @@ Showable {
115 dashContent.setCurrentScopeAtIndex(index, false, false);
107 dashContent.setCurrentScopeAtIndex(index, false, false);
116 hide();
108 hide();
117 }
109 }
110+ onAllFavoriteSelected: {
111+ setCurrentScope(scopeId, false, false);
112+ animateDashFromAll();
113+ hide();
114+ }
118 function hide() {
115 function hide() {
119 overviewController.enableAnimation = true;
116 overviewController.enableAnimation = true;
120 overviewController.progress = 0;
117 overviewController.progress = 0;
121 overviewController.accepted = false;
118 overviewController.accepted = false;
122 }
119 }
120+ function animateDashFromAll() {
121+ var currentScopePos = scopesOverview.allScopeCardPosition(dashContent.currentScopeId);
122+ scopesOverviewXYScaler.scale = scopesOverview.allCardSize.width / scopesOverviewXYScaler.width;
123+ scopesOverviewXYScaler.x = currentScopePos.x -(scopesOverviewXYScaler.width - scopesOverviewXYScaler.width * scopesOverviewXYScaler.scale) / 2;
124+ scopesOverviewXYScaler.y = currentScopePos.y -(scopesOverviewXYScaler.height - scopesOverviewXYScaler.height * scopesOverviewXYScaler.scale) / 2;
125+ overviewController.growingDashFromAll = true;
126+ scopesOverviewXYScaler.scale = 1;
127+ scopesOverviewXYScaler.x = 0;
128+ scopesOverviewXYScaler.y = 0;
129+ }
123
130
124 Connections {
131 Connections {
125 target: scopesOverview.scope
132 target: scopesOverview.scope
qml/Dash/DashRenderer.qml+2−1
@@ -46,7 +46,8 @@ Item {
46 /// @param index is the index of the clicked item
46 /// @param index is the index of the clicked item
47 /// @param result result model of the cliked item, used for activation
47 /// @param result result model of the cliked item, used for activation
48 /// @param item item that has been clicked
48 /// @param item item that has been clicked
49+ /// @param itemModel model of the item
49− signal clicked(int index, var result, var item)
50+ signal clicked(int index, var result, var item, var itemModel)
50
51
51 /// Emitted when the user pressed and held on an item
52 /// Emitted when the user pressed and held on an item
52 /// @param index is the index of the held item
53 /// @param index is the index of the held item
qml/Dash/ScopesOverview.qml+12−4
@@ -51,6 +51,7 @@ Item {
51
51
52 signal done()
52 signal done()
53 signal favoriteSelected(int index)
53 signal favoriteSelected(int index)
54+ signal allFavoriteSelected(var scopeId)
54 signal allSelected(var scope)
55 signal allSelected(var scope)
55
56
56 function allScopeCardPosition(scopeId) {
57 function allScopeCardPosition(scopeId) {
@@ -214,10 +215,17 @@ Item {
214 if (tabBarHolder.currentTab == 0) {
215 if (tabBarHolder.currentTab == 0) {
215 root.favoriteSelected(index)
216 root.favoriteSelected(index)
216 } else {
217 } else {
218+ var favoriteScopesItem = middleItems.itemAt(0).item;
219+ var index = favoriteScopesItem.model.scopeIndex(itemModel.scopeId);
220+ if (index > 0) {
221+ root.allFavoriteSelected(itemModel.scopeId);
222+ } else {
217− // This will result in an openScope
223+ // This will result in an openScope
218− // that we handle in Dash.qml
224+ // that we handle in Dash.qml
225+ // TODO use and not do the openScope thing Q_INVOKABLE unity::shell::scopes::ScopeInterface* getScope(const QString& scope_id) const override;
219− root.allScopeClickedPos = item.mapToItem(null, 0, 0);
226+ root.allScopeClickedPos = item.mapToItem(null, 0, 0);
220− scope.activate(result);
227+ scope.activate(result);
228+ }
221 }
229 }
222 }
230 }
223 onPressAndHold: {
231 onPressAndHold: {
qml/Dash/ScopesOverviewAll.qml+2−2
@@ -25,7 +25,7 @@ Flickable {
25
25
26 property real extraHeight: 0
26 property real extraHeight: 0
27
27
28− signal clicked(int index, var result, var item)
28+ signal clicked(int index, var result, var item, var itemModel)
29 signal pressAndHold(int index)
29 signal pressAndHold(int index)
30
30
31 contentHeight: cardFilterGrid.height + extraHeight
31 contentHeight: cardFilterGrid.height + extraHeight
@@ -47,7 +47,7 @@ Flickable {
47 }
47 }
48
48
49 onClicked: {
49 onClicked: {
50− root.clicked(index, result, item);
50+ root.clicked(index, result, item, itemModel);
51 }
51 }
52 onPressAndHold: {
52 onPressAndHold: {
53 root.pressAndHold(index);
53 root.pressAndHold(index);
tests/mocks/Unity/fake_scopesoverview.cpp+10
@@ -135,6 +135,13 @@ int ScopesOverviewResultsModel::scopeIndex(QString const& id) const
135 return -1;
135 return -1;
136}
136}
137
137
138+QHash<int, QByteArray> ScopesOverviewResultsModel::roleNames() const
139+{
140+ QHash<int, QByteArray> roles = unity::shell::scopes::ResultsModelInterface::roleNames();
141+ roles[RoleBackground + 1] = "scopeId";
142+ return roles;
143+}
144+
138int ScopesOverviewResultsModel::rowCount(const QModelIndex& parent) const
145int ScopesOverviewResultsModel::rowCount(const QModelIndex& parent) const
139{
146{
140 Q_UNUSED(parent);
147 Q_UNUSED(parent);
@@ -164,6 +171,9 @@ ScopesOverviewResultsModel::data(const QModelIndex& index, int role) const
164 case RoleMascot:
171 case RoleMascot:
165 case RoleEmblem:
172 case RoleEmblem:
166 case RoleSummary:
173 case RoleSummary:
174+ case RoleBackground + 1: // scopeId
175+ return m_scopes->scopeAt(index.row(), m_isFavoriteCategory)->id();
176+ break;
167 default:
177 default:
168 return QVariant();
178 return QVariant();
169 }
179 }
tests/mocks/Unity/fake_scopesoverview.h+1
@@ -70,6 +70,7 @@ public:
70
70
71 /* Special API */
71 /* Special API */
72 Q_INVOKABLE int scopeIndex(QString const& id) const;
72 Q_INVOKABLE int scopeIndex(QString const& id) const;
73+ QHash<int, QByteArray> roleNames() const override;
73
74
74private:
75private:
75 Scopes *m_scopes;
76 Scopes *m_scopes;