Browse Source
There were too many levels of indirection here, and the functionality of walletframe and walletstack can easily be merged. This commit merges the two which cuts a lot of lines of boilerplate code.0.10
Wladimir J. van der Laan
11 years ago
7 changed files with 106 additions and 324 deletions
@ -1,174 +0,0 @@
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
* Qt4 bitcoin GUI. |
||||
* |
||||
* W.J. van der Laan 2011-2012 |
||||
* The Bitcoin Developers 2011-2013 |
||||
*/ |
||||
#include "walletstack.h" |
||||
#include "walletview.h" |
||||
#include "bitcoingui.h" |
||||
|
||||
#include <QMap> |
||||
#include <QMessageBox> |
||||
|
||||
WalletStack::WalletStack(QWidget *parent) : |
||||
QStackedWidget(parent), |
||||
gui(0), |
||||
clientModel(0), |
||||
bOutOfSync(true) |
||||
{ |
||||
setContentsMargins(0,0,0,0); |
||||
} |
||||
|
||||
WalletStack::~WalletStack() |
||||
{ |
||||
} |
||||
|
||||
bool WalletStack::addWallet(const QString& name, WalletModel *walletModel) |
||||
{ |
||||
if (!gui || !clientModel || !walletModel || mapWalletViews.count(name) > 0) |
||||
return false; |
||||
|
||||
WalletView *walletView = new WalletView(this, gui); |
||||
walletView->setBitcoinGUI(gui); |
||||
walletView->setClientModel(clientModel); |
||||
walletView->setWalletModel(walletModel); |
||||
walletView->showOutOfSyncWarning(bOutOfSync); |
||||
addWidget(walletView); |
||||
mapWalletViews[name] = walletView; |
||||
|
||||
// Ensure a walletView is able to show the main window
|
||||
connect(walletView, SIGNAL(showNormalIfMinimized()), gui, SLOT(showNormalIfMinimized())); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool WalletStack::removeWallet(const QString& name) |
||||
{ |
||||
if (mapWalletViews.count(name) == 0) |
||||
return false; |
||||
|
||||
WalletView *walletView = mapWalletViews.take(name); |
||||
removeWidget(walletView); |
||||
return true; |
||||
} |
||||
|
||||
void WalletStack::removeAllWallets() |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
removeWidget(i.value()); |
||||
mapWalletViews.clear(); |
||||
} |
||||
|
||||
bool WalletStack::handlePaymentRequest(const SendCoinsRecipient &recipient) |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (!walletView) |
||||
return false; |
||||
|
||||
return walletView->handlePaymentRequest(recipient); |
||||
} |
||||
|
||||
void WalletStack::showOutOfSyncWarning(bool fShow) |
||||
{ |
||||
bOutOfSync = fShow; |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->showOutOfSyncWarning(fShow); |
||||
} |
||||
|
||||
void WalletStack::gotoOverviewPage() |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->gotoOverviewPage(); |
||||
} |
||||
|
||||
void WalletStack::gotoHistoryPage() |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->gotoHistoryPage(); |
||||
} |
||||
|
||||
void WalletStack::gotoAddressBookPage() |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->gotoAddressBookPage(); |
||||
} |
||||
|
||||
void WalletStack::gotoReceiveCoinsPage() |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->gotoReceiveCoinsPage(); |
||||
} |
||||
|
||||
void WalletStack::gotoSendCoinsPage(QString addr) |
||||
{ |
||||
QMap<QString, WalletView*>::const_iterator i; |
||||
for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) |
||||
i.value()->gotoSendCoinsPage(addr); |
||||
} |
||||
|
||||
void WalletStack::gotoSignMessageTab(QString addr) |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->gotoSignMessageTab(addr); |
||||
} |
||||
|
||||
void WalletStack::gotoVerifyMessageTab(QString addr) |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->gotoVerifyMessageTab(addr); |
||||
} |
||||
|
||||
void WalletStack::encryptWallet(bool status) |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->encryptWallet(status); |
||||
} |
||||
|
||||
void WalletStack::backupWallet() |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->backupWallet(); |
||||
} |
||||
|
||||
void WalletStack::changePassphrase() |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->changePassphrase(); |
||||
} |
||||
|
||||
void WalletStack::unlockWallet() |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->unlockWallet(); |
||||
} |
||||
|
||||
void WalletStack::setEncryptionStatus() |
||||
{ |
||||
WalletView *walletView = (WalletView*)currentWidget(); |
||||
if (walletView) |
||||
walletView->setEncryptionStatus(); |
||||
} |
||||
|
||||
bool WalletStack::setCurrentWallet(const QString& name) |
||||
{ |
||||
if (mapWalletViews.count(name) == 0) |
||||
return false; |
||||
|
||||
WalletView *walletView = mapWalletViews.value(name); |
||||
setCurrentWidget(walletView); |
||||
walletView->setEncryptionStatus(); |
||||
return true; |
||||
} |
@ -1,104 +0,0 @@
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
* Qt4 bitcoin GUI. |
||||
* |
||||
* W.J. van der Laan 2011-2012 |
||||
* The Bitcoin Developers 2011-2013 |
||||
*/ |
||||
#ifndef WALLETSTACK_H |
||||
#define WALLETSTACK_H |
||||
|
||||
#include <QStackedWidget> |
||||
#include <QMap> |
||||
#include <boost/shared_ptr.hpp> |
||||
|
||||
class BitcoinGUI; |
||||
class TransactionTableModel; |
||||
class ClientModel; |
||||
class WalletModel; |
||||
class WalletView; |
||||
class TransactionView; |
||||
class OverviewPage; |
||||
class AddressBookPage; |
||||
class SendCoinsDialog; |
||||
class SendCoinsRecipient; |
||||
class SignVerifyMessageDialog; |
||||
class Notificator; |
||||
class RPCConsole; |
||||
|
||||
class CWalletManager; |
||||
|
||||
QT_BEGIN_NAMESPACE |
||||
class QLabel; |
||||
class QModelIndex; |
||||
QT_END_NAMESPACE |
||||
|
||||
/*
|
||||
WalletStack class. This class is a container for WalletView instances. It takes the place of centralWidget. |
||||
It was added to support multiple wallet functionality. It communicates with both the client and the |
||||
wallet models to give the user an up-to-date view of the current core state. It manages all the wallet views |
||||
it contains and updates them accordingly. |
||||
*/ |
||||
class WalletStack : public QStackedWidget |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
explicit WalletStack(QWidget *parent = 0); |
||||
~WalletStack(); |
||||
|
||||
void setBitcoinGUI(BitcoinGUI *gui) { this->gui = gui; } |
||||
|
||||
void setClientModel(ClientModel *clientModel) { this->clientModel = clientModel; } |
||||
|
||||
bool addWallet(const QString& name, WalletModel *walletModel); |
||||
bool removeWallet(const QString& name); |
||||
|
||||
void removeAllWallets(); |
||||
|
||||
bool handlePaymentRequest(const SendCoinsRecipient &recipient); |
||||
|
||||
void showOutOfSyncWarning(bool fShow); |
||||
|
||||
private: |
||||
BitcoinGUI *gui; |
||||
ClientModel *clientModel; |
||||
QMap<QString, WalletView*> mapWalletViews; |
||||
|
||||
bool bOutOfSync; |
||||
|
||||
public slots: |
||||
bool setCurrentWallet(const QString& name); |
||||
|
||||
/** Switch to overview (home) page */ |
||||
void gotoOverviewPage(); |
||||
/** Switch to history (transactions) page */ |
||||
void gotoHistoryPage(); |
||||
/** Switch to address book page */ |
||||
void gotoAddressBookPage(); |
||||
/** Switch to receive coins page */ |
||||
void gotoReceiveCoinsPage(); |
||||
/** Switch to send coins page */ |
||||
void gotoSendCoinsPage(QString addr = ""); |
||||
|
||||
/** Show Sign/Verify Message dialog and switch to sign message tab */ |
||||
void gotoSignMessageTab(QString addr = ""); |
||||
/** Show Sign/Verify Message dialog and switch to verify message tab */ |
||||
void gotoVerifyMessageTab(QString addr = ""); |
||||
|
||||
/** Encrypt the wallet */ |
||||
void encryptWallet(bool status); |
||||
/** Backup the wallet */ |
||||
void backupWallet(); |
||||
/** Change encrypted wallet passphrase */ |
||||
void changePassphrase(); |
||||
/** Ask for passphrase to unlock wallet temporarily */ |
||||
void unlockWallet(); |
||||
|
||||
/** Set the encryption status as shown in the UI.
|
||||
@param[in] status current encryption status |
||||
@see WalletModel::EncryptionStatus |
||||
*/ |
||||
void setEncryptionStatus(); |
||||
}; |
||||
|
||||
#endif // WALLETSTACK_H
|
Loading…
Reference in new issue