Skip to content

Commit eb35f02

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

File tree

6 files changed

+263
-77
lines changed

6 files changed

+263
-77
lines changed

src/app/qml/AboutDialog.qml

Lines changed: 6 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,10 @@ ApplicationWindow {
9596
text: qsTr("Close")
9697
}
9798
}
99+
100+
Keys.onPressed: (event)=> {
101+
if (event.key == Qt.Key_I)
102+
aboutDialog.close()
103+
}
98104
}
99105
}

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/DrivePage.qml

Lines changed: 65 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,68 @@ Page {
181182
PropertyChanges { target: nextButton; enabled: driveCombo.enabled && releases.localFile.iso }
182183
}
183184
]
185+
186+
Keys.onPressed: (event)=> {
187+
if (drivePage.state == "Downloading") {
188+
switch (event.key) {
189+
case (Qt.Key_1):
190+
closePopups()
191+
if (!versionCombo.down)
192+
versionCombo.popup.open()
193+
break
194+
case (Qt.Key_2):
195+
closePopups()
196+
if (!hwArchCombo.down)
197+
hwArchCombo.popup.open()
198+
break
199+
case (Qt.Key_3):
200+
closePopups()
201+
if (!driveCombo.down && driveCombo.count)
202+
driveCombo.popup.open()
203+
break
204+
case (Qt.Key_D):
205+
case (Qt.Key_4):
206+
deleteCheck.checked = !deleteCheck.checked
207+
break
208+
case (Qt.Key_Return):
209+
case (Qt.Key_Enter):
210+
closePopups()
211+
break
212+
case (Qt.Key_Up):
213+
if (versionCombo.down && versionCombo.currentIndex > 0)
214+
versionCombo.currentIndex -= 1
215+
else if (hwArchCombo.down && hwArchCombo.currentIndex > 0)
216+
hwArchCombo.currentIndex -= 1
217+
else if (driveCombo.down && driveCombo.currentIndex > 0)
218+
driveCombo.currentIndex -= 1
219+
break
220+
case (Qt.Key_Down):
221+
if (versionCombo.down && versionCombo.currentIndex < versionCombo.count - 1)
222+
versionCombo.currentIndex += 1
223+
else if (hwArchCombo.down && hwArchCombo.currentIndex < hwArchCombo.count - 1)
224+
hwArchCombo.currentIndex += 1
225+
else if (driveCombo.down && driveCombo.currentIndex < driveCombo.count - 1)
226+
driveCombo.currentIndex += 1
227+
break
228+
}
229+
} else {
230+
switch (event.key) {
231+
case (Qt.Key_1):
232+
if (portalFileDialog.isAvailable)
233+
portalFileDialog.open()
234+
else
235+
fileDialog.open()
236+
break
237+
case (Qt.Key_2):
238+
driveCombo.focus = true
239+
break
240+
}
241+
}
242+
}
243+
244+
function closePopups() {
245+
versionCombo.popup.close()
246+
hwArchCombo.popup.close()
247+
driveCombo.popup.close()
248+
}
184249
}

src/app/qml/MainPage.qml

Lines changed: 17 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,19 @@ 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+
}
110+
}
94111
}

src/app/qml/VersionPage.qml

Lines changed: 39 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,38 @@ 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+
}
142+
}
105143
}

0 commit comments

Comments
 (0)