This commit is contained in:
stoffu
2018-03-06 01:19:45 +09:00
parent c5363da1e8
commit c8f0cf3543
22 changed files with 161 additions and 112 deletions

View File

@@ -102,9 +102,9 @@ Wallet::Status Wallet::status() const
return static_cast<Status>(m_walletImpl->status());
}
bool Wallet::testnet() const
NetworkType::Type Wallet::nettype() const
{
return m_walletImpl->testnet();
return static_cast<NetworkType::Type>(m_walletImpl->nettype());
}

View File

@@ -9,6 +9,7 @@
#include "wallet/api/wallet2_api.h" // we need to have an access to the Monero::Wallet::Status enum here;
#include "PendingTransaction.h" // we need to have an access to the PendingTransaction::Priority enum here;
#include "UnsignedTransaction.h"
#include "NetworkType.h"
namespace Monero {
class Wallet; // forward declaration
@@ -29,7 +30,7 @@ class Wallet : public QObject
Q_PROPERTY(QString seed READ getSeed)
Q_PROPERTY(QString seedLanguage READ getSeedLanguage)
Q_PROPERTY(Status status READ status)
Q_PROPERTY(bool testnet READ testnet)
Q_PROPERTY(NetworkType::Type nettype READ nettype)
// Q_PROPERTY(ConnectionStatus connected READ connected)
Q_PROPERTY(quint32 currentSubaddressAccount READ currentSubaddressAccount)
Q_PROPERTY(bool synchronized READ synchronized)
@@ -82,8 +83,8 @@ public:
//! returns last operation's status
Status status() const;
//! returns true testnet wallet.
bool testnet() const;
//! returns network type of the wallet.
NetworkType::Type nettype() const;
//! returns whether the wallet is connected, and version status
Q_INVOKABLE ConnectionStatus connected(bool forceCheck = false);

View File

@@ -25,7 +25,7 @@ WalletManager *WalletManager::instance()
}
Wallet *WalletManager::createWallet(const QString &path, const QString &password,
const QString &language, bool testnet)
const QString &language, NetworkType::Type nettype)
{
QMutexLocker locker(&m_mutex);
if (m_currentWallet) {
@@ -33,22 +33,22 @@ Wallet *WalletManager::createWallet(const QString &path, const QString &password
delete m_currentWallet;
}
Monero::Wallet * w = m_pimpl->createWallet(path.toStdString(), password.toStdString(),
language.toStdString(), testnet);
language.toStdString(), static_cast<Monero::NetworkType>(nettype));
m_currentWallet = new Wallet(w);
return m_currentWallet;
}
Wallet *WalletManager::openWallet(const QString &path, const QString &password, bool testnet)
Wallet *WalletManager::openWallet(const QString &path, const QString &password, NetworkType::Type nettype)
{
QMutexLocker locker(&m_mutex);
if (m_currentWallet) {
qDebug() << "Closing open m_currentWallet" << m_currentWallet;
delete m_currentWallet;
}
qDebug("%s: opening wallet at %s, testnet = %d ",
__PRETTY_FUNCTION__, qPrintable(path), testnet);
qDebug("%s: opening wallet at %s, nettype = %d ",
__PRETTY_FUNCTION__, qPrintable(path), nettype);
Monero::Wallet * w = m_pimpl->openWallet(path.toStdString(), password.toStdString(), testnet);
Monero::Wallet * w = m_pimpl->openWallet(path.toStdString(), password.toStdString(), static_cast<Monero::NetworkType>(nettype));
qDebug("%s: opened wallet: %s, status: %d", __PRETTY_FUNCTION__, w->address(0, 0).c_str(), w->status());
m_currentWallet = new Wallet(w);
@@ -60,10 +60,10 @@ Wallet *WalletManager::openWallet(const QString &path, const QString &password,
return m_currentWallet;
}
void WalletManager::openWalletAsync(const QString &path, const QString &password, bool testnet)
void WalletManager::openWalletAsync(const QString &path, const QString &password, NetworkType::Type nettype)
{
QFuture<Wallet*> future = QtConcurrent::run(this, &WalletManager::openWallet,
path, password, testnet);
path, password, nettype);
QFutureWatcher<Wallet*> * watcher = new QFutureWatcher<Wallet*>();
connect(watcher, &QFutureWatcher<Wallet*>::finished,
@@ -76,19 +76,19 @@ void WalletManager::openWalletAsync(const QString &path, const QString &password
}
Wallet *WalletManager::recoveryWallet(const QString &path, const QString &memo, bool testnet, quint64 restoreHeight)
Wallet *WalletManager::recoveryWallet(const QString &path, const QString &memo, NetworkType::Type nettype, quint64 restoreHeight)
{
QMutexLocker locker(&m_mutex);
if (m_currentWallet) {
qDebug() << "Closing open m_currentWallet" << m_currentWallet;
delete m_currentWallet;
}
Monero::Wallet * w = m_pimpl->recoveryWallet(path.toStdString(), memo.toStdString(), testnet, restoreHeight);
Monero::Wallet * w = m_pimpl->recoveryWallet(path.toStdString(), memo.toStdString(), static_cast<Monero::NetworkType>(nettype), restoreHeight);
m_currentWallet = new Wallet(w);
return m_currentWallet;
}
Wallet *WalletManager::createWalletFromKeys(const QString &path, const QString &language, bool testnet,
Wallet *WalletManager::createWalletFromKeys(const QString &path, const QString &language, NetworkType::Type nettype,
const QString &address, const QString &viewkey, const QString &spendkey,
quint64 restoreHeight)
{
@@ -98,7 +98,7 @@ Wallet *WalletManager::createWalletFromKeys(const QString &path, const QString &
delete m_currentWallet;
m_currentWallet = NULL;
}
Monero::Wallet * w = m_pimpl->createWalletFromKeys(path.toStdString(), language.toStdString(), testnet, restoreHeight,
Monero::Wallet * w = m_pimpl->createWalletFromKeys(path.toStdString(), language.toStdString(), static_cast<Monero::NetworkType>(nettype), restoreHeight,
address.toStdString(), viewkey.toStdString(), spendkey.toStdString());
m_currentWallet = new Wallet(w);
return m_currentWallet;
@@ -196,24 +196,24 @@ bool WalletManager::paymentIdValid(const QString &payment_id) const
return Monero::Wallet::paymentIdValid(payment_id.toStdString());
}
bool WalletManager::addressValid(const QString &address, bool testnet) const
bool WalletManager::addressValid(const QString &address, NetworkType::Type nettype) const
{
return Monero::Wallet::addressValid(address.toStdString(), testnet);
return Monero::Wallet::addressValid(address.toStdString(), static_cast<Monero::NetworkType>(nettype));
}
bool WalletManager::keyValid(const QString &key, const QString &address, bool isViewKey, bool testnet) const
bool WalletManager::keyValid(const QString &key, const QString &address, bool isViewKey, NetworkType::Type nettype) const
{
std::string error;
if(!Monero::Wallet::keyValid(key.toStdString(), address.toStdString(), isViewKey, testnet, error)){
if(!Monero::Wallet::keyValid(key.toStdString(), address.toStdString(), isViewKey, static_cast<Monero::NetworkType>(nettype), error)){
qDebug() << QString::fromStdString(error);
return false;
}
return true;
}
QString WalletManager::paymentIdFromAddress(const QString &address, bool testnet) const
QString WalletManager::paymentIdFromAddress(const QString &address, NetworkType::Type nettype) const
{
return QString::fromStdString(Monero::Wallet::paymentIdFromAddress(address.toStdString(), testnet));
return QString::fromStdString(Monero::Wallet::paymentIdFromAddress(address.toStdString(), static_cast<Monero::NetworkType>(nettype)));
}
void WalletManager::setDaemonAddress(const QString &address)

View File

@@ -6,6 +6,7 @@
#include <wallet/api/wallet2_api.h>
#include <QMutex>
#include <QPointer>
#include "NetworkType.h"
class Wallet;
namespace Monero {
@@ -32,30 +33,30 @@ public:
static WalletManager * instance();
// wizard: createWallet path;
Q_INVOKABLE Wallet * createWallet(const QString &path, const QString &password,
const QString &language, bool testnet = false);
const QString &language, NetworkType::Type nettype = NetworkType::MAINNET);
/*!
* \brief openWallet - opens wallet by given path
* \param path - wallet filename
* \param password - wallet password. Empty string in wallet isn't password protected
* \param testnet - determines if we running testnet
* \param nettype - type of network the wallet is running on
* \return wallet object pointer
*/
Q_INVOKABLE Wallet * openWallet(const QString &path, const QString &password, bool testnet = false);
Q_INVOKABLE Wallet * openWallet(const QString &path, const QString &password, NetworkType::Type nettype = NetworkType::MAINNET);
/*!
* \brief openWalletAsync - asynchronous version of "openWallet". Returns immediately. "walletOpened" signal
* emitted when wallet opened;
*/
Q_INVOKABLE void openWalletAsync(const QString &path, const QString &password, bool testnet = false);
Q_INVOKABLE void openWalletAsync(const QString &path, const QString &password, NetworkType::Type nettype = NetworkType::MAINNET);
// wizard: recoveryWallet path; hint: internally it recorvers wallet and set password = ""
Q_INVOKABLE Wallet * recoveryWallet(const QString &path, const QString &memo,
bool testnet = false, quint64 restoreHeight = 0);
NetworkType::Type nettype = NetworkType::MAINNET, quint64 restoreHeight = 0);
Q_INVOKABLE Wallet * createWalletFromKeys(const QString &path,
const QString &language,
bool testnet,
NetworkType::Type nettype,
const QString &address,
const QString &viewkey,
const QString &spendkey = "",
@@ -99,10 +100,10 @@ public:
Q_INVOKABLE QString maximumAllowedAmountAsSting() const;
Q_INVOKABLE bool paymentIdValid(const QString &payment_id) const;
Q_INVOKABLE bool addressValid(const QString &address, bool testnet) const;
Q_INVOKABLE bool keyValid(const QString &key, const QString &address, bool isViewKey, bool testnet) const;
Q_INVOKABLE bool addressValid(const QString &address, NetworkType::Type nettype) const;
Q_INVOKABLE bool keyValid(const QString &key, const QString &address, bool isViewKey, NetworkType::Type nettype) const;
Q_INVOKABLE QString paymentIdFromAddress(const QString &address, bool testnet) const;
Q_INVOKABLE QString paymentIdFromAddress(const QString &address, NetworkType::Type nettype) const;
Q_INVOKABLE void setDaemonAddress(const QString &address);
Q_INVOKABLE bool connected() const;