on xenial help sign in
Allow switching the launcher user
dda4ff5Michael Terry
Shell.qml+2
@@ -496,6 +496,8 @@ FocusScope {
496 // Update edge demo hint
496 // Update edge demo hint
497 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
497 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
498 shell.showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
498 shell.showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
499+ // Update launcher items for new user
500+ LauncherModel.setUser(user);
499 }
501 }
500
502
501 onLeftTeaserPressedChanged: {
503 onLeftTeaserPressedChanged: {
plugins/Unity/Launcher/backend/launcherbackend.cpp+30−23
@@ -31,22 +31,7 @@ LauncherBackend::LauncherBackend(QObject *parent):
31 QObject(parent)
31 QObject(parent)
32{
32{
33 m_accounts = new AccountsService(this);
33 m_accounts = new AccountsService(this);
34− syncFromAccounts();
34+ setUser(qgetenv("USER"));
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− }
50}
35}
51
36
52LauncherBackend::~LauncherBackend()
37LauncherBackend::~LauncherBackend()
@@ -165,6 +150,12 @@ int LauncherBackend::count(const QString &appId) const
165 return 0;
150 return 0;
166}
151}
167
152
153+void LauncherBackend::setUser(const QString &username)
154+{
155+ m_user = username;
156+ syncFromAccounts();
157+}
158+
168void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
159void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
169{
160{
170 // TODO: execute the given quicklist action
161 // TODO: execute the given quicklist action
@@ -174,11 +165,28 @@ void LauncherBackend::triggerQuickListAction(const QString &appId, const QString
174
165
175void LauncherBackend::syncFromAccounts()
166void LauncherBackend::syncFromAccounts()
176{
167{
177− auto username = qgetenv("USER");
168+ auto appIds = QStringList();
178− if (username != "") {
169+
170+ if (m_user != "") {
179− auto itemsVariant = m_accounts->getUserProperty(username, "launcher-items");
171+ appIds = m_accounts->getUserProperty(m_user, "launcher-items").toStringList();
180− setStoredApplications(itemsVariant.toStringList());
181 }
172 }
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);
182}
190}
183
191
184void LauncherBackend::syncToAccounts()
192void LauncherBackend::syncToAccounts()
@@ -190,9 +198,8 @@ void LauncherBackend::syncToAccounts()
190 }
198 }
191 }
199 }
192
200
193− auto username = qgetenv("USER");
201+ if (m_user != "") {
194− if (username != "") {
195− m_accounts->setUserProperty(username, "launcher-items", QVariant(pinnedItems));
202+ m_accounts->setUserProperty(m_user, "launcher-items", QVariant(pinnedItems));
196 }
203 }
197}
204}
198
205
plugins/Unity/Launcher/backend/launcherbackend.h+7
@@ -119,6 +119,12 @@ public:
119 */
119 */
120 int count(const QString &appId) const;
120 int count(const QString &appId) const;
121
121
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+
122Q_SIGNALS:
128Q_SIGNALS:
123 void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
129 void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
124 void progressChanged(const QString &appId, int progress);
130 void progressChanged(const QString &appId, int progress);
@@ -142,6 +148,7 @@ private:
142
148
143 QList<LauncherBackendItem> m_storedApps;
149 QList<LauncherBackendItem> m_storedApps;
144 AccountsService *m_accounts;
150 AccountsService *m_accounts;
151+ QString m_user;
145};
152};
146
153
147#endif // LAUNCHERBACKEND_H
154#endif // LAUNCHERBACKEND_H
plugins/Unity/Launcher/launchermodel.cpp+5
@@ -149,6 +149,11 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
149 }
149 }
150}
150}
151
151
152+void LauncherModel::setUser(const QString &username)
153+{
154+ m_backend->setUser(username);
155+}
156+
152void LauncherModel::storeAppList()
157void LauncherModel::storeAppList()
153{
158{
154 QStringList appIds;
159 QStringList appIds;
plugins/Unity/Launcher/launchermodel.h+1
@@ -48,6 +48,7 @@ public:
48 Q_INVOKABLE void pin(const QString &appId, int index = -1);
48 Q_INVOKABLE void pin(const QString &appId, int index = -1);
49 Q_INVOKABLE void requestRemove(const QString &appId);
49 Q_INVOKABLE void requestRemove(const QString &appId);
50 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
50 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
51+ Q_INVOKABLE void setUser(const QString &username);
51
52
52private:
53private:
53 void storeAppList();
54 void storeAppList();