on xenial help sign in
Go back to launcher/panel being interactive while locked by default; add setting so that when ubuntu-system-settings is ready, they can re-enable that mode
commit5d365e3bf8cb38279ce2eba76984d8c91f7f3256 authorMichael Terry <michael.terry@canonical.com> dateMon 18 Aug 2014, 15:38 (12 years ago) parentf605473
6 files changed+42−2
plugins/AccountsService/AccountsService.cpp+19 plugins/AccountsService/AccountsService.h+7 plugins/AccountsService/com.canonical.unity.AccountsService.xml+4 qml/Shell.qml+2−2 tests/mocks/AccountsService/AccountsService.cpp+5 tests/mocks/AccountsService/AccountsService.h+5
plugins/AccountsService/AccountsService.cpp+19
@@ -26,6 +26,7 @@ AccountsService::AccountsService(QObject* parent)
2626 m_service(new AccountsServiceDBusAdaptor(this)),
2727 m_user(qgetenv("USER")),
2828 m_demoEdges(false),
29+ m_interactiveWhileLocked(false),
2930 m_statsWelcomeScreen(false),
3031 m_passwordDisplayHint(Keyboard),
3132 m_failedLogins(0)
@@ -47,6 +48,7 @@ void AccountsService::setUser(const QString &user)
4748 Q_EMIT userChanged();
4849
4950 updateDemoEdges();
51+ updateInteractiveWhileLocked();
5052 updateBackgroundFile();
5153 updateStatsWelcomeScreen();
5254 updatePasswordDisplayHint();
@@ -64,6 +66,11 @@ void AccountsService::setDemoEdges(bool demoEdges)
6466 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
6567}
6668
69+bool AccountsService::interactiveWhileLocked() const
70+{
71+ return m_interactiveWhileLocked;
72+}
73+
6774QString AccountsService::backgroundFile() const
6875{
6976 return m_backgroundFile;
@@ -88,6 +95,15 @@ void AccountsService::updateDemoEdges()
8895 }
8996}
9097
98+void AccountsService::updateInteractiveWhileLocked()
99+{
100+ auto interactiveWhileLocked = m_service->getUserProperty(m_user, "com.canonical.unity.AccountsService", "InteractiveWhileLocked").toBool();
101+ if (m_interactiveWhileLocked != interactiveWhileLocked) {
102+ m_interactiveWhileLocked = interactiveWhileLocked;
103+ Q_EMIT interactiveWhileLockedChanged();
104+ }
105+}
106+
91107void AccountsService::updateBackgroundFile()
92108{
93109 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -145,6 +161,9 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
145161 if (changed.contains("demo-edges")) {
146162 updateDemoEdges();
147163 }
164+ if (changed.contains("InteractiveWhileLocked")) {
165+ updateInteractiveWhileLocked();
166+ }
148167 } else if (interface == "com.canonical.unity.AccountsService.Private") {
149168 if (changed.contains("FailedLogins")) {
150169 updateFailedLogins();
plugins/AccountsService/AccountsService.h+7
@@ -36,6 +36,9 @@ class AccountsService: public QObject
3636 READ demoEdges
3737 WRITE setDemoEdges
3838 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool interactiveWhileLocked
40+ READ interactiveWhileLocked
41+ NOTIFY interactiveWhileLockedChanged)
3942 Q_PROPERTY (QString backgroundFile
4043 READ backgroundFile
4144 NOTIFY backgroundFileChanged)
@@ -62,6 +65,7 @@ public:
6265 void setUser(const QString &user);
6366 bool demoEdges() const;
6467 void setDemoEdges(bool demoEdges);
68+ bool interactiveWhileLocked() const;
6569 QString backgroundFile() const;
6670 bool statsWelcomeScreen() const;
6771 PasswordDisplayHint passwordDisplayHint() const;
@@ -71,6 +75,7 @@ public:
7175Q_SIGNALS:
7276 void userChanged();
7377 void demoEdgesChanged();
78+ void interactiveWhileLockedChanged();
7479 void backgroundFileChanged();
7580 void statsWelcomeScreenChanged();
7681 void passwordDisplayHintChanged();
@@ -82,6 +87,7 @@ private Q_SLOTS:
8287
8388private:
8489 void updateDemoEdges();
90+ void updateInteractiveWhileLocked();
8591 void updateBackgroundFile();
8692 void updateStatsWelcomeScreen();
8793 void updatePasswordDisplayHint();
@@ -90,6 +96,7 @@ private:
9096 AccountsServiceDBusAdaptor *m_service;
9197 QString m_user;
9298 bool m_demoEdges;
99+ bool m_interactiveWhileLocked;
93100 QString m_backgroundFile;
94101 bool m_statsWelcomeScreen;
95102 PasswordDisplayHint m_passwordDisplayHint;
plugins/AccountsService/com.canonical.unity.AccountsService.xml+4
@@ -9,6 +9,10 @@
99 <annotation name="org.freedesktop.Accounts.Authentication.ChangeAny"
1010 value="com.ubuntu.AccountsService.GreeterChangeAny"/>
1111
12+ <property name="InteractiveWhileLocked" type="b" access="readwrite">
13+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
14+ </property>
15+
1216 <!-- Should have been named DemoEdges, sorry folks. -mterry -->
1317 <property name="demo-edges" type="b" access="readwrite">
1418 <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
qml/Shell.qml+2−2
@@ -496,7 +496,7 @@ Item {
496496 anchors.fill: parent //because this draws indicator menus
497497 indicators {
498498 hides: [launcher]
499− available: edgeDemo.panelEnabled && !shell.locked
499+ available: edgeDemo.panelEnabled && (!shell.locked || AccountsService.interactiveWhileLocked) && greeter.fakeActiveForApp === ""
500500 contentEnabled: edgeDemo.panelContentEnabled
501501 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
502502 panelHeight: units.gu(3)
@@ -520,7 +520,7 @@ Item {
520520 anchors.bottom: parent.bottom
521521 width: parent.width
522522 dragAreaWidth: shell.edgeSize
523− available: edgeDemo.launcherEnabled && !shell.locked
523+ available: edgeDemo.launcherEnabled && (!shell.locked || AccountsService.interactiveWhileLocked) && greeter.fakeActiveForApp === ""
524524
525525 onShowDashHome: showHome()
526526 onDash: showDash()
tests/mocks/AccountsService/AccountsService.cpp+5
@@ -50,6 +50,11 @@ void AccountsService::setDemoEdges(bool demoEdges)
5050 Q_UNUSED(demoEdges)
5151}
5252
53+bool AccountsService::interactiveWhileLocked() const
54+{
55+ return true;
56+}
57+
5358QString AccountsService::backgroundFile() const
5459{
5560 return m_backgroundFile;
tests/mocks/AccountsService/AccountsService.h+5
@@ -36,6 +36,9 @@ class AccountsService: public QObject
3636 READ demoEdges
3737 WRITE setDemoEdges
3838 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool interactiveWhileLocked
40+ READ interactiveWhileLocked
41+ NOTIFY interactiveWhileLockedChanged)
3942 Q_PROPERTY (QString backgroundFile
4043 READ backgroundFile
4144 WRITE setBackgroundFile // only available in mock
@@ -64,6 +67,7 @@ public:
6467 void setUser(const QString &user);
6568 bool demoEdges() const;
6669 void setDemoEdges(bool demoEdges);
70+ bool interactiveWhileLocked() const;
6771 QString backgroundFile() const;
6872 void setBackgroundFile(const QString &backgroundFile);
6973 bool statsWelcomeScreen() const;
@@ -75,6 +79,7 @@ public:
7579Q_SIGNALS:
7680 void userChanged();
7781 void demoEdgesChanged();
82+ void interactiveWhileLockedChanged();
7883 void backgroundFileChanged();
7984 void statsWelcomeScreenChanged();
8085 void passwordDisplayHintChanged();