on xenial help sign in
Allow switching the launcher user
commitdda4ff51107c033af0b83aedae4dbdbc7bb1c9c7 authorMichael Terry <michael.terry@canonical.com> dateMon 19 Aug 2013, 17:10 (13 years ago) parent0ee222d
5 files changed+45−23
Shell.qml+2 plugins/Unity/Launcher/backend/launcherbackend.cpp+30−23 plugins/Unity/Launcher/backend/launcherbackend.h+7 plugins/Unity/Launcher/launchermodel.cpp+5 plugins/Unity/Launcher/launchermodel.h+1
Shell.qml+2
@@ -496,6 +496,8 @@ FocusScope {
496496 // Update edge demo hint
497497 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
498498 shell.showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
499+ // Update launcher items for new user
500+ LauncherModel.setUser(user);
499501 }
500502
501503 onLeftTeaserPressedChanged: {
plugins/Unity/Launcher/backend/launcherbackend.cpp+30−23
@@ -31,22 +31,7 @@ LauncherBackend::LauncherBackend(QObject *parent):
3131 QObject(parent)
3232{
3333 m_accounts = new AccountsService(this);
34− syncFromAccounts();
35−
36− // TODO: load default pinned ones from default config, instead of hardcoding here...
37− if (m_storedApps.isEmpty()) {
38− setStoredApplications(QStringList() <<
39− "phone-app.desktop" <<
40− "camera-app.desktop" <<
41− "gallery-app.desktop" <<
42− "facebook-webapp.desktop" <<
43− "webbrowser-app.desktop" <<
44− "twitter-webapp.desktop" <<
45− "gmail-webapp.desktop" <<
46− "ubuntu-weather-app.desktop" <<
47− "notes-app.desktop" <<
48− "calendar-app.desktop");
49− }
34+ setUser(qgetenv("USER"));
5035}
5136
5237LauncherBackend::~LauncherBackend()
@@ -165,6 +150,12 @@ int LauncherBackend::count(const QString &appId) const
165150 return 0;
166151}
167152
153+void LauncherBackend::setUser(const QString &username)
154+{
155+ m_user = username;
156+ syncFromAccounts();
157+}
158+
168159void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
169160{
170161 // TODO: execute the given quicklist action
@@ -174,11 +165,28 @@ void LauncherBackend::triggerQuickListAction(const QString &appId, const QString
174165
175166void LauncherBackend::syncFromAccounts()
176167{
177− auto username = qgetenv("USER");
178− if (username != "") {
179− auto itemsVariant = m_accounts->getUserProperty(username, "launcher-items");
180− setStoredApplications(itemsVariant.toStringList());
168+ auto appIds = QStringList();
169+
170+ if (m_user != "") {
171+ appIds = m_accounts->getUserProperty(m_user, "launcher-items").toStringList();
181172 }
173+
174+ // TODO: load default pinned ones from default config, instead of hardcoding here...
175+ if (appIds.isEmpty()) {
176+ appIds <<
177+ "phone-app.desktop" <<
178+ "camera-app.desktop" <<
179+ "gallery-app.desktop" <<
180+ "facebook-webapp.desktop" <<
181+ "webbrowser-app.desktop" <<
182+ "twitter-webapp.desktop" <<
183+ "gmail-webapp.desktop" <<
184+ "ubuntu-weather-app.desktop" <<
185+ "notes-app.desktop" <<
186+ "calendar-app.desktop";
187+ }
188+
189+ setStoredApplications(appIds);
182190}
183191
184192void LauncherBackend::syncToAccounts()
@@ -190,9 +198,8 @@ void LauncherBackend::syncToAccounts()
190198 }
191199 }
192200
193− auto username = qgetenv("USER");
194− if (username != "") {
195− m_accounts->setUserProperty(username, "launcher-items", QVariant(pinnedItems));
201+ if (m_user != "") {
202+ m_accounts->setUserProperty(m_user, "launcher-items", QVariant(pinnedItems));
196203 }
197204}
198205
plugins/Unity/Launcher/backend/launcherbackend.h+7
@@ -119,6 +119,12 @@ public:
119119 */
120120 int count(const QString &appId) const;
121121
122+ /**
123+ * @brief Sets the username for which to look up launcher items.
124+ * @param username The username to use.
125+ */
126+ void setUser(const QString &username);
127+
122128Q_SIGNALS:
123129 void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
124130 void progressChanged(const QString &appId, int progress);
@@ -142,6 +148,7 @@ private:
142148
143149 QList<LauncherBackendItem> m_storedApps;
144150 AccountsService *m_accounts;
151+ QString m_user;
145152};
146153
147154#endif // LAUNCHERBACKEND_H
plugins/Unity/Launcher/launchermodel.cpp+5
@@ -149,6 +149,11 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
149149 }
150150}
151151
152+void LauncherModel::setUser(const QString &username)
153+{
154+ m_backend->setUser(username);
155+}
156+
152157void LauncherModel::storeAppList()
153158{
154159 QStringList appIds;
plugins/Unity/Launcher/launchermodel.h+1
@@ -48,6 +48,7 @@ public:
4848 Q_INVOKABLE void pin(const QString &appId, int index = -1);
4949 Q_INVOKABLE void requestRemove(const QString &appId);
5050 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
51+ Q_INVOKABLE void setUser(const QString &username);
5152
5253private:
5354 void storeAppList();