@@ -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;
74 return m_runningApplications.at(row);
73 return m_runningApplications.at(row);
@@ -83,6 +82,26 @@ ApplicationInfo *ApplicationManager::findApplication(const QString &appId) const
83 return nullptr;
82 return nullptr;
85+void ApplicationManager::add(ApplicationInfo* application) {
89+ beginInsertRows(QModelIndex(), m_runningApplications.size(), m_runningApplications.size());
90+ m_runningApplications.append(application);
92+ Q_EMIT countChanged();
95+void ApplicationManager::remove(ApplicationInfo *application) {
96+ int i = m_runningApplications.indexOf(application);
98+ beginRemoveRows(QModelIndex(), i, i);
99+ m_runningApplications.removeAt(i);
101+ Q_EMIT countChanged();
86void ApplicationManager::move(int from, int to) {
105void ApplicationManager::move(int from, int to) {
87 if (from == to) return;
106 if (from == to) return;
@@ -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;
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;
@@ -146,40 +164,40 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
146 if (!application)
164 if (!application)
147 return 0;
165 return 0;
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);
155− application->setFocused(true);
173+ focusApplication(application->appId());
156 Q_EMIT focusedApplicationIdChanged();
174 Q_EMIT focusedApplicationIdChanged();
157 return application;
175 return application;
160bool ApplicationManager::stopApplication(const QString &appId)
178bool ApplicationManager::stopApplication(const QString &appId)
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;
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;
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();
177 return QString();
195 return QString();
180bool ApplicationManager::focusApplication(const QString &appId)
198bool ApplicationManager::focusApplication(const QString &appId)
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;
@@ -216,7 +234,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
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;
@@ -224,8 +242,10 @@ bool ApplicationManager::focusApplication(const QString &appId)
224void ApplicationManager::unfocusCurrentApplication()
242void ApplicationManager::unfocusCurrentApplication()
226 for (ApplicationInfo *app : m_runningApplications) {
244 for (ApplicationInfo *app : m_runningApplications) {
227− if (app->focused())
245+ if (app->focused()) {
228 app->setFocused(false);
247 app->setFocused(false);
230 Q_EMIT focusedApplicationIdChanged();
250 Q_EMIT focusedApplicationIdChanged();