Merge pull request #2872 from Diapolo/GUI_wallet

Bitcoin-Qt: tweak Qt walletXXX.cpp/h code
This commit is contained in:
Wladimir J. van der Laan 2013-08-23 01:31:25 -07:00
commit b60012f2b6
6 changed files with 42 additions and 24 deletions

View file

@ -12,15 +12,13 @@
#include <QMessageBox> #include <QMessageBox>
WalletFrame::WalletFrame(BitcoinGUI *_gui) : WalletFrame::WalletFrame(BitcoinGUI *_gui) :
QFrame(_gui), QFrame(_gui)
gui(_gui),
clientModel(0)
{ {
// Leave HBox hook for adding a list view later // Leave HBox hook for adding a list view later
QHBoxLayout *walletFrameLayout = new QHBoxLayout(this); QHBoxLayout *walletFrameLayout = new QHBoxLayout(this);
setContentsMargins(0,0,0,0); setContentsMargins(0,0,0,0);
walletStack = new WalletStack(this); walletStack = new WalletStack(this);
walletStack->setBitcoinGUI(gui); walletStack->setBitcoinGUI(_gui);
walletFrameLayout->setContentsMargins(0,0,0,0); walletFrameLayout->setContentsMargins(0,0,0,0);
walletFrameLayout->addWidget(walletStack); walletFrameLayout->addWidget(walletStack);
} }
@ -31,7 +29,7 @@ WalletFrame::~WalletFrame()
void WalletFrame::setClientModel(ClientModel *clientModel) void WalletFrame::setClientModel(ClientModel *clientModel)
{ {
this->clientModel = clientModel; if (clientModel)
walletStack->setClientModel(clientModel); walletStack->setClientModel(clientModel);
} }
@ -43,8 +41,7 @@ bool WalletFrame::addWallet(const QString& name, WalletModel *walletModel)
bool WalletFrame::setCurrentWallet(const QString& name) bool WalletFrame::setCurrentWallet(const QString& name)
{ {
// TODO: Check if valid name // TODO: Check if valid name
walletStack->setCurrentWallet(name); return walletStack->setCurrentWallet(name);
return true;
} }
void WalletFrame::removeAllWallets() void WalletFrame::removeAllWallets()

View file

@ -35,8 +35,6 @@ public:
void showOutOfSyncWarning(bool fShow); void showOutOfSyncWarning(bool fShow);
private: private:
BitcoinGUI *gui;
ClientModel *clientModel;
WalletStack *walletStack; WalletStack *walletStack;
public slots: public slots:

View file

@ -13,6 +13,7 @@
WalletStack::WalletStack(QWidget *parent) : WalletStack::WalletStack(QWidget *parent) :
QStackedWidget(parent), QStackedWidget(parent),
gui(0),
clientModel(0), clientModel(0),
bOutOfSync(true) bOutOfSync(true)
{ {
@ -25,7 +26,7 @@ WalletStack::~WalletStack()
bool WalletStack::addWallet(const QString& name, WalletModel *walletModel) bool WalletStack::addWallet(const QString& name, WalletModel *walletModel)
{ {
if (!gui || !clientModel || mapWalletViews.count(name) > 0) if (!gui || !clientModel || !walletModel || mapWalletViews.count(name) > 0)
return false; return false;
WalletView *walletView = new WalletView(this, gui); WalletView *walletView = new WalletView(this, gui);
@ -35,12 +36,18 @@ bool WalletStack::addWallet(const QString& name, WalletModel *walletModel)
walletView->showOutOfSyncWarning(bOutOfSync); walletView->showOutOfSyncWarning(bOutOfSync);
addWidget(walletView); addWidget(walletView);
mapWalletViews[name] = walletView; mapWalletViews[name] = walletView;
// Ensure a walletView is able to show the main window
connect(walletView, SIGNAL(showNormalIfMinimized()), gui, SLOT(showNormalIfMinimized()));
return true; return true;
} }
bool WalletStack::removeWallet(const QString& name) bool WalletStack::removeWallet(const QString& name)
{ {
if (mapWalletViews.count(name) == 0) return false; if (mapWalletViews.count(name) == 0)
return false;
WalletView *walletView = mapWalletViews.take(name); WalletView *walletView = mapWalletViews.take(name);
removeWidget(walletView); removeWidget(walletView);
return true; return true;
@ -57,7 +64,8 @@ void WalletStack::removeAllWallets()
bool WalletStack::handlePaymentRequest(const SendCoinsRecipient &recipient) bool WalletStack::handlePaymentRequest(const SendCoinsRecipient &recipient)
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (!walletView) return false; if (!walletView)
return false;
return walletView->handlePaymentRequest(recipient); return walletView->handlePaymentRequest(recipient);
} }
@ -108,49 +116,59 @@ void WalletStack::gotoSendCoinsPage(QString addr)
void WalletStack::gotoSignMessageTab(QString addr) void WalletStack::gotoSignMessageTab(QString addr)
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->gotoSignMessageTab(addr); if (walletView)
walletView->gotoSignMessageTab(addr);
} }
void WalletStack::gotoVerifyMessageTab(QString addr) void WalletStack::gotoVerifyMessageTab(QString addr)
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->gotoVerifyMessageTab(addr); if (walletView)
walletView->gotoVerifyMessageTab(addr);
} }
void WalletStack::encryptWallet(bool status) void WalletStack::encryptWallet(bool status)
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->encryptWallet(status); if (walletView)
walletView->encryptWallet(status);
} }
void WalletStack::backupWallet() void WalletStack::backupWallet()
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->backupWallet(); if (walletView)
walletView->backupWallet();
} }
void WalletStack::changePassphrase() void WalletStack::changePassphrase()
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->changePassphrase(); if (walletView)
walletView->changePassphrase();
} }
void WalletStack::unlockWallet() void WalletStack::unlockWallet()
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->unlockWallet(); if (walletView)
walletView->unlockWallet();
} }
void WalletStack::setEncryptionStatus() void WalletStack::setEncryptionStatus()
{ {
WalletView *walletView = (WalletView*)currentWidget(); WalletView *walletView = (WalletView*)currentWidget();
if (walletView) walletView->setEncryptionStatus(); if (walletView)
walletView->setEncryptionStatus();
} }
void WalletStack::setCurrentWallet(const QString& name) bool WalletStack::setCurrentWallet(const QString& name)
{ {
if (mapWalletViews.count(name) == 0) return; if (mapWalletViews.count(name) == 0)
return false;
WalletView *walletView = mapWalletViews.value(name); WalletView *walletView = mapWalletViews.value(name);
setCurrentWidget(walletView); setCurrentWidget(walletView);
walletView->setEncryptionStatus(); walletView->setEncryptionStatus();
return true;
} }

View file

@ -67,7 +67,7 @@ private:
bool bOutOfSync; bool bOutOfSync;
public slots: public slots:
void setCurrentWallet(const QString& name); bool setCurrentWallet(const QString& name);
/** Switch to overview (home) page */ /** Switch to overview (home) page */
void gotoOverviewPage(); void gotoOverviewPage();

View file

@ -137,7 +137,7 @@ void WalletView::setWalletModel(WalletModel *walletModel)
void WalletView::incomingTransaction(const QModelIndex& parent, int start, int /*end*/) void WalletView::incomingTransaction(const QModelIndex& parent, int start, int /*end*/)
{ {
// Prevent balloon-spam when initial block download is in progress // Prevent balloon-spam when initial block download is in progress
if(!walletModel || !clientModel || clientModel->inInitialBlockDownload()) if (!walletModel || !clientModel || clientModel->inInitialBlockDownload())
return; return;
TransactionTableModel *ttm = walletModel->getTransactionTableModel(); TransactionTableModel *ttm = walletModel->getTransactionTableModel();
@ -207,6 +207,7 @@ bool WalletView::handlePaymentRequest(const SendCoinsRecipient& recipient)
if (sendCoinsPage->handlePaymentRequest(recipient)) if (sendCoinsPage->handlePaymentRequest(recipient))
{ {
gotoSendCoinsPage(); gotoSendCoinsPage();
emit showNormalIfMinimized();
return true; return true;
} }
else else

View file

@ -100,6 +100,10 @@ public slots:
void unlockWallet(); void unlockWallet();
void setEncryptionStatus(); void setEncryptionStatus();
signals:
/** Signal that we want to show the main window */
void showNormalIfMinimized();
}; };
#endif // WALLETVIEW_H #endif // WALLETVIEW_H