on xenial help sign in
Fix mock ApplicationManager to actually update its model correctly.
commit13f2fe3a261ad87fa2f775d8fd7b15592a8eb593 authorGerry Boland <gerry.boland@canonical.com> dateFri 6 Sep 2013, 17:03 (13 years ago) parent2bdbff7
2 files changed+34−12
tests/mocks/Unity/Application/ApplicationManager.cpp+32−12 tests/mocks/Unity/Application/ApplicationManager.h+2
tests/mocks/Unity/Application/ApplicationManager.cpp+32−12
@@ -70,7 +70,6 @@ QVariant ApplicationManager::data(const QModelIndex& index, int role) const {
7070ApplicationInfo *ApplicationManager::get(int row) const {
7171 if (row < 0 || row >= m_runningApplications.size())
7272 return nullptr;
73−
7473 return m_runningApplications.at(row);
7574}
7675
@@ -83,6 +82,26 @@ ApplicationInfo *ApplicationManager::findApplication(const QString &appId) const
8382 return nullptr;
8483}
8584
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+
86105void ApplicationManager::move(int from, int to) {
87106 if (from == to) return;
88107
@@ -135,8 +154,7 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
135154 Q_UNUSED(arguments)
136155 ApplicationInfo *application = 0;
137156
138− for (int i = 0; i < m_availableApplications.count(); ++i) {
139− ApplicationInfo *availableApp = m_availableApplications[i];
157+ for (ApplicationInfo *availableApp : m_availableApplications) {
140158 if (availableApp->appId() == appId) {
141159 application = availableApp;
142160 break;
@@ -146,40 +164,40 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
146164 if (!application)
147165 return 0;
148166
149− m_runningApplications.append(application);
167+ add(application);
150168 if (flags.testFlag(ApplicationManager::ForceMainStage)
151169 && application->stage() == ApplicationInfo::SideStage) {
152170 application->setStage(ApplicationInfo::MainStage);
153171 }
154172
155− application->setFocused(true);
173+ focusApplication(application->appId());
156174 Q_EMIT focusedApplicationIdChanged();
157175 return application;
158176}
159177
160178bool ApplicationManager::stopApplication(const QString &appId)
161179{
162− ApplicationInfo *application = this->findApplication(appId);
180+ ApplicationInfo *application = findApplication(appId);
163181 if (application == nullptr)
164182 return false;
165183
166− application->setFocused(false);
167− m_runningApplications.removeAll(application);
184+ remove(application);
168185 Q_EMIT focusedApplicationIdChanged();
169186 return true;
170187}
171188
172189QString ApplicationManager::focusedApplicationId() const {
173190 for (ApplicationInfo *app : m_runningApplications) {
174− if (app->focused())
191+ if (app->focused()) {
175192 return app->appId();
193+ }
176194 }
177195 return QString();
178196}
179197
180198bool ApplicationManager::focusApplication(const QString &appId)
181199{
182− ApplicationInfo *application = this->findApplication(appId);
200+ ApplicationInfo *application = findApplication(appId);
183201 if (application == nullptr)
184202 return false;
185203
@@ -216,7 +234,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
216234 }
217235
218236 // move app to top of stack
219− this->move(m_runningApplications.indexOf(application), 0);
237+ move(m_runningApplications.indexOf(application), 0);
220238 Q_EMIT focusedApplicationIdChanged();
221239 return true;
222240}
@@ -224,8 +242,10 @@ bool ApplicationManager::focusApplication(const QString &appId)
224242void ApplicationManager::unfocusCurrentApplication()
225243{
226244 for (ApplicationInfo *app : m_runningApplications) {
227− if (app->focused())
245+ if (app->focused()) {
246+ app->hideWindow();
228247 app->setFocused(false);
248+ }
229249 }
230250 Q_EMIT focusedApplicationIdChanged();
231251}
tests/mocks/Unity/Application/ApplicationManager.h+2
@@ -111,6 +111,8 @@ class ApplicationManager : public ApplicationManagerInterface {
111111 void focusRequested(FavoriteApplication favoriteApplication);
112112
113113 private:
114+ void add(ApplicationInfo *application);
115+ void remove(ApplicationInfo* application);
114116 void showApplicationWindow(ApplicationInfo *application);
115117 void buildListOfAvailableApplications();
116118 void generateQmlStrings(ApplicationInfo *application);