From fdee509695015148df8afba18eff5f09d06d0c86 Mon Sep 17 00:00:00 2001 From: rating89us <45968869+rating89us@users.noreply.github.com> Date: Mon, 11 May 2020 13:48:05 +0200 Subject: [PATCH] SettingsNode: keep local node running redesign --- main.qml | 55 +++++++++++++++++++++++++-------- pages/settings/SettingsNode.qml | 36 +++++++++++++++++++++ 2 files changed, 78 insertions(+), 13 deletions(-) diff --git a/main.qml b/main.qml index e736487e4a..791f5db2c6 100644 --- a/main.qml +++ b/main.qml @@ -1420,6 +1420,7 @@ ApplicationWindow { property bool autosave: true property int autosaveMinutes: 10 property bool pruneBlockchain: false + property int keepLocalNodeRunning: 2 //0 = stop local node, 1 = keep it running, 2 = always ask property bool fiatPriceEnabled: false property bool fiatPriceToggle: false @@ -1603,7 +1604,25 @@ ApplicationWindow { onRejectedCallback(); } } - + + StandardDialog { + z: parent.z + 1 + id: localNodeRunningConfirmationDialog + closeVisible: false + property var onAcceptedCallback + property var onRejectedCallback + onRejected: { + //Stop local node + if (onRejectedCallback) + onRejectedCallback(); + } + onAccepted: { + //Keep local node running + if (onAcceptedCallback) + onAcceptedCallback() + } + } + MoneroComponents.UpdateDialog { id: updateDialog @@ -1845,7 +1864,7 @@ ApplicationWindow { radius: 64 visible: passwordDialog.visible || inputDialog.visible || splash.visible || updateDialog.visible || devicePassphraseDialog.visible || txConfirmationPopup.visible || successfulTxPopup.visible || - remoteNodeDialog.visible + remoteNodeDialog.visible || localNodeRunningConfirmationDialog.visible } @@ -2080,19 +2099,29 @@ ApplicationWindow { } function showDaemonIsRunningDialog(onClose) { - // Show confirmation dialog - confirmationDialog.title = qsTr("Local node is running") + translationManager.emptyString; - confirmationDialog.text = qsTr("Do you want to stop local node or keep it running in the background?") + translationManager.emptyString; - confirmationDialog.icon = StandardIcon.Question; - confirmationDialog.cancelText = qsTr("Force stop") + translationManager.emptyString; - confirmationDialog.okText = qsTr("Keep it running") + translationManager.emptyString; - confirmationDialog.onAcceptedCallback = function() { + if (persistentSettings.keepLocalNodeRunning == 2) { + // 2 = always ask + // Show confirmation dialog + localNodeRunningConfirmationDialog.title = qsTr("Local node is running") + translationManager.emptyString; + localNodeRunningConfirmationDialog.closeVisible = false; + localNodeRunningConfirmationDialog.text = qsTr("Your local node is now running in the background. It is recommended to keep it running in order to help the network and to maintain your blockchain synchronized.") + translationManager.emptyString; + localNodeRunningConfirmationDialog.icon = StandardIcon.Question; + localNodeRunningConfirmationDialog.cancelText = qsTr("Stop local node") + translationManager.emptyString; + localNodeRunningConfirmationDialog.okText = qsTr("Keep it running") + translationManager.emptyString; + localNodeRunningConfirmationDialog.onAcceptedCallback = function() { + onClose(); + } + localNodeRunningConfirmationDialog.onRejectedCallback = function() { + stopDaemon(onClose); + }; + localNodeRunningConfirmationDialog.open(); + } else if (persistentSettings.keepLocalNodeRunning == 1) { + //1 = keep local node running onClose(); - } - confirmationDialog.onRejectedCallback = function() { + } else if (persistentSettings.keepLocalNodeRunning == 0) { + //0 = stop local node stopDaemon(onClose); - }; - confirmationDialog.open(); + } } onClosing: { diff --git a/pages/settings/SettingsNode.qml b/pages/settings/SettingsNode.qml index ab3d49f1bb..b16b5f195f 100644 --- a/pages/settings/SettingsNode.qml +++ b/pages/settings/SettingsNode.qml @@ -307,6 +307,42 @@ Rectangle{ } } + ColumnLayout { + spacing: 10 + Layout.fillWidth: true + id: keepLocalNodeRunningColumn + z: parent.z + 1 + + MoneroComponents.Label { + id: keepLocalNodeRunningLabel + Layout.topMargin: 0 + text: qsTr("When closing GUI wallet or connecting to a remote node") + translationManager.emptyString + fontBold: false + fontSize: 14 + } + + ListModel { + id: keepLocalNodeRunningListModel + ListElement { column1: "Stop local node"; } + ListElement { column1: "Keep local node running (recommended)"; } + ListElement { column1: "Always ask whether the node should be stopped"; } + } + + MoneroComponents.StandardDropdown { + id: keepLocalNodeRunningDropDown + dataModel: keepLocalNodeRunningListModel + itemTopMargin: 2 + currentIndex: appWindow.persistentSettings.keepLocalNodeRunning; + onChanged: { + console.log("keepLocalNodeRunning changed: ",currentIndex); + appWindow.persistentSettings.keepLocalNodeRunning = currentIndex; + } + Layout.fillWidth: true + Layout.preferredWidth: keepLocalNodeRunningColumn.width + z: parent.z + 1 + } + } + MoneroComponents.LineEditMulti { id: daemonFlags Layout.fillWidth: true