Skip to content

Commit a9d3d23

Browse files
committed
Add mnemonics for better experience
Fixes #643
1 parent e713a46 commit a9d3d23

File tree

8 files changed

+315
-77
lines changed

8 files changed

+315
-77
lines changed

src/app/qml/AboutDialog.qml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ ApplicationWindow {
3939
anchors.fill: parent
4040
anchors.margins: units.gridUnit
4141
spacing: units.gridUnit
42+
focus: true
4243

4344
Column {
4445
leftPadding: units.gridUnit
@@ -95,5 +96,16 @@ ApplicationWindow {
9596
text: qsTr("Close")
9697
}
9798
}
99+
100+
Keys.onPressed: (event)=> {
101+
switch (event.key) {
102+
case (Qt.Key_Escape):
103+
case (Qt.Key_Enter):
104+
case (Qt.Key_Return):
105+
case (Qt.Key_I):
106+
aboutDialog.close()
107+
break
108+
}
109+
}
98110
}
99111
}

src/app/qml/CancelDialog.qml

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ ApplicationWindow {
4343
anchors.fill: parent
4444
anchors.margins: units.gridUnit
4545
spacing: units.gridUnit
46+
focus: true
4647

4748
Column {
4849
leftPadding: units.gridUnit
@@ -90,22 +91,7 @@ ApplicationWindow {
9091

9192
Button {
9293
id: cancelButton
93-
onClicked: {
94-
cancelDialog.close()
95-
// Store release state locally as drives.selected.cancel() makes
96-
// it go to failed state if we cancel the writing process
97-
var releaseState = releases.variant.status
98-
if (drives.selected)
99-
drives.selected.cancel()
100-
if (mainWindow.selectedPage == Units.Page.DownloadPage &&
101-
(releaseState === Units.DownloadStatus.Writing || releaseState === Units.DownloadStatus.Write_Verifying || releaseState === Units.DownloadStatus.Writing_Not_Possible)) {
102-
drives.lastRestoreable = drivesSelected
103-
drives.lastRestoreable.setRestoreStatus(Units.RestoreStatus.Contains_Live)
104-
}
105-
releases.variant.resetStatus()
106-
downloadManager.cancel()
107-
selectedPage = Units.Page.MainPage
108-
}
94+
onClicked: cancelWrite()
10995
text: {
11096
if (releases.variant.status == Units.DownloadStatus.Downloading || releases.variant.status === Units.DownloadStatus.Download_Verifying)
11197
qsTr("Cancel Download")
@@ -118,6 +104,37 @@ ApplicationWindow {
118104
}
119105
}
120106
}
107+
Keys.onPressed: (event)=> {
108+
switch (event.key) {
109+
case (Qt.Key_Escape):
110+
cancelDialog.close()
111+
break
112+
case (Qt.Key_Return):
113+
case (Qt.Key_Enter):
114+
if (cancelDialog.visible)
115+
cancelWrite()
116+
else
117+
cancelDialog.show()
118+
break
119+
}
120+
}
121+
}
122+
123+
function cancelWrite() {
124+
cancelDialog.close()
125+
// Store release state locally as drives.selected.cancel() makes
126+
// it go to failed state if we cancel the writing process
127+
var releaseState = releases.variant.status
128+
if (drives.selected)
129+
drives.selected.cancel()
130+
if (mainWindow.selectedPage == Units.Page.DownloadPage &&
131+
(releaseState === Units.DownloadStatus.Writing || releaseState === Units.DownloadStatus.Write_Verifying || releaseState === Units.DownloadStatus.Writing_Not_Possible)) {
132+
drives.lastRestoreable = drivesSelected
133+
drives.lastRestoreable.setRestoreStatus(Units.RestoreStatus.Contains_Live)
134+
}
135+
releases.variant.resetStatus()
136+
downloadManager.cancel()
137+
selectedPage = Units.Page.MainPage
121138
}
122139
}
123140

src/app/qml/DownloadPage.qml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,5 +357,24 @@ Page {
357357

358358
return false
359359
}
360+
361+
Keys.onPressed: (event)=> {
362+
switch (event.key) {
363+
case (Qt.Key_Right):
364+
case (Qt.Key_N):
365+
mainWindow.setNextPage()
366+
break
367+
case (Qt.Key_Left):
368+
case (Qt.Key_P):
369+
mainWindow.setPreviousPage()
370+
break
371+
case (Qt.Key_Enter):
372+
case (Qt.Key_Return):
373+
case (Qt.Key_A):
374+
if (releases.variant.status != Units.DownloadStatus.Finished)
375+
cancelDialog.show()
376+
break
377+
}
378+
}
360379
}
361380

src/app/qml/DrivePage.qml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ Page {
157157
}
158158

159159
CheckBox {
160+
id: deleteCheck
160161
text: qsTr("Delete download after writing")
161162
onCheckedChanged: mainWindow.eraseVariant = !mainWindow.eraseVariant
162163
}
@@ -181,4 +182,83 @@ Page {
181182
PropertyChanges { target: nextButton; enabled: driveCombo.enabled && releases.localFile.iso }
182183
}
183184
]
185+
186+
Keys.onPressed: (event)=> {
187+
switch (event.key) {
188+
case (Qt.Key_Right):
189+
case (Qt.Key_N):
190+
if (selectedOption == Units.MainSelect.Write) {
191+
if (drives.length && releases.localFile.iso)
192+
mainWindow.setNextPage()
193+
} else
194+
mainWindow.setNextPage()
195+
break
196+
case (Qt.Key_Left):
197+
case (Qt.Key_P):
198+
mainWindow.setPreviousPage()
199+
break
200+
}
201+
202+
if (drivePage.state == "Downloading") {
203+
switch (event.key) {
204+
case (Qt.Key_1):
205+
closePopups()
206+
if (!versionCombo.down)
207+
versionCombo.popup.open()
208+
break
209+
case (Qt.Key_2):
210+
closePopups()
211+
if (!hwArchCombo.down)
212+
hwArchCombo.popup.open()
213+
break
214+
case (Qt.Key_3):
215+
closePopups()
216+
if (!driveCombo.down && driveCombo.count)
217+
driveCombo.popup.open()
218+
break
219+
case (Qt.Key_D):
220+
case (Qt.Key_4):
221+
deleteCheck.checked = !deleteCheck.checked
222+
break
223+
case (Qt.Key_Return):
224+
case (Qt.Key_Enter):
225+
closePopups()
226+
break
227+
case (Qt.Key_Up):
228+
if (versionCombo.down && versionCombo.currentIndex > 0)
229+
versionCombo.currentIndex -= 1
230+
else if (hwArchCombo.down && hwArchCombo.currentIndex > 0)
231+
hwArchCombo.currentIndex -= 1
232+
else if (driveCombo.down && driveCombo.currentIndex > 0)
233+
driveCombo.currentIndex -= 1
234+
break
235+
case (Qt.Key_Down):
236+
if (versionCombo.down && versionCombo.currentIndex < versionCombo.count - 1)
237+
versionCombo.currentIndex += 1
238+
else if (hwArchCombo.down && hwArchCombo.currentIndex < hwArchCombo.count - 1)
239+
hwArchCombo.currentIndex += 1
240+
else if (driveCombo.down && driveCombo.currentIndex < driveCombo.count - 1)
241+
driveCombo.currentIndex += 1
242+
break
243+
}
244+
} else {
245+
switch (event.key) {
246+
case (Qt.Key_1):
247+
if (portalFileDialog.isAvailable)
248+
portalFileDialog.open()
249+
else
250+
fileDialog.open()
251+
break
252+
case (Qt.Key_2):
253+
driveCombo.focus = true
254+
break
255+
}
256+
}
257+
}
258+
259+
function closePopups() {
260+
versionCombo.popup.close()
261+
hwArchCombo.popup.close()
262+
driveCombo.popup.close()
263+
}
184264
}

src/app/qml/MainPage.qml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ Page {
6262
}
6363

6464
RadioButton {
65+
checked: mainWindow.selectedOption == Units.MainSelect.Write
6566
text: qsTr("Select .iso file")
6667
onClicked: {
6768
selectedOption = Units.MainSelect.Write
@@ -73,6 +74,7 @@ Page {
7374
RadioButton {
7475
id: restoreRadio
7576
visible: drives.lastRestoreable
77+
checked: mainWindow.selectedOption == Units.MainSelect.Restore
7678
text: drives.lastRestoreable ? qsTr("Restore <b>%1</b>").arg(drives.lastRestoreable.name) : ""
7779
onClicked: {
7880
selectedOption = Units.MainSelect.Restore
@@ -91,4 +93,30 @@ Page {
9193
}
9294
}
9395
}
96+
97+
Keys.onPressed: (event)=> {
98+
switch (event.key) {
99+
case (Qt.Key_1):
100+
mainWindow.selectedOption = Units.MainSelect.Download
101+
break
102+
case (Qt.Key_2):
103+
mainWindow.selectedOption = Units.MainSelect.Write
104+
break
105+
case (Qt.Key_3):
106+
if (restoreRadio.visible)
107+
mainWindow.selectedOption = Units.MainSelect.Restore
108+
break
109+
case (Qt.Key_I):
110+
aboutDialog.show()
111+
break
112+
case (Qt.Key_Right):
113+
case (Qt.Key_N):
114+
mainWindow.setNextPage()
115+
break
116+
case (Qt.Key_Left):
117+
case (Qt.Key_P):
118+
mainWindow.setPreviousPage()
119+
break
120+
}
121+
}
94122
}

src/app/qml/RestorePage.qml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,21 @@ Page {
179179
}
180180
}
181181
]
182+
183+
Keys.onPressed: (event)=> {
184+
switch (event.key) {
185+
case (Qt.Key_I):
186+
aboutDialog.show()
187+
break
188+
case (Qt.Key_Right):
189+
case (Qt.Key_N):
190+
mainWindow.setNextPage()
191+
break
192+
case (Qt.Key_Left):
193+
case (Qt.Key_P):
194+
if (!(lastRestoreable && lastRestoreable.restoreStatus == Units.RestoreStatus.Restoring))
195+
mainWindow.setPreviousPage()
196+
break
197+
}
198+
}
182199
}

src/app/qml/VersionPage.qml

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import QtQml 6.2
2626
Page {
2727
id: versionPage
2828
property int prevSource: 0
29+
property int prevIndex: 0
2930

3031
ColumnLayout {
3132
anchors.fill: parent
@@ -49,25 +50,28 @@ Page {
4950
}
5051

5152
RadioButton {
52-
checked: true
53+
checked: releases.filterSource == Units.Source.Product
5354
text: qsTr("Official Editions")
5455
onClicked: changeFilter(Units.Source.Product)
5556
ButtonGroup.group: radioGroup
5657
}
5758

5859
RadioButton {
60+
checked: releases.filterSource == Units.Source.Emerging
5961
text: qsTr("Emerging Editions")
6062
onClicked: changeFilter(Units.Source.Emerging)
6163
ButtonGroup.group: radioGroup
6264
}
6365

6466
RadioButton {
67+
checked: releases.filterSource == Units.Source.Spins
6568
text: qsTr("Spins")
6669
onClicked: changeFilter(Units.Source.Spins)
6770
ButtonGroup.group: radioGroup
6871
}
6972

7073
RadioButton {
74+
checked: releases.filterSource == Units.Source.Labs
7175
text: qsTr("Labs")
7276
onClicked: changeFilter(Units.Source.Labs)
7377
ButtonGroup.group: radioGroup
@@ -102,4 +106,49 @@ Page {
102106
releases.selectedIndex = parseInt(selectFromComboBox.currentValue)
103107
}
104108
}
109+
110+
Keys.onPressed: (event)=> {
111+
switch (event.key) {
112+
case (Qt.Key_1):
113+
changeFilter(Units.Source.Product)
114+
break
115+
case (Qt.Key_2):
116+
changeFilter(Units.Source.Emerging)
117+
break
118+
case (Qt.Key_3):
119+
changeFilter(Units.Source.Spins)
120+
break
121+
case (Qt.Key_4):
122+
changeFilter(Units.Source.Labs)
123+
break
124+
case (Qt.Key_Return):
125+
case (Qt.Key_Enter):
126+
if (selectFromComboBox.down)
127+
selectFromComboBox.popup.close()
128+
else
129+
selectFromComboBox.popup.open()
130+
break
131+
case (Qt.Key_Up):
132+
if (selectFromComboBox.down)
133+
if (releases.firstSource < releases.selectedIndex)
134+
selectFromComboBox.currentIndex -= 1
135+
break
136+
case (Qt.Key_Down):
137+
if (selectFromComboBox.down)
138+
if (selectFromComboBox.count > selectFromComboBox.currentIndex + 1)
139+
selectFromComboBox.currentIndex += 1
140+
break
141+
case (Qt.Key_I):
142+
aboutDialog.show()
143+
break
144+
case (Qt.Key_Right):
145+
case (Qt.Key_N):
146+
mainWindow.setNextPage()
147+
break
148+
case (Qt.Key_Left):
149+
case (Qt.Key_P):
150+
mainWindow.setPreviousPage()
151+
break
152+
}
153+
}
105154
}

0 commit comments

Comments
 (0)