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
5d365e3Michael Terry
plugins/AccountsService/AccountsService.cpp+19
@@ -26,6 +26,7 @@ AccountsService::AccountsService(QObject* parent)
26 m_service(new AccountsServiceDBusAdaptor(this)),
26 m_service(new AccountsServiceDBusAdaptor(this)),
27 m_user(qgetenv("USER")),
27 m_user(qgetenv("USER")),
28 m_demoEdges(false),
28 m_demoEdges(false),
29+ m_interactiveWhileLocked(false),
29 m_statsWelcomeScreen(false),
30 m_statsWelcomeScreen(false),
30 m_passwordDisplayHint(Keyboard),
31 m_passwordDisplayHint(Keyboard),
31 m_failedLogins(0)
32 m_failedLogins(0)
@@ -47,6 +48,7 @@ void AccountsService::setUser(const QString &user)
47 Q_EMIT userChanged();
48 Q_EMIT userChanged();
48
49
49 updateDemoEdges();
50 updateDemoEdges();
51+ updateInteractiveWhileLocked();
50 updateBackgroundFile();
52 updateBackgroundFile();
51 updateStatsWelcomeScreen();
53 updateStatsWelcomeScreen();
52 updatePasswordDisplayHint();
54 updatePasswordDisplayHint();
@@ -64,6 +66,11 @@ void AccountsService::setDemoEdges(bool demoEdges)
64 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
66 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
65}
67}
66
68
69+bool AccountsService::interactiveWhileLocked() const
70+{
71+ return m_interactiveWhileLocked;
72+}
73+
67QString AccountsService::backgroundFile() const
74QString AccountsService::backgroundFile() const
68{
75{
69 return m_backgroundFile;
76 return m_backgroundFile;
@@ -88,6 +95,15 @@ void AccountsService::updateDemoEdges()
88 }
95 }
89}
96}
90
97
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+
91void AccountsService::updateBackgroundFile()
107void AccountsService::updateBackgroundFile()
92{
108{
93 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
109 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
145 if (changed.contains("demo-edges")) {
161 if (changed.contains("demo-edges")) {
146 updateDemoEdges();
162 updateDemoEdges();
147 }
163 }
164+ if (changed.contains("InteractiveWhileLocked")) {
165+ updateInteractiveWhileLocked();
166+ }
148 } else if (interface == "com.canonical.unity.AccountsService.Private") {
167 } else if (interface == "com.canonical.unity.AccountsService.Private") {
149 if (changed.contains("FailedLogins")) {
168 if (changed.contains("FailedLogins")) {
150 updateFailedLogins();
169 updateFailedLogins();
plugins/AccountsService/AccountsService.h+7
@@ -36,6 +36,9 @@ class AccountsService: public QObject
36 READ demoEdges
36 READ demoEdges
37 WRITE setDemoEdges
37 WRITE setDemoEdges
38 NOTIFY demoEdgesChanged)
38 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool interactiveWhileLocked
40+ READ interactiveWhileLocked
41+ NOTIFY interactiveWhileLockedChanged)
39 Q_PROPERTY (QString backgroundFile
42 Q_PROPERTY (QString backgroundFile
40 READ backgroundFile
43 READ backgroundFile
41 NOTIFY backgroundFileChanged)
44 NOTIFY backgroundFileChanged)
@@ -62,6 +65,7 @@ public:
62 void setUser(const QString &user);
65 void setUser(const QString &user);
63 bool demoEdges() const;
66 bool demoEdges() const;
64 void setDemoEdges(bool demoEdges);
67 void setDemoEdges(bool demoEdges);
68+ bool interactiveWhileLocked() const;
65 QString backgroundFile() const;
69 QString backgroundFile() const;
66 bool statsWelcomeScreen() const;
70 bool statsWelcomeScreen() const;
67 PasswordDisplayHint passwordDisplayHint() const;
71 PasswordDisplayHint passwordDisplayHint() const;
@@ -71,6 +75,7 @@ public:
71Q_SIGNALS:
75Q_SIGNALS:
72 void userChanged();
76 void userChanged();
73 void demoEdgesChanged();
77 void demoEdgesChanged();
78+ void interactiveWhileLockedChanged();
74 void backgroundFileChanged();
79 void backgroundFileChanged();
75 void statsWelcomeScreenChanged();
80 void statsWelcomeScreenChanged();
76 void passwordDisplayHintChanged();
81 void passwordDisplayHintChanged();
@@ -82,6 +87,7 @@ private Q_SLOTS:
82
87
83private:
88private:
84 void updateDemoEdges();
89 void updateDemoEdges();
90+ void updateInteractiveWhileLocked();
85 void updateBackgroundFile();
91 void updateBackgroundFile();
86 void updateStatsWelcomeScreen();
92 void updateStatsWelcomeScreen();
87 void updatePasswordDisplayHint();
93 void updatePasswordDisplayHint();
@@ -90,6 +96,7 @@ private:
90 AccountsServiceDBusAdaptor *m_service;
96 AccountsServiceDBusAdaptor *m_service;
91 QString m_user;
97 QString m_user;
92 bool m_demoEdges;
98 bool m_demoEdges;
99+ bool m_interactiveWhileLocked;
93 QString m_backgroundFile;
100 QString m_backgroundFile;
94 bool m_statsWelcomeScreen;
101 bool m_statsWelcomeScreen;
95 PasswordDisplayHint m_passwordDisplayHint;
102 PasswordDisplayHint m_passwordDisplayHint;
plugins/AccountsService/com.canonical.unity.AccountsService.xml+4
@@ -9,6 +9,10 @@
9 <annotation name="org.freedesktop.Accounts.Authentication.ChangeAny"
9 <annotation name="org.freedesktop.Accounts.Authentication.ChangeAny"
10 value="com.ubuntu.AccountsService.GreeterChangeAny"/>
10 value="com.ubuntu.AccountsService.GreeterChangeAny"/>
11
11
12+ <property name="InteractiveWhileLocked" type="b" access="readwrite">
13+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
14+ </property>
15+
12 <!-- Should have been named DemoEdges, sorry folks. -mterry -->
16 <!-- Should have been named DemoEdges, sorry folks. -mterry -->
13 <property name="demo-edges" type="b" access="readwrite">
17 <property name="demo-edges" type="b" access="readwrite">
14 <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
18 <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
qml/Shell.qml+2−2
@@ -496,7 +496,7 @@ Item {
496 anchors.fill: parent //because this draws indicator menus
496 anchors.fill: parent //because this draws indicator menus
497 indicators {
497 indicators {
498 hides: [launcher]
498 hides: [launcher]
499− available: edgeDemo.panelEnabled && !shell.locked
499+ available: edgeDemo.panelEnabled && (!shell.locked || AccountsService.interactiveWhileLocked) && greeter.fakeActiveForApp === ""
500 contentEnabled: edgeDemo.panelContentEnabled
500 contentEnabled: edgeDemo.panelContentEnabled
501 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
501 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
502 panelHeight: units.gu(3)
502 panelHeight: units.gu(3)
@@ -520,7 +520,7 @@ Item {
520 anchors.bottom: parent.bottom
520 anchors.bottom: parent.bottom
521 width: parent.width
521 width: parent.width
522 dragAreaWidth: shell.edgeSize
522 dragAreaWidth: shell.edgeSize
523− available: edgeDemo.launcherEnabled && !shell.locked
523+ available: edgeDemo.launcherEnabled && (!shell.locked || AccountsService.interactiveWhileLocked) && greeter.fakeActiveForApp === ""
524
524
525 onShowDashHome: showHome()
525 onShowDashHome: showHome()
526 onDash: showDash()
526 onDash: showDash()
tests/mocks/AccountsService/AccountsService.cpp+5
@@ -50,6 +50,11 @@ void AccountsService::setDemoEdges(bool demoEdges)
50 Q_UNUSED(demoEdges)
50 Q_UNUSED(demoEdges)
51}
51}
52
52
53+bool AccountsService::interactiveWhileLocked() const
54+{
55+ return true;
56+}
57+
53QString AccountsService::backgroundFile() const
58QString AccountsService::backgroundFile() const
54{
59{
55 return m_backgroundFile;
60 return m_backgroundFile;
tests/mocks/AccountsService/AccountsService.h+5
@@ -36,6 +36,9 @@ class AccountsService: public QObject
36 READ demoEdges
36 READ demoEdges
37 WRITE setDemoEdges
37 WRITE setDemoEdges
38 NOTIFY demoEdgesChanged)
38 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool interactiveWhileLocked
40+ READ interactiveWhileLocked
41+ NOTIFY interactiveWhileLockedChanged)
39 Q_PROPERTY (QString backgroundFile
42 Q_PROPERTY (QString backgroundFile
40 READ backgroundFile
43 READ backgroundFile
41 WRITE setBackgroundFile // only available in mock
44 WRITE setBackgroundFile // only available in mock
@@ -64,6 +67,7 @@ public:
64 void setUser(const QString &user);
67 void setUser(const QString &user);
65 bool demoEdges() const;
68 bool demoEdges() const;
66 void setDemoEdges(bool demoEdges);
69 void setDemoEdges(bool demoEdges);
70+ bool interactiveWhileLocked() const;
67 QString backgroundFile() const;
71 QString backgroundFile() const;
68 void setBackgroundFile(const QString &backgroundFile);
72 void setBackgroundFile(const QString &backgroundFile);
69 bool statsWelcomeScreen() const;
73 bool statsWelcomeScreen() const;
@@ -75,6 +79,7 @@ public:
75Q_SIGNALS:
79Q_SIGNALS:
76 void userChanged();
80 void userChanged();
77 void demoEdgesChanged();
81 void demoEdgesChanged();
82+ void interactiveWhileLockedChanged();
78 void backgroundFileChanged();
83 void backgroundFileChanged();
79 void statsWelcomeScreenChanged();
84 void statsWelcomeScreenChanged();
80 void passwordDisplayHintChanged();
85 void passwordDisplayHintChanged();