aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.qml62
-rw-r--r--src/libwalletqt/WalletManager.cpp9
-rw-r--r--wizard/WizardCreateWallet.qml3
-rw-r--r--wizard/WizardRecoveryWallet.qml9
-rw-r--r--wizard/utils.js5
5 files changed, 50 insertions, 38 deletions
diff --git a/main.qml b/main.qml
index bf30266d..f589c666 100644
--- a/main.qml
+++ b/main.qml
@@ -52,8 +52,6 @@ ApplicationWindow {
property var currentWallet;
property var transaction;
property alias password : passwordDialog.password
- property bool walletOpeningWithPassword: false
-
function altKeyReleased() { ctrlPressed = false; }
@@ -140,18 +138,27 @@ ApplicationWindow {
basicPanel.paymentClicked.connect(handlePayment);
+ // wallet already opened with wizard, we just need to initialize it
if (typeof wizard.settings['wallet'] !== 'undefined') {
- wallet = wizard.settings['wallet'];
+ connectWallet(wizard.settings['wallet'])
} else {
var wallet_path = walletPath();
-
- console.log("opening wallet at: ", wallet_path);
+ console.log("opening wallet at: ", wallet_path, "with password: ", appWindow.password);
walletManager.openWalletAsync(wallet_path, appWindow.password,
persistentSettings.testnet);
}
}
+
+ function connectWallet(wallet) {
+ currentWallet = wallet
+ currentWallet.refreshed.connect(onWalletRefresh)
+ currentWallet.updated.connect(onWalletUpdate)
+ console.log("initializing with daemon address: ", persistentSettings.daemon_address)
+ currentWallet.initAsync(persistentSettings.daemon_address, 0);
+ }
+
function walletPath() {
var wallet_path = persistentSettings.wallet_path + "/" + persistentSettings.account_name + "/"
+ persistentSettings.account_name;
@@ -162,39 +169,32 @@ ApplicationWindow {
console.log(">>> wallet opened: " + wallet)
if (wallet.status !== Wallet.Status_Ok) {
- if (!appWindow.walletOpeningWithPassword) {
+ if (appWindow.password === '') {
console.error("Error opening wallet with empty password: ", wallet.errorString);
- console.log("closing wallet async...")
+ console.log("closing wallet async : " + wallet.address)
walletManager.closeWalletAsync(wallet)
// try to open wallet with password;
- appWindow.walletOpeningWithPassword = true
passwordDialog.open();
} else {
// opening with password but password doesn't match
console.error("Error opening wallet with password: ", wallet.errorString);
+
informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("Couldn't open wallet: ") + wallet.errorString;
informationPopup.icon = StandardIcon.Critical
+ console.log("closing wallet async : " + wallet.address)
+ walletManager.closeWalletAsync(wallet);
informationPopup.open()
- informationPopup.onCloseCallback = appWindow.initialize
- walletManager.closeWallet(wallet);
+ informationPopup.onCloseCallback = function() {
+ passwordDialog.open()
+ }
+
}
return;
}
// wallet opened successfully, subscribing for wallet updates
- currentWallet = wallet
-// wallet.updated.connect(appWindow.onWalletUpdate)
-// wallet.refreshed.connect(appWindow.onWalletRefresh)
- // currentWallet.refreshed.connect(onWalletRefresh)
- var connectResult = currentWallet.refreshed.connect(function() {
- console.log("QML: refreshed")
- })
-
- console.log("connected to refreshed: " + connectResult);
- currentWallet.updated.connect(onWalletUpdate)
- console.log("initializing with daemon address: ", persistentSettings.daemon_address)
- currentWallet.initAsync(persistentSettings.daemon_address, 0);
+ connectWallet(wallet)
}
@@ -205,14 +205,14 @@ ApplicationWindow {
function onWalletUpdate() {
console.log(">>> wallet updated")
- basicPanel.unlockedBalanceText = leftPanel.unlockedBalanceText = walletManager.displayAmount(wallet.unlockedBalance);
- basicPanel.balanceText = leftPanel.balanceText = walletManager.displayAmount(wallet.balance);
-
+ basicPanel.unlockedBalanceText = leftPanel.unlockedBalanceText =
+ walletManager.displayAmount(currentWallet.unlockedBalance);
+ basicPanel.balanceText = leftPanel.balanceText = walletManager.displayAmount(currentWallet.balance);
}
function onWalletRefresh() {
console.log(">>> wallet refreshed")
- leftPanel.networkStatus.connected = wallet.connected
+ leftPanel.networkStatus.connected = currentWallet.connected
onWalletUpdate();
}
@@ -369,12 +369,12 @@ ApplicationWindow {
id: passwordDialog
standardButtons: StandardButton.Ok + StandardButton.Cancel
onAccepted: {
+ appWindow.currentWallet = null
+ appWindow.initialize();
- var wallet_path = walletPath();
- console.log("opening wallet with password: ", wallet_path);
-
- walletManager.openWalletAsync(wallet_path, password, persistentSettings.testnet);
-
+// var wallet_path = walletPath();
+// console.log("opening wallet with password: ", wallet_path);
+// walletManager.openWalletAsync(wallet_path, password, persistentSettings.testnet);
}
onRejected: {
appWindow.enableUI(false)
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index 50a61553..da5c4cd7 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -40,6 +40,13 @@ Wallet *WalletManager::openWallet(const QString &path, const QString &password,
Bitmonero::Wallet * w = m_pimpl->openWallet(path.toStdString(), password.toStdString(), testnet);
Wallet * wallet = new Wallet(w);
+
+ // move wallet to the GUI thread. Otherwise it wont be emitting signals
+ if (wallet->thread() != qApp->thread()) {
+ wallet->moveToThread(qApp->thread());
+ }
+
+
return wallet;
}
@@ -84,7 +91,7 @@ void WalletManager::closeWalletAsync(Wallet *wallet)
this, [this, watcher]() {
QFuture<QString> future = watcher->future();
watcher->deleteLater();
- emit future.result();
+ emit walletClosed(future.result());
});
}
diff --git a/wizard/WizardCreateWallet.qml b/wizard/WizardCreateWallet.qml
index 771a13ec..43b8158f 100644
--- a/wizard/WizardCreateWallet.qml
+++ b/wizard/WizardCreateWallet.qml
@@ -29,6 +29,7 @@
import QtQuick 2.2
import moneroComponents 1.0
import QtQuick.Dialogs 1.2
+import 'utils.js' as Utils
Item {
opacity: 0
@@ -54,7 +55,7 @@ Item {
}
function checkNextButton() {
- var wordsArray = cleanWordsInput(uiItem.wordsTextItem.memoText).split(" ");
+ var wordsArray = Utils.lineBreaksToSpaces(uiItem.wordsTextItem.memoText).split(" ");
wizard.nextButton.enabled = wordsArray.length === 25;
}
diff --git a/wizard/WizardRecoveryWallet.qml b/wizard/WizardRecoveryWallet.qml
index 2e6fe5f6..505bc239 100644
--- a/wizard/WizardRecoveryWallet.qml
+++ b/wizard/WizardRecoveryWallet.qml
@@ -30,6 +30,7 @@ import QtQuick 2.2
import moneroComponents 1.0
import QtQuick.Dialogs 1.2
import Bitmonero.Wallet 1.0
+import 'utils.js' as Utils
Item {
opacity: 0
@@ -46,13 +47,13 @@ Item {
}
function checkNextButton() {
- var wordsArray = cleanWordsInput(uiItem.wordsTextItem.memoText).split(" ");
+ var wordsArray = Utils.lineBreaksToSpaces(uiItem.wordsTextItem.memoText).split(" ");
wizard.nextButton.enabled = wordsArray.length === 25;
}
function onPageClosed(settingsObject) {
settingsObject['account_name'] = uiItem.accountNameText
- settingsObject['words'] = cleanWordsInput(uiItem.wordsTextItem.memoText)
+ settingsObject['words'] = Utils.lineBreaksToSpaces(uiItem.wordsTextItem.memoText)
settingsObject['wallet_path'] = uiItem.walletPath
return recoveryWallet(settingsObject)
}
@@ -69,9 +70,7 @@ Item {
return success;
}
- function cleanWordsInput(text) {
- return text.trim().replace(/(\r\n|\n|\r)/gm, " ");
- }
+
WizardManageWalletUI {
id: uiItem
diff --git a/wizard/utils.js b/wizard/utils.js
index 0cc910c6..be066598 100644
--- a/wizard/utils.js
+++ b/wizard/utils.js
@@ -42,3 +42,8 @@ function mapScope (inputScopeFrom, inputScopeTo, outputScopeFrom, outputScopeTo,
function tr(text) {
return qsTr(text) + translationManager.emptyString
}
+
+
+function lineBreaksToSpaces(text) {
+ return text.trim().replace(/(\r\n|\n|\r)/gm, " ");
+}