diff options
| author | dsc <xmrdsc@protonmail.com> | 2018-12-13 19:02:02 +0100 |
|---|---|---|
| committer | dsc <xmrdsc@protonmail.com> | 2018-12-20 10:38:38 +0100 |
| commit | 5bebf83d52d39e833d0e299663165145ab940a92 (patch) | |
| tree | 6f6266dfffc3772eed1faabc3c158b827d1b5dfb /pages | |
| parent | bac833c1dd95666e159406f290ad334decee2810 (diff) | |
| download | monzero-gui-5bebf83d52d39e833d0e299663165145ab940a92.tar.gz monzero-gui-5bebf83d52d39e833d0e299663165145ab940a92.tar.xz monzero-gui-5bebf83d52d39e833d0e299663165145ab940a92.zip | |
Lock wallet on inactivity
Diffstat (limited to 'pages')
| -rw-r--r-- | pages/settings/Settings.qml | 13 | ||||
| -rw-r--r-- | pages/settings/SettingsLayout.qml | 84 |
2 files changed, 90 insertions, 7 deletions
diff --git a/pages/settings/Settings.qml b/pages/settings/Settings.qml index 5aabcccd..9aa44461 100644 --- a/pages/settings/Settings.qml +++ b/pages/settings/Settings.qml @@ -65,17 +65,16 @@ ColumnLayout { onCurrentViewChanged: { if (previousView) { -// if (typeof previousView.onPageClosed === "function") { -// previousView.onPageClosed(); -// } + if (typeof previousView.onPageClosed === "function") { + previousView.onPageClosed(); + } } previousView = currentView if (currentView) { stackView.replace(currentView) - // Component.onCompleted is called before wallet is initilized -// if (typeof currentView.onPageCompleted === "function") { -// currentView.onPageCompleted(); -// } + if (typeof currentView.onPageCompleted === "function") { + currentView.onPageCompleted(); + } } } diff --git a/pages/settings/SettingsLayout.qml b/pages/settings/SettingsLayout.qml index 974da5e3..6914a438 100644 --- a/pages/settings/SettingsLayout.qml +++ b/pages/settings/SettingsLayout.qml @@ -40,6 +40,14 @@ Rectangle { height: 1400 Layout.fillWidth: true + function onPageCompleted() { + userInactivitySliderTimer.running = true; + } + + function onPageClosed() { + userInactivitySliderTimer.running = false; + } + ColumnLayout { id: settingsUI property int itemHeight: 60 * scaleRatio @@ -70,6 +78,82 @@ Rectangle { text: qsTr("Hide balance") + translationManager.emptyString } + MoneroComponents.CheckBox { + visible: !isMobile + id: userInActivityCheckbox + checked: persistentSettings.lockOnUserInActivity + onClicked: persistentSettings.lockOnUserInActivity = !persistentSettings.lockOnUserInActivity + text: qsTr("Lock wallet on inactivity") + translationManager.emptyString + } + + ColumnLayout { + visible: userInActivityCheckbox.checked + Layout.fillWidth: true + Layout.topMargin: 6 * scaleRatio + Layout.leftMargin: 42 * scaleRatio + spacing: 0 + + MoneroComponents.TextBlock { + font.pixelSize: 14 * scaleRatio + 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 * scaleRatio + implicitHeight: 4 * scaleRatio + width: parent.availableWidth + height: implicitHeight + radius: 2 + color: MoneroComponents.Style.grey + + 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 * scaleRatio + implicitHeight: 18 * scaleRatio + radius: 8 + color: parent.pressed ? "#f0f0f0" : "#f6f6f6" + border.color: MoneroComponents.Style.grey + } + } + + Timer { + // @TODO: Slider.onMoved{} is available in Qt > 5.9, use a hacky timer for now + id: userInactivitySliderTimer + interval: 1000; running: false; repeat: true + onTriggered: { + if(persistentSettings.lockOnUserInActivityInterval != userInactivitySlider.value) { + persistentSettings.lockOnUserInActivityInterval = userInactivitySlider.value; + } + } + } + } + MoneroComponents.TextBlock { visible: isMobile font.pixelSize: 14 |
