aboutsummaryrefslogtreecommitdiff
path: root/pages
diff options
context:
space:
mode:
authordsc <xmrdsc@protonmail.com>2018-12-13 19:02:02 +0100
committerdsc <xmrdsc@protonmail.com>2018-12-20 10:38:38 +0100
commit5bebf83d52d39e833d0e299663165145ab940a92 (patch)
tree6f6266dfffc3772eed1faabc3c158b827d1b5dfb /pages
parentbac833c1dd95666e159406f290ad334decee2810 (diff)
downloadmonzero-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.qml13
-rw-r--r--pages/settings/SettingsLayout.qml84
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