on xenial help sign in
Add a new setting to enable/disable the launcher

Approved by: Michael Zanetti

commitbb50476d40a7d64b0fe94e8e822466eddca44355 authorBrian Douglass <bhdouglass@gmail.com> dateWed 9 Nov 2016, 15:07 (10 years ago) parent357bdf546055c6
6 files changed+92−1
data/com.canonical.Unity8.gschema.xml+5 qml/Shell.qml+1 tests/mocks/GSettings.1.0/fake_gsettings.cpp+33 tests/mocks/GSettings.1.0/fake_gsettings.h+9 tests/qmltests/Launcher/tst_Launcher.qml+26−1 tests/qmltests/tst_Shell.qml+18
data/com.canonical.Unity8.gschema.xml+5
@@ -43,6 +43,11 @@
4343 <summary>Width of the launcher in grid units.</summary>
4444 <description>Changes the width of the launcher in all usage modes.</description>
4545 </key>
46+ <key type="b" name="enable-launcher">
47+ <default>true</default>
48+ <summary>Enable or disable the launcher</summary>
49+ <description>Toggle the availability of the launcher</description>
50+ </key>
4651 </schema>
4752
4853 <schema path="/com/canonical/unity8/greeter/" id="com.canonical.Unity8.Greeter" gettext-domain="unity8">
qml/Shell.qml+1
@@ -516,6 +516,7 @@ StyledItem {
516516 && (!greeter.locked || AccountsService.enableLauncherWhileLocked)
517517 && !greeter.hasLockedApp
518518 && !shell.waitingOnGreeter
519+ && settings.enableLauncher
519520 inverted: shell.usageScenario !== "desktop"
520521 superPressed: physicalKeysMapper.superPressed
521522 superTabPressed: physicalKeysMapper.superTabPressed
tests/mocks/GSettings.1.0/fake_gsettings.cpp+33
@@ -27,6 +27,7 @@ GSettingsControllerQml::GSettingsControllerQml()
2727 , m_autohideLauncher(false)
2828 , m_launcherWidth(8)
2929 , m_edgeDragWidth(2)
30+ , m_enableLauncher(true)
3031{
3132}
3233
@@ -145,6 +146,19 @@ void GSettingsControllerQml::setEdgeDragWidth(uint edgeDragWidth)
145146 }
146147}
147148
149+void GSettingsControllerQml::setEnableLauncher(bool enableLauncher)
150+{
151+ if (m_enableLauncher != enableLauncher) {
152+ m_enableLauncher = enableLauncher;
153+ Q_EMIT enableLauncherChanged(enableLauncher);
154+ }
155+}
156+
157+bool GSettingsControllerQml::enableLauncher() const
158+{
159+ return m_enableLauncher;
160+}
161+
148162GSettingsSchemaQml::GSettingsSchemaQml(QObject *parent): QObject(parent) {
149163}
150164
@@ -209,6 +223,8 @@ void GSettingsQml::componentComplete()
209223 this, &GSettingsQml::launcherWidthChanged);
210224 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::edgeDragWidthChanged,
211225 this, &GSettingsQml::edgeDragWidthChanged);
226+ connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::enableLauncherChanged,
227+ this, &GSettingsQml::enableLauncherChanged);
212228
213229 Q_EMIT disableHeightChanged();
214230 Q_EMIT pictureUriChanged();
@@ -218,6 +234,7 @@ void GSettingsQml::componentComplete()
218234 Q_EMIT autohideLauncherChanged();
219235 Q_EMIT launcherWidthChanged();
220236 Q_EMIT edgeDragWidthChanged();
237+ Q_EMIT enableLauncherChanged();
221238}
222239
223240GSettingsSchemaQml * GSettingsQml::schema() const {
@@ -324,6 +341,15 @@ QVariant GSettingsQml::edgeDragWidth() const
324341 }
325342}
326343
344+QVariant GSettingsQml::enableLauncher() const
345+{
346+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
347+ return GSettingsControllerQml::instance()->enableLauncher();
348+ } else {
349+ return QVariant();
350+ }
351+}
352+
327353void GSettingsQml::setLifecycleExemptAppids(const QVariant &appIds)
328354{
329355 if (m_valid && m_schema->id() == "com.canonical.qtmir") {
@@ -351,3 +377,10 @@ void GSettingsQml::setEdgeDragWidth(const QVariant &edgeDragWidth)
351377 GSettingsControllerQml::instance()->setEdgeDragWidth(edgeDragWidth.toUInt());
352378 }
353379}
380+
381+void GSettingsQml::setEnableLauncher(const QVariant &enableLauncher)
382+{
383+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
384+ GSettingsControllerQml::instance()->setEnableLauncher(enableLauncher.toBool());
385+ }
386+}
tests/mocks/GSettings.1.0/fake_gsettings.h+9
@@ -57,6 +57,7 @@ class GSettingsQml: public QObject, public QQmlParserStatus
5757 Q_PROPERTY(QVariant autohideLauncher READ autohideLauncher WRITE setAutohideLauncher NOTIFY autohideLauncherChanged)
5858 Q_PROPERTY(QVariant launcherWidth READ launcherWidth WRITE setLauncherWidth NOTIFY launcherWidthChanged)
5959 Q_PROPERTY(QVariant edgeDragWidth READ edgeDragWidth WRITE setEdgeDragWidth NOTIFY edgeDragWidthChanged)
60+ Q_PROPERTY(QVariant enableLauncher READ enableLauncher WRITE setEnableLauncher NOTIFY enableLauncherChanged)
6061
6162public:
6263 GSettingsQml(QObject *parent = nullptr);
@@ -73,6 +74,7 @@ public:
7374 QVariant autohideLauncher() const;
7475 QVariant launcherWidth() const;
7576 QVariant edgeDragWidth() const;
77+ QVariant enableLauncher() const;
7678
7779 void setDisableHeight(const QVariant &val);
7880 void setPictureUri(const QVariant &str);
@@ -82,6 +84,7 @@ public:
8284 void setAutohideLauncher(const QVariant &autohideLauncher);
8385 void setLauncherWidth(const QVariant &launcherWidth);
8486 void setEdgeDragWidth(const QVariant &edgeDragWidth);
87+ void setEnableLauncher(const QVariant &enableLauncher);
8588
8689Q_SIGNALS:
8790 void disableHeightChanged();
@@ -93,6 +96,7 @@ Q_SIGNALS:
9396 void autohideLauncherChanged();
9497 void launcherWidthChanged();
9598 void edgeDragWidthChanged();
99+ void enableLauncherChanged();
96100
97101private:
98102 GSettingsSchemaQml* m_schema;
@@ -133,6 +137,9 @@ public:
133137 uint edgeDragWidth() const;
134138 Q_INVOKABLE void setEdgeDragWidth(uint edgeDragWidth);
135139
140+ bool enableLauncher() const;
141+ Q_INVOKABLE void setEnableLauncher(bool enableLauncher);
142+
136143Q_SIGNALS:
137144 void disableHeightChanged();
138145 void pictureUriChanged(const QString&);
@@ -142,6 +149,7 @@ Q_SIGNALS:
142149 void autohideLauncherChanged(bool autohideLauncher);
143150 void launcherWidthChanged(int launcherWidth);
144151 void edgeDragWidthChanged(uint edgeDragWidth);
152+ void enableLauncherChanged(bool enableLauncher);
145153
146154private:
147155 GSettingsControllerQml();
@@ -154,6 +162,7 @@ private:
154162 bool m_autohideLauncher;
155163 int m_launcherWidth;
156164 uint m_edgeDragWidth;
165+ bool m_enableLauncher;
157166
158167 static GSettingsControllerQml* s_controllerInstance;
159168 QList<GSettingsQml *> m_registeredGSettings;
tests/qmltests/Launcher/tst_Launcher.qml+26−1
@@ -287,12 +287,16 @@ Rectangle {
287287 removeTimeConstraintsFromSwipeAreas(root);
288288 }
289289
290− function dragLauncherIntoView() {
290+ function dragLauncher() {
291291 var startX = launcher.dragAreaWidth/2;
292292 var startY = launcher.height/2;
293293 touchFlick(launcher,
294294 startX, startY,
295295 startX+units.gu(8), startY);
296+ }
297+
298+ function dragLauncherIntoView() {
299+ dragLauncher();
296300
297301 var panel = findChild(launcher, "launcherPanel");
298302 verify(!!panel);
@@ -1353,5 +1357,26 @@ Rectangle {
13531357 mouseWheel(launcherPanel, launcherPanel.width/2, launcherPanel.height/2, Qt.RightButton);
13541358 tryCompare(clickThroughSpy, "count", 0);
13551359 }
1360+
1361+ function test_launcherEnabledSetting() {
1362+ launcher.available = true;
1363+
1364+ dragLauncherIntoView();
1365+ var launcherPanel = findChild(launcher, "launcherPanel");
1366+ compare(launcherPanel.x, 0);
1367+
1368+ launcher.available = true;
1369+ }
1370+
1371+ function test_launcherDisabledSetting() {
1372+ launcher.available = false;
1373+
1374+ //We don't actually care that it's visible, so juct use dragLauncher() rather than dragLauncherIntoView()
1375+ dragLauncher();
1376+ var launcherPanel = findChild(launcher, "launcherPanel");
1377+ compare(launcherPanel.x, -launcherPanel.width);
1378+
1379+ launcher.available = true;
1380+ }
13561381 }
13571382}
tests/qmltests/tst_Shell.qml+18
@@ -2761,5 +2761,23 @@ Rectangle {
27612761 wait(3000);
27622762 tryCompare(cursor, "opacity", 0);
27632763 }
2764+
2765+ function test_launcherEnabledSetting_data() {
2766+ return [
2767+ {tag: "launcher enabled", enabled: true},
2768+ {tag: "launcher disabled", enabled: false}
2769+ ]
2770+ }
2771+
2772+ function test_launcherEnabledSetting(data) {
2773+ loadShell("phone");
2774+
2775+ GSettingsController.setEnableLauncher(data.enabled);
2776+
2777+ var launcher = findChild(shell, "launcher");
2778+ compare(launcher.available, data.enabled);
2779+
2780+ GSettingsController.setEnableLauncher(true);
2781+ }
27642782 }
27652783}