on xenial help sign in
Fix mock ApplicationManager to actually update its model correctly.
13f2fe3Gerry Boland
tests/mocks/Unity/Application/ApplicationManager.cpp+32−12
@@ -70,7 +70,6 @@ QVariant ApplicationManager::data(const QModelIndex& index, int role) const {
70ApplicationInfo *ApplicationManager::get(int row) const {
70ApplicationInfo *ApplicationManager::get(int row) const {
71 if (row < 0 || row >= m_runningApplications.size())
71 if (row < 0 || row >= m_runningApplications.size())
72 return nullptr;
72 return nullptr;
73−
74 return m_runningApplications.at(row);
73 return m_runningApplications.at(row);
75}
74}
76
75
@@ -83,6 +82,26 @@ ApplicationInfo *ApplicationManager::findApplication(const QString &appId) const
83 return nullptr;
82 return nullptr;
84}
83}
85
84
85+void ApplicationManager::add(ApplicationInfo* application) {
86+ if (!application)
87+ return;
88+
89+ beginInsertRows(QModelIndex(), m_runningApplications.size(), m_runningApplications.size());
90+ m_runningApplications.append(application);
91+ endInsertRows();
92+ Q_EMIT countChanged();
93+}
94+
95+void ApplicationManager::remove(ApplicationInfo *application) {
96+ int i = m_runningApplications.indexOf(application);
97+ if (i != -1) {
98+ beginRemoveRows(QModelIndex(), i, i);
99+ m_runningApplications.removeAt(i);
100+ endRemoveRows();
101+ Q_EMIT countChanged();
102+ }
103+}
104+
86void ApplicationManager::move(int from, int to) {
105void ApplicationManager::move(int from, int to) {
87 if (from == to) return;
106 if (from == to) return;
88
107
@@ -135,8 +154,7 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
135 Q_UNUSED(arguments)
154 Q_UNUSED(arguments)
136 ApplicationInfo *application = 0;
155 ApplicationInfo *application = 0;
137
156
138− for (int i = 0; i < m_availableApplications.count(); ++i) {
139− ApplicationInfo *availableApp = m_availableApplications[i];
157+ for (ApplicationInfo *availableApp : m_availableApplications) {
140 if (availableApp->appId() == appId) {
158 if (availableApp->appId() == appId) {
141 application = availableApp;
159 application = availableApp;
142 break;
160 break;
@@ -146,40 +164,40 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
146 if (!application)
164 if (!application)
147 return 0;
165 return 0;
148
166
149− m_runningApplications.append(application);
167+ add(application);
150 if (flags.testFlag(ApplicationManager::ForceMainStage)
168 if (flags.testFlag(ApplicationManager::ForceMainStage)
151 && application->stage() == ApplicationInfo::SideStage) {
169 && application->stage() == ApplicationInfo::SideStage) {
152 application->setStage(ApplicationInfo::MainStage);
170 application->setStage(ApplicationInfo::MainStage);
153 }
171 }
154
172
155− application->setFocused(true);
173+ focusApplication(application->appId());
156 Q_EMIT focusedApplicationIdChanged();
174 Q_EMIT focusedApplicationIdChanged();
157 return application;
175 return application;
158}
176}
159
177
160bool ApplicationManager::stopApplication(const QString &appId)
178bool ApplicationManager::stopApplication(const QString &appId)
161{
179{
162− ApplicationInfo *application = this->findApplication(appId);
180+ ApplicationInfo *application = findApplication(appId);
163 if (application == nullptr)
181 if (application == nullptr)
164 return false;
182 return false;
165
183
166− application->setFocused(false);
184+ remove(application);
167− m_runningApplications.removeAll(application);
168 Q_EMIT focusedApplicationIdChanged();
185 Q_EMIT focusedApplicationIdChanged();
169 return true;
186 return true;
170}
187}
171
188
172QString ApplicationManager::focusedApplicationId() const {
189QString ApplicationManager::focusedApplicationId() const {
173 for (ApplicationInfo *app : m_runningApplications) {
190 for (ApplicationInfo *app : m_runningApplications) {
174− if (app->focused())
191+ if (app->focused()) {
175 return app->appId();
192 return app->appId();
193+ }
176 }
194 }
177 return QString();
195 return QString();
178}
196}
179
197
180bool ApplicationManager::focusApplication(const QString &appId)
198bool ApplicationManager::focusApplication(const QString &appId)
181{
199{
182− ApplicationInfo *application = this->findApplication(appId);
200+ ApplicationInfo *application = findApplication(appId);
183 if (application == nullptr)
201 if (application == nullptr)
184 return false;
202 return false;
185
203
@@ -216,7 +234,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
216 }
234 }
217
235
218 // move app to top of stack
236 // move app to top of stack
219− this->move(m_runningApplications.indexOf(application), 0);
237+ move(m_runningApplications.indexOf(application), 0);
220 Q_EMIT focusedApplicationIdChanged();
238 Q_EMIT focusedApplicationIdChanged();
221 return true;
239 return true;
222}
240}
@@ -224,8 +242,10 @@ bool ApplicationManager::focusApplication(const QString &appId)
224void ApplicationManager::unfocusCurrentApplication()
242void ApplicationManager::unfocusCurrentApplication()
225{
243{
226 for (ApplicationInfo *app : m_runningApplications) {
244 for (ApplicationInfo *app : m_runningApplications) {
227− if (app->focused())
245+ if (app->focused()) {
246+ app->hideWindow();
228 app->setFocused(false);
247 app->setFocused(false);
248+ }
229 }
249 }
230 Q_EMIT focusedApplicationIdChanged();
250 Q_EMIT focusedApplicationIdChanged();
231}
251}
tests/mocks/Unity/Application/ApplicationManager.h+2
@@ -111,6 +111,8 @@ class ApplicationManager : public ApplicationManagerInterface {
111 void focusRequested(FavoriteApplication favoriteApplication);
111 void focusRequested(FavoriteApplication favoriteApplication);
112
112
113 private:
113 private:
114+ void add(ApplicationInfo *application);
115+ void remove(ApplicationInfo* application);
114 void showApplicationWindow(ApplicationInfo *application);
116 void showApplicationWindow(ApplicationInfo *application);
115 void buildListOfAvailableApplications();
117 void buildListOfAvailableApplications();
116 void generateQmlStrings(ApplicationInfo *application);
118 void generateQmlStrings(ApplicationInfo *application);