diff options
| author | selsta <selsta@sent.at> | 2019-01-14 13:25:59 +0100 |
|---|---|---|
| committer | selsta <selsta@sent.at> | 2019-01-22 23:07:30 +0100 |
| commit | bd809abc52cc8d312c0023cfc9ae2d14e191d0b5 (patch) | |
| tree | 0fa88add33f5c5aea7ebd492ce32f3a03ae07a40 /src/libwalletqt | |
| parent | 9689fff957ba994b619a2a7fb881598a997f66c2 (diff) | |
| download | monzero-gui-bd809abc52cc8d312c0023cfc9ae2d14e191d0b5.tar.gz monzero-gui-bd809abc52cc8d312c0023cfc9ae2d14e191d0b5.tar.xz monzero-gui-bd809abc52cc8d312c0023cfc9ae2d14e191d0b5.zip | |
add account support
Co-authored-by: kenshi84 <kenshi84@protonmail.ch>
Diffstat (limited to 'src/libwalletqt')
| -rw-r--r-- | src/libwalletqt/SubaddressAccount.cpp | 56 | ||||
| -rw-r--r-- | src/libwalletqt/SubaddressAccount.h | 33 | ||||
| -rw-r--r-- | src/libwalletqt/Wallet.cpp | 22 | ||||
| -rw-r--r-- | src/libwalletqt/Wallet.h | 12 |
4 files changed, 123 insertions, 0 deletions
diff --git a/src/libwalletqt/SubaddressAccount.cpp b/src/libwalletqt/SubaddressAccount.cpp new file mode 100644 index 00000000..83557141 --- /dev/null +++ b/src/libwalletqt/SubaddressAccount.cpp @@ -0,0 +1,56 @@ +#include "SubaddressAccount.h" +#include <QDebug> + +SubaddressAccount::SubaddressAccount(Monero::SubaddressAccount *subaddressAccountImpl, QObject *parent) + : QObject(parent), m_subaddressAccountImpl(subaddressAccountImpl) +{ + qDebug(__FUNCTION__); + getAll(); +} + +QList<Monero::SubaddressAccountRow*> SubaddressAccount::getAll(bool update) const +{ + qDebug(__FUNCTION__); + + emit refreshStarted(); + + if(update) + m_rows.clear(); + + if (m_rows.empty()){ + for (auto &row: m_subaddressAccountImpl->getAll()) { + m_rows.append(row); + } + } + + emit refreshFinished(); + return m_rows; +} + +Monero::SubaddressAccountRow * SubaddressAccount::getRow(int index) const +{ + return m_rows.at(index); +} + +void SubaddressAccount::addRow(const QString &label) const +{ + m_subaddressAccountImpl->addRow(label.toStdString()); + getAll(true); +} + +void SubaddressAccount::setLabel(quint32 accountIndex, const QString &label) const +{ + m_subaddressAccountImpl->setLabel(accountIndex, label.toStdString()); + getAll(true); +} + +void SubaddressAccount::refresh() const +{ + m_subaddressAccountImpl->refresh(); + getAll(true); +} + +quint64 SubaddressAccount::count() const +{ + return m_rows.size(); +} diff --git a/src/libwalletqt/SubaddressAccount.h b/src/libwalletqt/SubaddressAccount.h new file mode 100644 index 00000000..ee40c22e --- /dev/null +++ b/src/libwalletqt/SubaddressAccount.h @@ -0,0 +1,33 @@ +#ifndef SUBADDRESSACCOUNT_H +#define SUBADDRESSACCOUNT_H + +#include <wallet/api/wallet2_api.h> +#include <QObject> +#include <QList> +#include <QDateTime> + +class SubaddressAccount : public QObject +{ + Q_OBJECT +public: + Q_INVOKABLE QList<Monero::SubaddressAccountRow*> getAll(bool update = false) const; + Q_INVOKABLE Monero::SubaddressAccountRow * getRow(int index) const; + Q_INVOKABLE void addRow(const QString &label) const; + Q_INVOKABLE void setLabel(quint32 accountIndex, const QString &label) const; + Q_INVOKABLE void refresh() const; + quint64 count() const; + +signals: + void refreshStarted() const; + void refreshFinished() const; + +public slots: + +private: + explicit SubaddressAccount(Monero::SubaddressAccount * subaddressAccountImpl, QObject *parent); + friend class Wallet; + Monero::SubaddressAccount * m_subaddressAccountImpl; + mutable QList<Monero::SubaddressAccountRow*> m_rows; +}; + +#endif // SUBADDRESSACCOUNT_H diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 85761e0b..e488b635 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -4,10 +4,12 @@ #include "TransactionHistory.h" #include "AddressBook.h" #include "Subaddress.h" +#include "SubaddressAccount.h" #include "model/TransactionHistoryModel.h" #include "model/TransactionHistorySortFilterModel.h" #include "model/AddressBookModel.h" #include "model/SubaddressModel.h" +#include "model/SubaddressAccountModel.h" #include "wallet/api/wallet2_api.h" #include <QFile> @@ -357,6 +359,7 @@ bool Wallet::refresh() bool result = m_walletImpl->refresh(); m_history->refresh(currentSubaddressAccount()); m_subaddress->refresh(currentSubaddressAccount()); + m_subaddressAccount->getAll(true); if (result) emit updated(); return result; @@ -543,6 +546,20 @@ SubaddressModel *Wallet::subaddressModel() return m_subaddressModel; } +SubaddressAccount *Wallet::subaddressAccount() const +{ + return m_subaddressAccount; +} + +SubaddressAccountModel *Wallet::subaddressAccountModel() const +{ + if (!m_subaddressAccountModel) { + Wallet * w = const_cast<Wallet*>(this); + m_subaddressAccountModel = new SubaddressAccountModel(w,m_subaddressAccount); + } + return m_subaddressAccountModel; +} + QString Wallet::generatePaymentId() const { return QString::fromStdString(Monero::Wallet::genPaymentId()); @@ -858,6 +875,8 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) , m_addressBookModel(nullptr) , m_subaddress(nullptr) , m_subaddressModel(nullptr) + , m_subaddressAccount(nullptr) + , m_subaddressAccountModel(nullptr) , m_daemonBlockChainHeight(0) , m_daemonBlockChainHeightTtl(DAEMON_BLOCKCHAIN_HEIGHT_CACHE_TTL_SECONDS) , m_daemonBlockChainTargetHeight(0) @@ -868,6 +887,7 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) m_history = new TransactionHistory(m_walletImpl->history(), this); m_addressBook = new AddressBook(m_walletImpl->addressBook(), this); m_subaddress = new Subaddress(m_walletImpl->subaddress(), this); + m_subaddressAccount = new SubaddressAccount(m_walletImpl->subaddressAccount(), this); m_walletListener = new WalletListenerImpl(this); m_walletImpl->setListener(m_walletListener); m_connectionStatus = Wallet::ConnectionStatus_Disconnected; @@ -893,6 +913,8 @@ Wallet::~Wallet() m_addressBook = NULL; delete m_subaddress; m_subaddress = NULL; + delete m_subaddressAccount; + m_subaddressAccount = NULL; //Monero::WalletManagerFactory::getWalletManager()->closeWallet(m_walletImpl); if(status() == Status_Critical) qDebug("Not storing wallet cache"); diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 8197e567..e3357528 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -24,6 +24,8 @@ class AddressBook; class AddressBookModel; class Subaddress; class SubaddressModel; +class SubaddressAccount; +class SubaddressAccountModel; class Wallet : public QObject { @@ -44,6 +46,8 @@ class Wallet : public QObject Q_PROPERTY(AddressBook * addressBook READ addressBook) Q_PROPERTY(SubaddressModel * subaddressModel READ subaddressModel) Q_PROPERTY(Subaddress * subaddress READ subaddress) + Q_PROPERTY(SubaddressAccountModel * subaddressAccountModel READ subaddressAccountModel) + Q_PROPERTY(SubaddressAccount * subaddressAccount READ subaddressAccount) Q_PROPERTY(bool viewOnly READ viewOnly) Q_PROPERTY(QString secretViewKey READ getSecretViewKey) Q_PROPERTY(QString publicViewKey READ getPublicViewKey) @@ -234,6 +238,12 @@ public: //! returns subadress model SubaddressModel *subaddressModel(); + //! returns subaddress account + SubaddressAccount *subaddressAccount() const; + + //! returns subadress account model + SubaddressAccountModel *subaddressAccountModel() const; + //! generate payment id Q_INVOKABLE QString generatePaymentId() const; @@ -348,6 +358,8 @@ private: mutable AddressBookModel * m_addressBookModel; Subaddress * m_subaddress; mutable SubaddressModel * m_subaddressModel; + SubaddressAccount * m_subaddressAccount; + mutable SubaddressAccountModel * m_subaddressAccountModel; QMutex m_connectionStatusMutex; bool m_connectionStatusRunning; QString m_daemonUsername; |
