aboutsummaryrefslogtreecommitdiff
path: root/components/LanguageSidebar.qml
diff options
context:
space:
mode:
authordsc <xmrdsc@protonmail.com>2019-01-14 01:02:44 +0100
committerdsc <xmrdsc@protonmail.com>2019-02-22 03:05:27 +0100
commitf329a710295deed3c15f2acff9a519c0a70e98e1 (patch)
tree95d2b1f6b8c31826a561d74d33368c1e9ef85d42 /components/LanguageSidebar.qml
parent333f4aaf83bd64de02b07a56d86bbf90363e403b (diff)
downloadmonzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.tar.gz
monzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.tar.xz
monzero-gui-f329a710295deed3c15f2acff9a519c0a70e98e1.zip
Wizard redesign
Diffstat (limited to 'components/LanguageSidebar.qml')
-rw-r--r--components/LanguageSidebar.qml170
1 files changed, 170 insertions, 0 deletions
diff --git a/components/LanguageSidebar.qml b/components/LanguageSidebar.qml
new file mode 100644
index 00000000..7d45d68b
--- /dev/null
+++ b/components/LanguageSidebar.qml
@@ -0,0 +1,170 @@
+// Copyright (c) 2014-2019, The Monero Project
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice, this list
+// of conditions and the following disclaimer in the documentation and/or other
+// materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import "../components" as MoneroComponents
+
+import QtQuick 2.7
+import QtQuick.XmlListModel 2.0
+import QtQuick.Layouts 1.2
+import QtQuick.Controls 2.0
+
+
+Drawer {
+ id: sideBar
+
+ // @TODO: Qt 5.10 introduces `opened` built-in for Drawer
+ property bool isOpened: false
+
+ onClosed: {
+ isOpened = false;
+ }
+
+ onOpened: {
+ isOpened = true;
+ }
+
+ width: 240 * scaleRatio
+ height: parent.height - (persistentSettings.customDecorations ? 50 : 0)
+ y: titleBar.height
+
+ background: Rectangle {
+ color: "#0d0d0d"
+ width: parent.width
+ }
+
+ Rectangle {
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ color: "red"
+
+ ListView {
+ clip: true
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ boundsBehavior: Flickable.StopAtBounds
+ width: sideBar.width
+ height: sideBar.height
+
+ model: langModel
+
+ delegate: Rectangle {
+ id: item
+ color: "transparent"
+ width: sideBar.width
+ height: 32 * scaleRatio
+
+ Text {
+ anchors.left: parent.left
+ anchors.leftMargin: 16 * scaleRatio
+ font.bold: true
+ font.pixelSize: 14 * scaleRatio
+ color: MoneroComponents.Style.defaultFontColor
+ text: display_name
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ Rectangle {
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ color: MoneroComponents.Style.dividerColor
+ opacity: MoneroComponents.Style.dividerOpacity
+ height: 1
+ }
+
+ // button gradient while checked
+ Image {
+ anchors.fill: parent
+ source: "../images/menuButtonGradient.png"
+ opacity: 0.65
+ visible: true
+
+ 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
+ wizard.language_locale = locale;
+ wizard.language_wallet = wallet_language;
+ wizard.language_language = display_name + " (" + locale_spl[1] + ") ";
+ sideBar.close()
+ }
+ hoverEnabled: true
+ onEntered: {
+ // item.color = "#26FFFFFF"
+ parent.opacity = 1
+ }
+ onExited: {
+ // item.color = "transparent"
+ parent.opacity = 0.65
+ }
+ }
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {
+ // @TODO: QT 5.9 introduces `policy: ScrollBar.AlwaysOn`
+ active: true
+ contentItem.opacity: 0.7
+ onActiveChanged: {
+ if (!active) {
+ active = true;
+ }
+ }
+ }
+ }
+ }
+
+ //Flags model
+ XmlListModel {
+ id: langModel
+ source: "/lang/languages.xml"
+ query: "/languages/language"
+
+ XmlRole { name: "display_name"; query: "@display_name/string()" }
+ XmlRole { name: "locale"; query: "@locale/string()" }
+ XmlRole { name: "wallet_language"; query: "@wallet_language/string()" }
+ XmlRole { name: "flag"; query: "@flag/string()" }
+ // TODO: XmlListModel is read only, we should store current language somewhere else
+ // and set current language accordingly
+ XmlRole { name: "isCurrent"; query: "@enabled/string()" }
+
+ onStatusChanged: {
+ if(status === XmlListModel.Ready){
+ console.log("languages available: ",count);
+ }
+ }
+ }
+}