#include "Status/Wallet/WalletController.h" #include #include #include #include #include #include #include #include #include #include #include "AccountAssetsController.h" #include "NewWalletAccountController.h" #include "SavedAddressesController.h" namespace GoAccounts = Status::StatusGo::Accounts; namespace WalletGo = Status::StatusGo::Wallet; namespace UtilsSG = Status::StatusGo::Utils; namespace StatusGo = Status::StatusGo; namespace Status::Wallet { WalletController::WalletController() : m_accounts(Helpers::makeSharedQObject(std::move(getWalletAccounts()), "account")) , m_currentAccount(m_accounts->get(0)) { } WalletController* WalletController::create(QQmlEngine* qmlEngine, QJSEngine* jsEngine) { return new WalletController(); } NewWalletAccountController* WalletController::createNewWalletAccountController() const { return new NewWalletAccountController(m_accounts); } SavedAddressesController* WalletController::createSavedAddressesController() const { return new SavedAddressesController(); } QAbstractListModel* WalletController::accountsModel() const { return m_accounts.get(); } WalletAccount* WalletController::currentAccount() const { return m_currentAccount.get(); } void WalletController::setCurrentAccountIndex(int index) { assert(index >= 0 && index < m_accounts->size()); auto newCurrentAccount = m_accounts->get(index); if(m_currentAccount == newCurrentAccount) return; m_currentAccount = newCurrentAccount; emit currentAccountChanged(); } AccountAssetsController* WalletController::createAccountAssetsController(WalletAccount* account) { return new AccountAssetsController(account); } std::vector WalletController::getWalletAccounts(bool rootWalletAccountsOnly) const { auto all = GoAccounts::getAccounts(); std::vector result; for(auto account : all) { if(!account.isChat && (!rootWalletAccountsOnly || account.isWallet)) result.push_back(Helpers::makeSharedQObject(std::move(account))); } return result; } } // namespace Status::Wallet