From ca79525fdb4e462a435d9914a46fcef449577f9d Mon Sep 17 00:00:00 2001 From: xiphon Date: Sat, 2 May 2020 00:14:29 +0000 Subject: [PATCH] Slider component --- components/Slider.qml | 68 ++++++++++++++++++++++++++++++ pages/settings/SettingsLayout.qml | 70 +++++-------------------------- qml.qrc | 1 + 3 files changed, 79 insertions(+), 60 deletions(-) create mode 100644 components/Slider.qml diff --git a/components/Slider.qml b/components/Slider.qml new file mode 100644 index 00000000..451aa7a9 --- /dev/null +++ b/components/Slider.qml @@ -0,0 +1,68 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.0 as QtQuickControls +import QtQuick.Layouts 1.1 + +import "../components" as MoneroComponents + +ColumnLayout { + property alias from: slider.from + property alias stepSize: slider.stepSize + property alias to: slider.to + property alias value: slider.value + + property alias text: label.text + + signal moved() + + spacing: 0 + + Text { + id: label + color: MoneroComponents.Style.defaultFontColor + font.pixelSize: 14 + Layout.fillWidth: true + } + + QtQuickControls.Slider { + id: slider + leftPadding: 0 + snapMode: QtQuickControls.Slider.SnapAlways + + background: Rectangle { + x: parent.leftPadding + y: parent.topPadding + parent.availableHeight / 2 - height / 2 + implicitWidth: 200 + implicitHeight: 4 + width: parent.availableWidth + height: implicitHeight + radius: 2 + color: MoneroComponents.Style.progressBarBackgroundColor + + Rectangle { + width: parent.visualPosition * parent.width + height: parent.height + color: MoneroComponents.Style.green + radius: 2 + } + } + + handle: Rectangle { + x: parent.leftPadding + parent.visualPosition * (parent.availableWidth - width) + y: parent.topPadding + parent.availableHeight / 2 - height / 2 + implicitWidth: 18 + implicitHeight: 18 + radius: 8 + color: parent.pressed ? "#f0f0f0" : "#f6f6f6" + border.color: MoneroComponents.Style.grey + } + + onMoved: parent.moved() + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.NoButton + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + } + } +} diff --git a/pages/settings/SettingsLayout.qml b/pages/settings/SettingsLayout.qml index 4d338045..0d32b88e 100644 --- a/pages/settings/SettingsLayout.qml +++ b/pages/settings/SettingsLayout.qml @@ -101,70 +101,20 @@ Rectangle { text: qsTr("Lock wallet on inactivity") + translationManager.emptyString } - ColumnLayout { + MoneroComponents.Slider { visible: userInActivityCheckbox.checked Layout.fillWidth: true Layout.topMargin: 6 - Layout.leftMargin: 42 - spacing: 0 - - Text { - color: MoneroComponents.Style.defaultFontColor - font.pixelSize: 14 - Layout.fillWidth: true - text: { - var val = userInactivitySlider.value; - var minutes = val > 1 ? qsTr("minutes") : qsTr("minute"); - - qsTr("After ") + val + " " + minutes + translationManager.emptyString; - } - } - - Slider { - id: userInactivitySlider - from: 1 - value: persistentSettings.lockOnUserInActivityInterval - to: 60 - leftPadding: 0 - stepSize: 1 - snapMode: Slider.SnapAlways - - background: Rectangle { - x: parent.leftPadding - y: parent.topPadding + parent.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: parent.availableWidth - height: implicitHeight - radius: 2 - color: MoneroComponents.Style.progressBarBackgroundColor - - Rectangle { - width: parent.visualPosition * parent.width - height: parent.height - color: MoneroComponents.Style.green - radius: 2 - } - } - - handle: Rectangle { - x: parent.leftPadding + parent.visualPosition * (parent.availableWidth - width) - y: parent.topPadding + parent.availableHeight / 2 - height / 2 - implicitWidth: 18 - implicitHeight: 18 - radius: 8 - color: parent.pressed ? "#f0f0f0" : "#f6f6f6" - border.color: MoneroComponents.Style.grey - } - - onMoved: persistentSettings.lockOnUserInActivityInterval = userInactivitySlider.value; - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.NoButton - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - } + Layout.leftMargin: 35 + from: 1 + stepSize: 1 + to: 60 + value: persistentSettings.lockOnUserInActivityInterval + text: { + var minutes = value > 1 ? qsTr("minutes") : qsTr("minute"); + return qsTr("After ") + value + " " + minutes + translationManager.emptyString; } + onMoved: persistentSettings.lockOnUserInActivityInterval = value } //! Manage pricing diff --git a/qml.qrc b/qml.qrc index 404de207..eb24cc20 100644 --- a/qml.qrc +++ b/qml.qrc @@ -5,6 +5,7 @@ MiddlePanel.qml components/Label.qml components/SettingsListItem.qml + components/Slider.qml components/UpdateDialog.qml images/whatIsIcon.png images/whatIsIcon@2x.png