Settings: Rescan wallet cache button

pull/2/head
Jaquee 7 years ago
parent 4ca35af11a
commit 98b040670c

@ -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

@ -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();

@ -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);