diff --git a/components/LanguageSidebar.qml b/components/LanguageSidebar.qml index 49c65980..ba8fc9fd 100644 --- a/components/LanguageSidebar.qml +++ b/components/LanguageSidebar.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2019, The Monero Project +// Copyright (c) 2014-2020, The Monero Project // // All rights reserved. // @@ -133,8 +133,10 @@ Drawer { // set wizard language settings wizard.language_locale = locale; wizard.language_wallet = wallet_language; - wizard.language_language = display_name + " (" + locale_spl[1] + ") "; - sideBar.close() + wizard.language_language = display_name; + + appWindow.showStatusMessage(qsTr("Language changed."), 3); + appWindow.toggleLanguageView(); } hoverEnabled: true onEntered: { @@ -149,15 +151,8 @@ Drawer { } } - ScrollIndicator.vertical: ScrollIndicator { - // @TODO: QT 5.9 introduces `policy: ScrollBar.AlwaysOn` - active: true - contentItem.opacity: 0.7 - onActiveChanged: { - if (!active) { - active = true; - } - } + ScrollBar.vertical: ScrollBar { + onActiveChanged: if (!active && !isMac) active = true } } } diff --git a/main.qml b/main.qml index bb68008d..0cf856a4 100644 --- a/main.qml +++ b/main.qml @@ -1705,12 +1705,6 @@ ApplicationWindow { } - WizardLang { - id: languageView - visible: false - anchors.fill: parent - } - property int minWidth: 326 property int minHeight: 400 MouseArea { @@ -1811,8 +1805,7 @@ ApplicationWindow { } function toggleLanguageView(){ - middlePanel.visible = !middlePanel.visible; - languageView.visible = !languageView.visible + languageSidebar.isOpened ? languageSidebar.close() : languageSidebar.open(); resetLanguageFields() // update after changing language from settings page if (persistentSettings.language != wizard.language_language) { @@ -2166,8 +2159,8 @@ ApplicationWindow { } } -// @TODO: QML type 'Drawer' has issues with buildbot; debug after Qt 5.9 migration -// MoneroComponents.LanguageSidebar { -// id: languageSidebar -// } + MoneroComponents.LanguageSidebar { + id: languageSidebar + dragMargin: 0 + } } diff --git a/qml.qrc b/qml.qrc index e1d0b749..21f4b194 100644 --- a/qml.qrc +++ b/qml.qrc @@ -191,7 +191,6 @@ wizard/WizardHeader.qml wizard/WizardHome.qml wizard/WizardLanguage.qml - wizard/WizardLang.qml wizard/WizardNav.qml wizard/WizardWalletInput.qml wizard/WizardRestoreWallet1.qml diff --git a/wizard/WizardLang.qml b/wizard/WizardLang.qml deleted file mode 100644 index f3e5a5ea..00000000 --- a/wizard/WizardLang.qml +++ /dev/null @@ -1,233 +0,0 @@ -// 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 QtQuick 2.9 -import QtQuick.Dialogs 1.2 -import QtQuick.Layouts 1.2 -import QtQuick.XmlListModel 2.0 -import QtQuick.Controls 2.0 - -import "../js/Wizard.js" as Wizard -import "../components" as MoneroComponents -import "../components/effects/" as MoneroEffects - -Rectangle { - id: langScreen - color: "transparent" - anchors.fill: parent - property int layoutScale: { - if(appWindow.width < 800){ - return 1; - } else { - return 2; - } - } - - MoneroEffects.GradientBackground { - anchors.fill: parent - fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor - initialStartColor: MoneroComponents.Style.wizardBackgroundGradientStart - initialStopColor: MoneroComponents.Style.middlePanelBackgroundGradientStop - blackColorStart: MoneroComponents.Style._b_wizardBackgroundGradientStart - blackColorStop: MoneroComponents.Style._b_middlePanelBackgroundGradientStop - whiteColorStart: MoneroComponents.Style._w_wizardBackgroundGradientStart - whiteColorStop: MoneroComponents.Style._w_middlePanelBackgroundGradientStop - start: Qt.point(0, 0) - end: Qt.point(height, width) - } - - ColumnLayout { - anchors.top: parent.top - anchors.topMargin: persistentSettings.customDecorations ? 65 : 15 - width: parent.width - 100 - anchors.horizontalCenter: parent.horizontalCenter; - - Text { - text: qsTr("Language settings") + translationManager.emptyString - Layout.fillWidth: true - font.family: MoneroComponents.Style.fontRegular.name - color: MoneroComponents.Style.defaultFontColor - font.pixelSize: { - if(langScreen.layoutScale === 2 ){ - return 34; - } else { - return 28; - } - } - - wrapMode: Text.WordWrap - leftPadding: 0 - topPadding: 0 - bottomPadding: 0 - } - - Text { - Layout.fillWidth: true - visible: parent.subtitle !== "" - - color: MoneroComponents.Style.dimmedFontColor - text: qsTr("Change the language of the Monero GUI.") + translationManager.emptyString - - font.family: MoneroComponents.Style.fontRegular.name - font.pixelSize: { - if(langScreen.layoutScale === 2 ){ - return 16; - } else { - return 14; - } - } - - wrapMode: Text.WordWrap - leftPadding: 0 - topPadding: 0 - } - - Flow { - id: flow - height: 800 - Layout.fillWidth: true - Layout.topMargin: 20 - - spacing: 5 - - Repeater { - model: langModel - delegate: Rectangle { - id: item - color: "transparent" - width: { - var minimumWidth = img.width + langRect.width; - if(minimumWidth < 200) return 200; - return minimumWidth; - } - - height: 48 - - Rectangle { - id: img - anchors.top: parent.top - color: "transparent" - width: 32 - height: parent.height - - Image { - source: flag - mipmap: true - smooth: true - width: 32 - height: 32 - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Rectangle { - id: langRect - anchors.top: parent.top - anchors.left: img.right - color: "transparent" - height: parent.height - width: langText.width + 22 - - MoneroComponents.TextPlain { - id: langText - font.bold: true - font.pixelSize: 14 - color: MoneroComponents.Style.defaultFontColor - text: display_name - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - 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; - - appWindow.showStatusMessage(qsTr("Language changed."), 3); - appWindow.toggleLanguageView(); - } - hoverEnabled: true - onEntered: { - parent.opacity = 0.75 - } - onExited: { - parent.opacity = 1 - } - } - } - } - } - - RowLayout { - Layout.fillWidth: true - Layout.topMargin: 32 - spacing: 20 - - MoneroComponents.StandardButton { - small: true - text: qsTr("Close") + translationManager.emptyString - - onClicked: { - appWindow.toggleLanguageView(); - } - } - } - - 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); - } - } - } - } -}