on xenial help sign in
Added right edge hinting to greeter.
d9a076cMichael Zanetti
Greeter/Greeter.qml+38−1
@@ -30,11 +30,20 @@ Showable {
30 readonly property bool narrowMode: !multiUser && width <= units.gu(60)
30 readonly property bool narrowMode: !multiUser && width <= units.gu(60)
31 readonly property bool multiUser: LightDM.Users.count > 1
31 readonly property bool multiUser: LightDM.Users.count > 1
32
32
33− readonly property bool leftTeaserPressed: greeterContentLoader.status == Loader.Ready && greeterContentLoader.item.leftTeaserPressed
33+ readonly property bool leftTeaserPressed: greeterContentLoader.status == Loader.Ready &&
34+ greeterContentLoader.item.leftTeaserPressed
35+ readonly property bool rightTeaserPressed: greeterContentLoader.status == Loader.Ready &&
36+ greeterContentLoader.item.rightTeaserPressed
34
37
35 signal selected(int uid)
38 signal selected(int uid)
36 signal unlocked(int uid)
39 signal unlocked(int uid)
37
40
41+ onRightTeaserPressedChanged: {
42+ if (rightTeaserPressed) {
43+ teasingTimer.start();
44+ }
45+ }
46+
38 Loader {
47 Loader {
39 id: greeterContentLoader
48 id: greeterContentLoader
40 objectName: "greeterContentLoader"
49 objectName: "greeterContentLoader"
@@ -54,4 +63,32 @@ Showable {
54 onUnlocked: greeter.unlocked(uid);
63 onUnlocked: greeter.unlocked(uid);
55 }
64 }
56 }
65 }
66+
67+ Timer {
68+ id: teasingTimer
69+ interval: 200
70+ }
71+
72+ states: [
73+ State {
74+ name: "teasing"
75+ when: greeter.rightTeaserPressed || teasingTimer.running
76+ PropertyChanges {
77+ target: greeter
78+ x: -units.gu(2)
79+ }
80+ }
81+ ]
82+ transitions: [
83+ Transition {
84+ from: "*"
85+ to: "*"
86+ NumberAnimation {
87+ target: greeter
88+ property: "x"
89+ duration: 300
90+ easing.type: Easing.OutCubic
91+ }
92+ }
93+ ]
57}
94}
Greeter/GreeterContent.qml+5−3
@@ -25,7 +25,10 @@ MouseArea {
25
25
26 property bool promptless: loginLoader.status == Loader.Ready && LightDM.Greeter.promptless
26 property bool promptless: loginLoader.status == Loader.Ready && LightDM.Greeter.promptless
27 property bool ready: wallpaper.status == Image.Ready
27 property bool ready: wallpaper.status == Image.Ready
28− property alias leftTeaserPressed: leftTeaser.pressed
28+ property bool leftTeaserPressed: teasingMouseArea.pressed &&
29+ teasingMouseArea.mouseX < teasingMouseArea.width / 2
30+ property bool rightTeaserPressed: teasingMouseArea.pressed &&
31+ teasingMouseArea.mouseX > teasingMouseArea.width / 2
29
32
30 signal selected(int uid)
33 signal selected(int uid)
31 signal unlocked(int uid)
34 signal unlocked(int uid)
@@ -57,9 +60,8 @@ MouseArea {
57 }
60 }
58
61
59 MouseArea {
62 MouseArea {
60− id: leftTeaser
63+ id: teasingMouseArea
61 anchors.fill: parent
64 anchors.fill: parent
62− anchors.rightMargin: parent.width / 2
63 }
65 }
64
66
65 Loader {
67 Loader {
tests/qmltests/Greeter/tst_Phone.qml+13−8
@@ -46,17 +46,22 @@ Item {
46 compare(greeter.narrowMode, true)
46 compare(greeter.narrowMode, true)
47 }
47 }
48
48
49− function test_teasingArea() {
49+ function test_teasingArea_data() {
50− tryCompare(greeter, "leftTeaserPressed", false)
50+ return [
51− mousePress(greeter, units.gu(2), greeter.height - units.gu(1))
51+ {tag: "left", posX: units.gu(2), leftPressed: true, rightPressed: false},
52− tryCompare(greeter, "leftTeaserPressed", true)
52+ {tag: "right", posX: greeter.width - units.gu(2), leftPressed: false, rightPressed: true}
53− mouseRelease(greeter, units.gu(2), greeter.height - units.gu(1))
53+ ]
54− tryCompare(greeter, "leftTeaserPressed", false)
54+ }
55
55
56− mousePress(greeter, greeter.width - units.gu(2), greeter.height - units.gu(1))
56+ function test_teasingArea(data) {
57 tryCompare(greeter, "leftTeaserPressed", false)
57 tryCompare(greeter, "leftTeaserPressed", false)
58+ tryCompare(greeter, "rightTeaserPressed", false)
59+ mousePress(greeter, data.posX, greeter.height - units.gu(1))
60+ tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
61+ tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
58− mouseRelease(greeter, units.gu(2), greeter.height - units.gu(1))
62+ mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
59 tryCompare(greeter, "leftTeaserPressed", false)
63 tryCompare(greeter, "leftTeaserPressed", false)
64+ tryCompare(greeter, "rightTeaserPressed", false)
60 }
65 }
61 }
66 }
62}
67}
tests/qmltests/Greeter/tst_Tablet.qml+19
@@ -305,5 +305,24 @@ Item {
305 var index = select_user("no-background")
305 var index = select_user("no-background")
306 compare(greeter.model.data(index, LightDM.UserRoles.BackgroundPathRole), "")
306 compare(greeter.model.data(index, LightDM.UserRoles.BackgroundPathRole), "")
307 }
307 }
308+
309+ function test_teasingArea_data() {
310+ return [
311+ {tag: "left", posX: units.gu(2), leftPressed: true, rightPressed: false},
312+ {tag: "right", posX: greeter.width - units.gu(2), leftPressed: false, rightPressed: true}
313+ ]
314+ }
315+
316+ function test_teasingArea(data) {
317+ tryCompare(greeter, "leftTeaserPressed", false)
318+ tryCompare(greeter, "rightTeaserPressed", false)
319+ mousePress(greeter, data.posX, greeter.height - units.gu(1))
320+ tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
321+ tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
322+ mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
323+ tryCompare(greeter, "leftTeaserPressed", false)
324+ tryCompare(greeter, "rightTeaserPressed", false)
325+ }
326+
308 }
327 }
309}
328}