aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2021-07-06 11:50:34 -0400
committerluigi1111 <luigi1111w@gmail.com>2021-07-06 11:50:34 -0400
commit1c61ec2511af8a4c545c1ff3791668becdf33dbe (patch)
tree8001002ed9bb62e92646b24eaab164a99035187c
parentd0707d78a11a0baf9daf92a4e2d9e6a751c37bc5 (diff)
parent8419fce062aead2e58850713b8ecd47295b0452c (diff)
downloadmonzero-gui-1c61ec2511af8a4c545c1ff3791668becdf33dbe.tar.gz
monzero-gui-1c61ec2511af8a4c545c1ff3791668becdf33dbe.tar.xz
monzero-gui-1c61ec2511af8a4c545c1ff3791668becdf33dbe.zip
Merge pull request #3603
8419fce LanguageSidebar: navigate/select language with keyboard; enable accessibility; selected indicator; remember previous focused item (rating89us)
-rw-r--r--components/LanguageSidebar.qml70
-rw-r--r--main.qml4
2 files changed, 55 insertions, 19 deletions
diff --git a/components/LanguageSidebar.qml b/components/LanguageSidebar.qml
index e7de02ef..8372d474 100644
--- a/components/LanguageSidebar.qml
+++ b/components/LanguageSidebar.qml
@@ -53,26 +53,64 @@ Drawer {
color: "red"
ListView {
+ id: languagesListView
clip: true
Layout.fillHeight: true
Layout.fillWidth: true
boundsBehavior: Flickable.StopAtBounds
width: sideBar.width
height: sideBar.height
+ focus: true
model: langModel
+ Keys.onUpPressed: currentIndex !== 0 ? currentIndex = currentIndex - 1 : ""
+ Keys.onBacktabPressed: currentIndex !== 0 ? currentIndex = currentIndex - 1 : ""
+ Keys.onDownPressed: currentIndex + 1 !== count ? currentIndex = currentIndex + 1 : ""
+ Keys.onTabPressed: currentIndex + 1 !== count ? currentIndex = currentIndex + 1 : ""
+
delegate: Rectangle {
id: item
- color: "transparent"
+ color: index == languagesListView.currentIndex ? MoneroComponents.Style.titleBarButtonHoverColor : "transparent"
width: sideBar.width
height: 32
+ Accessible.role: Accessible.ListItem
+ Accessible.name: display_name
+ Keys.onEnterPressed: setSelectedItemAsLanguage();
+ Keys.onReturnPressed: setSelectedItemAsLanguage();
+ Keys.onSpacePressed: setSelectedItemAsLanguage();
+
+ function setSelectedItemAsLanguage() {
+ var locale_spl = locale.split("_");
+
+ // reload active translations
+ console.log(locale_spl[0]);
+ translationManager.setLanguage(locale_spl[0]);
+
+ // set wizard language settings
+ persistentSettings.locale = locale;
+ persistentSettings.language = display_name;
+ persistentSettings.language_wallet = wallet_language;
+
+ appWindow.showStatusMessage(qsTr("Language changed."), 3);
+ appWindow.toggleLanguageView();
+ }
+
+ Rectangle {
+ id: selectedIndicator
+ anchors.left: parent.left
+ anchors.leftMargin: 0
+ height: parent.height
+ width: 2
+ color: index == languagesListView.currentIndex ? MoneroComponents.Style.buttonBackgroundColor : "transparent"
+ }
+
Rectangle {
id: flagRect
height: 24
width: 24
- anchors.left: parent.left
+ anchors.left: selectedIndicator.right
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
color: "transparent"
@@ -85,8 +123,8 @@ Drawer {
MoneroComponents.TextPlain {
anchors.left: parent.left
- anchors.leftMargin: 30
- font.bold: true
+ anchors.leftMargin: 32
+ font.bold: languagesListView.currentIndex == index ? true : false
font.pixelSize: 14
color: MoneroComponents.Style.defaultFontColor
text: display_name
@@ -112,21 +150,7 @@ Drawer {
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
- onClicked: {
- var locale_spl = locale.split("_");
-
- // reload active translations
- console.log(locale_spl[0]);
- translationManager.setLanguage(locale_spl[0]);
-
- // set wizard language settings
- persistentSettings.locale = locale;
- persistentSettings.language = display_name;
- persistentSettings.language_wallet = wallet_language;
-
- appWindow.showStatusMessage(qsTr("Language changed."), 3);
- appWindow.toggleLanguageView();
- }
+ onClicked: setSelectedItemAsLanguage();
hoverEnabled: true
onEntered: {
// item.color = "#26FFFFFF"
@@ -166,4 +190,12 @@ Drawer {
}
}
}
+
+ function selectCurrentLanguage() {
+ for (var i = 0; i < langModel.count; ++i) {
+ if (langModel.get(i).display_name === persistentSettings.language) {
+ languagesListView.currentIndex = i;
+ }
+ }
+ }
}
diff --git a/main.qml b/main.qml
index e12aa2b8..918557fb 100644
--- a/main.qml
+++ b/main.qml
@@ -62,6 +62,7 @@ ApplicationWindow {
minimumHeight: 450
property var currentItem
+ property var previousActiveFocusItem
property bool hideBalanceForced: false
property bool ctrlPressed: false
property alias persistentSettings : persistentSettings
@@ -1937,6 +1938,7 @@ ApplicationWindow {
function toggleLanguageView(){
languageSidebar.visible ? languageSidebar.close() : languageSidebar.open();
+ languageSidebar.selectCurrentLanguage()
resetLanguageFields()
}
@@ -2349,6 +2351,8 @@ ApplicationWindow {
MoneroComponents.LanguageSidebar {
id: languageSidebar
dragMargin: 0
+ onAboutToShow: previousActiveFocusItem = activeFocusItem;
+ onClosed: { if (previousActiveFocusItem) previousActiveFocusItem.forceActiveFocus() }
}
MoneroComponents.MenuBar { }