aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaquee <jaquee.monero@gmail.com>2017-05-03 14:37:33 +0200
committerJaquee <jaquee.monero@gmail.com>2017-05-03 14:37:33 +0200
commit98b040670c0edc5f1cf97ce9493524cd5408ee9d (patch)
tree518dcdde2e555c18949c1c53b1a68cdfadd691b6
parent4ca35af11ac8b41192bdb373216513e524ee4cb0 (diff)
downloadmonzero-gui-98b040670c0edc5f1cf97ce9493524cd5408ee9d.tar.gz
monzero-gui-98b040670c0edc5f1cf97ce9493524cd5408ee9d.tar.xz
monzero-gui-98b040670c0edc5f1cf97ce9493524cd5408ee9d.zip
Settings: Rescan wallet cache button
-rw-r--r--pages/Settings.qml36
-rw-r--r--src/libwalletqt/WalletManager.cpp19
-rw-r--r--src/libwalletqt/WalletManager.h3
3 files changed, 58 insertions, 0 deletions
diff --git a/pages/Settings.qml b/pages/Settings.qml
index 9301a92e..292658af 100644
--- a/pages/Settings.qml
+++ b/pages/Settings.qml
@@ -121,6 +121,42 @@ Rectangle {
settingsPasswordDialog.open();
}
}
+
+
+
+ StandardButton {
+ id: rescanWalletbutton
+ shadowReleasedColor: "#FF4304"
+ shadowPressedColor: "#B32D00"
+ releasedColor: "#FF6C3C"
+ pressedColor: "#FF4304"
+ text: qsTr("Rescan wallet cache") + translationManager.emptyString
+ onClicked: {
+ // Show confirmation dialog
+ confirmationDialog.title = qsTr("Rescan wallet cache") + translationManager.emptyString;
+ confirmationDialog.text = qsTr("Are you sure you want to rebuild the wallet cache?\n"
+ + "The following information will be deleted\n"
+ + "- Recipient addresses\n"
+ + "- Tx keys\n"
+ + "- Tx descriptions\n\n"
+ + "The old wallet cache file will be renamed and can be restored later.\n"
+ );
+ confirmationDialog.icon = StandardIcon.Question
+ confirmationDialog.cancelText = qsTr("Cancel")
+ confirmationDialog.onAcceptedCallback = function() {
+ walletManager.closeWallet();
+ walletManager.clearWalletCache(persistentSettings.wallet_path);
+ walletManager.openWalletAsync(persistentSettings.wallet_path, appWindow.password,
+ persistentSettings.testnet);
+ }
+
+ confirmationDialog.onRejectedCallback = null;
+
+ confirmationDialog.open()
+
+ }
+ }
+
}
//! Manage daemon
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index ad77ad48..300b3699 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -11,6 +11,7 @@
#include <QtConcurrent/QtConcurrent>
#include <QMutex>
#include <QMutexLocker>
+#include <QString>
WalletManager * WalletManager::m_instance = nullptr;
@@ -338,6 +339,24 @@ QString WalletManager::checkUpdates(const QString &software, const QString &subd
return QString::fromStdString(std::get<1>(result) + "|" + std::get<2>(result) + "|" + std::get<3>(result) + "|" + std::get<4>(result));
}
+bool WalletManager::clearWalletCache(const QString &wallet_path) const
+{
+
+ QString fileName = wallet_path;
+ // Make sure wallet file is not .keys
+ fileName.replace(".keys","");
+ QFile walletCache(fileName);
+ QString suffix = ".old_cache";
+ QString newFileName = fileName + suffix;
+
+ // create unique file name
+ for (int i = 1; QFile::exists(newFileName); i++) {
+ newFileName = QString("%1%2.%3").arg(fileName).arg(suffix).arg(i);
+ }
+
+ return walletCache.rename(newFileName);
+}
+
WalletManager::WalletManager(QObject *parent) : QObject(parent)
{
m_pimpl = Monero::WalletManagerFactory::getWalletManager();
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index 01afc064..6824d603 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -136,6 +136,9 @@ public:
Q_INVOKABLE bool saveQrCode(const QString &, const QString &) const;
Q_INVOKABLE QString checkUpdates(const QString &software, const QString &subdir) const;
+ // clear/rename wallet cache
+ Q_INVOKABLE bool clearWalletCache(const QString &fileName) const;
+
signals:
void walletOpened(Wallet * wallet);