on xenial help sign in
Feature complete
63d4385Josh Arenson
qml/Components/PhysicalKeysFilter.qml+27−4
@@ -23,8 +23,8 @@ import QtQuick 2.0
23
23
24 A filter to handle events triggered by pressing physical keys on a device.
24 A filter to handle events triggered by pressing physical keys on a device.
25 Keys included are
25 Keys included are
26− * Volume Increase
27 * Volume Decrease
26 * Volume Decrease
27+ * Volume Increase
28 * Power
28 * Power
29
29
30 This allows for handling the following events
30 This allows for handling the following events
@@ -36,10 +36,14 @@ import QtQuick 2.0
36QtObject {
36QtObject {
37 id: root
37 id: root
38
38
39+ signal powerPressed()
40+ signal screenshotPressed()
39 signal volumeDownPressed()
41 signal volumeDownPressed()
40 signal volumeUpPressed()
42 signal volumeUpPressed()
41− signal screenshotPressed()
42
43
44+ property bool eventAccepted: false
45+
46+ property bool aPowerKeyWasReleased: true
43 property bool powerKeyPressed: false
47 property bool powerKeyPressed: false
44
48
45 property bool aVolumeKeyWasReleased: true
49 property bool aVolumeKeyWasReleased: true
@@ -47,16 +51,25 @@ QtObject {
47 property bool volumeUpKeyPressed: false
51 property bool volumeUpKeyPressed: false
48
52
49 function onKeyPressed(key) {
53 function onKeyPressed(key) {
54+ /* Determine what key was pressed */
55+
56+ // Power Key
50 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
57 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
58+ eventAccepted = true;
51 powerKeyPressed = true;
59 powerKeyPressed = true;
52 }
60 }
61+
62+ //Volume Keys
53 else if (key == Qt.Key_VolumeDown) {
63 else if (key == Qt.Key_VolumeDown) {
64+ eventAccepted = true;
54 volumeDownKeyPressed = true;
65 volumeDownKeyPressed = true;
55 }
66 }
56 else if (key == Qt.Key_VolumeUp) {
67 else if (key == Qt.Key_VolumeUp) {
68+ eventAccepted = true;
57 volumeUpKeyPressed = true;
69 volumeUpKeyPressed = true;
58 }
70 }
59
71
72+ /* Determine how to handle it */
60 if (volumeDownKeyPressed && volumeUpKeyPressed) {
73 if (volumeDownKeyPressed && volumeUpKeyPressed) {
61 if (aVolumeKeyWasReleased) {
74 if (aVolumeKeyWasReleased) {
62 bothVolumeKeysPressed();
75 bothVolumeKeysPressed();
@@ -64,28 +77,38 @@ QtObject {
64 aVolumeKeyWasReleased = false;
77 aVolumeKeyWasReleased = false;
65 }
78 }
66 else if (volumeDownKeyPressed) {
79 else if (volumeDownKeyPressed) {
67− if (powerKeyPressed) {
80+ if (powerKeyPressed && aPowerKeyWasReleased) {
68 screenshotPressed();
81 screenshotPressed();
69− } else {
82+ aPowerKeyWasReleased = false;
83+ // Don't emit volumeDownPressed if power key is held
84+ } else if (aPowerKeyWasReleased){
70 volumeDownPressed();
85 volumeDownPressed();
71 }
86 }
72 }
87 }
73 else if (volumeUpKeyPressed) {
88 else if (volumeUpKeyPressed) {
74 volumeUpPressed();
89 volumeUpPressed();
75 }
90 }
91+
92+ return eventAccepted;
76 }
93 }
77
94
78 function onKeyReleased(key) {
95 function onKeyReleased(key) {
79 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
96 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
97+ eventAccepted = true;
80 powerKeyPressed = false;
98 powerKeyPressed = false;
99+ aPowerKeyWasReleased = true;
81 }
100 }
82 else if (key == Qt.Key_VolumeDown) {
101 else if (key == Qt.Key_VolumeDown) {
102+ eventAccepted = true;
83 volumeDownKeyPressed = false;
103 volumeDownKeyPressed = false;
84 aVolumeKeyWasReleased = false;
104 aVolumeKeyWasReleased = false;
85 }
105 }
86 else if (key == Qt.Key_VolumeUp) {
106 else if (key == Qt.Key_VolumeUp) {
107+ eventAccepted = true;
87 volumeUpKeyPressed = false;
108 volumeUpKeyPressed = false;
88 aVolumeKeyWasReleased = true;
109 aVolumeKeyWasReleased = true;
89 }
110 }
111+
112+ return eventAccepted;
90 }
113 }
91}
114}
qml/Shell.qml+3−23
@@ -157,6 +157,7 @@ Item {
157 PhysicalKeysFilter {
157 PhysicalKeysFilter {
158 id: physicalKeysFilter
158 id: physicalKeysFilter
159
159
160+ onPowerPressed: dialogs.onPowerKeyPressed();
160 onVolumeDownPressed: volumeControl.volumeDown()
161 onVolumeDownPressed: volumeControl.volumeDown()
161 onVolumeUpPressed: volumeControl.volumeUp()
162 onVolumeUpPressed: volumeControl.volumeUp()
162 onScreenshotPressed: screenGrabber.capture()
163 onScreenshotPressed: screenGrabber.capture()
@@ -174,34 +175,13 @@ Item {
174 value: launcher.shown || launcher.dashSwipe
175 value: launcher.shown || launcher.dashSwipe
175 }
176 }
176
177
177− /*VolumeKeyFilter {
178− id: volumeKeyFilter
179− onVolumeDownPressed: volumeControl.volumeDown()
180− onVolumeUpPressed: volumeControl.volumeUp()
181− onBothVolumeKeysPressed: screenGrabber.capture()
182− }*/
183−
184 WindowKeysFilter {
178 WindowKeysFilter {
185 Keys.onPressed: {
179 Keys.onPressed: {
186− physicalKeysFilter.onKeyPressed(event.key);
180+ event.accepted = physicalKeysFilter.onKeyPressed(event.key);
187− if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
188− dialogs.onPowerKeyPressed();
189− event.accepted = true;
190− } else {
191− //volumeKeyFilter.onKeyPressed(event.key);
192− event.accepted = false;
193− }
194 }
181 }
195
182
196 Keys.onReleased: {
183 Keys.onReleased: {
197− physicalKeysFilter.onKeyReleased(event.key);
184+ event.accepted = physicalKeysFilter.onKeyReleased(event.key);
198− if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
199− dialogs.onPowerKeyReleased();
200− event.accepted = true;
201− } else {
202− //volumeKeyFilter.onKeyReleased(event.key);
203− event.accepted = false;
204− }
205 }
185 }
206 }
186 }
207
187