monero-gui/src/libwalletqt/WalletManager.h

108 lines
3.7 KiB
C
Raw Normal View History

2016-02-23 15:59:26 +00:00
#ifndef WALLETMANAGER_H
#define WALLETMANAGER_H
#include <QObject>
2016-08-23 07:32:01 +00:00
#include <wallet/wallet2_api.h>
2016-02-23 15:59:26 +00:00
class Wallet;
namespace Bitmonero {
class WalletManager;
}
2016-02-23 15:59:26 +00:00
class WalletManager : public QObject
{
Q_OBJECT
2016-08-23 13:07:52 +00:00
2016-02-23 15:59:26 +00:00
public:
2016-08-23 07:32:01 +00:00
enum LogLevel {
LogLevel_Silent = Bitmonero::WalletManagerFactory::LogLevel_Silent,
LogLevel_0 = Bitmonero::WalletManagerFactory::LogLevel_0,
LogLevel_1 = Bitmonero::WalletManagerFactory::LogLevel_1,
LogLevel_2 = Bitmonero::WalletManagerFactory::LogLevel_2,
LogLevel_3 = Bitmonero::WalletManagerFactory::LogLevel_3,
LogLevel_4 = Bitmonero::WalletManagerFactory::LogLevel_4,
LogLevel_Min = Bitmonero::WalletManagerFactory::LogLevel_Min,
LogLevel_Max = Bitmonero::WalletManagerFactory::LogLevel_Max,
};
static WalletManager * instance();
2016-02-29 14:39:39 +00:00
// wizard: createWallet path;
Q_INVOKABLE Wallet * createWallet(const QString &path, const QString &password,
const QString &language, bool testnet = false);
/*!
* \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
* \return wallet object pointer
*/
Q_INVOKABLE Wallet * openWallet(const QString &path, const QString &password, bool testnet = false);
2016-02-29 14:39:39 +00:00
/*!
* \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);
2016-02-29 14:39:39 +00:00
// wizard: recoveryWallet path; hint: internally it recorvers wallet and set password = ""
Q_INVOKABLE Wallet * recoveryWallet(const QString &path, const QString &memo,
bool testnet = false);
2016-02-23 15:59:26 +00:00
/*!
* \brief closeWallet - closes wallet and frees memory
* \param wallet
* \return wallet address
*/
Q_INVOKABLE QString closeWallet(Wallet * wallet);
/*!
* \brief closeWalletAsync - asynchronous version of "closeWallet"
* \param wallet - wallet pointer;
*/
Q_INVOKABLE void closeWalletAsync(Wallet * wallet);
2016-02-29 14:39:39 +00:00
//! checks is given filename is a wallet;
Q_INVOKABLE bool walletExists(const QString &path) const;
2016-02-29 14:39:39 +00:00
//! returns list with wallet's filenames, if found by given path
Q_INVOKABLE QStringList findWallets(const QString &path);
2016-02-29 14:39:39 +00:00
//! returns error description in human language
Q_INVOKABLE QString errorString() const;
// wizard: both "create" and "recovery" paths.
// TODO: probably move it to "Wallet" interface
Q_INVOKABLE bool moveWallet(const QString &src, const QString &dst);
//! returns libwallet language name for given locale
Q_INVOKABLE QString walletLanguage(const QString &locale);
2016-06-08 10:53:24 +00:00
//! since we can't call static method from QML, move it to this class
2016-08-23 13:07:52 +00:00
Q_INVOKABLE QString displayAmount(quint64 amount) const;
Q_INVOKABLE quint64 amountFromString(const QString &amount) const;
Q_INVOKABLE quint64 amountFromDouble(double amount) const;
Q_INVOKABLE quint64 maximumAllowedAmount() const;
// QML JS engine doesn't support unsigned integers
Q_INVOKABLE QString maximumAllowedAmountAsSting() const;
2016-08-23 07:32:01 +00:00
void setLogLevel(int logLevel);
2016-02-23 15:59:26 +00:00
signals:
void walletOpened(Wallet * wallet);
void walletClosed(const QString &walletAddress);
public slots:
private:
explicit WalletManager(QObject *parent = 0);
static WalletManager * m_instance;
Bitmonero::WalletManager * m_pimpl;
2016-02-23 15:59:26 +00:00
};
#endif // WALLETMANAGER_H