qt: GUI support for -disablewallet mode
This commit is contained in:
parent
e6b7e3dc79
commit
146ba964e4
5 changed files with 60 additions and 14 deletions
|
@ -313,11 +313,16 @@ int main(int argc, char *argv[])
|
|||
splash.finish(&window);
|
||||
|
||||
ClientModel clientModel(&optionsModel);
|
||||
WalletModel walletModel(pwalletMain, &optionsModel);
|
||||
WalletModel *walletModel = 0;
|
||||
if(pwalletMain)
|
||||
walletModel = new WalletModel(pwalletMain, &optionsModel);
|
||||
|
||||
window.setClientModel(&clientModel);
|
||||
window.addWallet("~Default", &walletModel);
|
||||
window.setCurrentWallet("~Default");
|
||||
if(walletModel)
|
||||
{
|
||||
window.addWallet("~Default", walletModel);
|
||||
window.setCurrentWallet("~Default");
|
||||
}
|
||||
|
||||
// If -min option passed, start window minimized.
|
||||
if(GetBoolArg("-min", false))
|
||||
|
@ -335,8 +340,11 @@ int main(int argc, char *argv[])
|
|||
&window, SLOT(handlePaymentRequest(SendCoinsRecipient)));
|
||||
QObject::connect(&window, SIGNAL(receivedURI(QString)),
|
||||
paymentServer, SLOT(handleURIOrFile(QString)));
|
||||
QObject::connect(&walletModel, SIGNAL(coinsSent(CWallet*,SendCoinsRecipient,QByteArray)),
|
||||
paymentServer, SLOT(fetchPaymentACK(CWallet*,const SendCoinsRecipient&,QByteArray)));
|
||||
if(walletModel)
|
||||
{
|
||||
QObject::connect(walletModel, SIGNAL(coinsSent(CWallet*,SendCoinsRecipient,QByteArray)),
|
||||
paymentServer, SLOT(fetchPaymentACK(CWallet*,const SendCoinsRecipient&,QByteArray)));
|
||||
}
|
||||
QObject::connect(paymentServer, SIGNAL(message(QString,QString,unsigned int)),
|
||||
guiref, SLOT(message(QString,QString,unsigned int)));
|
||||
QTimer::singleShot(100, paymentServer, SLOT(uiReady()));
|
||||
|
@ -347,6 +355,7 @@ int main(int argc, char *argv[])
|
|||
window.setClientModel(0);
|
||||
window.removeAllWallets();
|
||||
guiref = 0;
|
||||
delete walletModel;
|
||||
}
|
||||
// Shutdown the core and its threads, but don't exit Bitcoin-Qt here
|
||||
threadGroup.interrupt_all();
|
||||
|
|
|
@ -163,6 +163,9 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
|||
|
||||
// Install event filter to be able to catch status tip events (QEvent::StatusTip)
|
||||
this->installEventFilter(this);
|
||||
|
||||
// Initially wallet actions should be disabled
|
||||
setWalletActionsEnabled(false);
|
||||
}
|
||||
|
||||
BitcoinGUI::~BitcoinGUI()
|
||||
|
@ -352,6 +355,7 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
|||
|
||||
bool BitcoinGUI::addWallet(const QString& name, WalletModel *walletModel)
|
||||
{
|
||||
setWalletActionsEnabled(true);
|
||||
return walletFrame->addWallet(name, walletModel);
|
||||
}
|
||||
|
||||
|
@ -362,9 +366,26 @@ bool BitcoinGUI::setCurrentWallet(const QString& name)
|
|||
|
||||
void BitcoinGUI::removeAllWallets()
|
||||
{
|
||||
setWalletActionsEnabled(false);
|
||||
walletFrame->removeAllWallets();
|
||||
}
|
||||
|
||||
void BitcoinGUI::setWalletActionsEnabled(bool enabled)
|
||||
{
|
||||
overviewAction->setEnabled(enabled);
|
||||
sendCoinsAction->setEnabled(enabled);
|
||||
receiveCoinsAction->setEnabled(enabled);
|
||||
historyAction->setEnabled(enabled);
|
||||
encryptWalletAction->setEnabled(enabled);
|
||||
backupWalletAction->setEnabled(enabled);
|
||||
changePassphraseAction->setEnabled(enabled);
|
||||
signMessageAction->setEnabled(enabled);
|
||||
verifyMessageAction->setEnabled(enabled);
|
||||
usedSendingAddressesAction->setEnabled(enabled);
|
||||
usedReceivingAddressesAction->setEnabled(enabled);
|
||||
openAction->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void BitcoinGUI::createTrayIcon(bool fIsTestnet)
|
||||
{
|
||||
#ifndef Q_OS_MAC
|
||||
|
|
|
@ -108,6 +108,9 @@ private:
|
|||
/** Create system tray menu (or setup the dock menu) */
|
||||
void createTrayIconMenu();
|
||||
|
||||
/** Enable or disable all wallet-related actions */
|
||||
void setWalletActionsEnabled(bool enabled);
|
||||
|
||||
signals:
|
||||
/** Signal raised when a URI was entered or dragged to the GUI */
|
||||
void receivedURI(const QString &uri);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <cstdio>
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
|
||||
WalletFrame::WalletFrame(BitcoinGUI *_gui) :
|
||||
QFrame(_gui),
|
||||
|
@ -21,6 +22,10 @@ WalletFrame::WalletFrame(BitcoinGUI *_gui) :
|
|||
walletStack = new QStackedWidget(this);
|
||||
walletFrameLayout->setContentsMargins(0,0,0,0);
|
||||
walletFrameLayout->addWidget(walletStack);
|
||||
|
||||
QLabel *noWallet = new QLabel(tr("No wallet has been loaded."));
|
||||
noWallet->setAlignment(Qt::AlignCenter);
|
||||
walletStack->addWidget(noWallet);
|
||||
}
|
||||
|
||||
WalletFrame::~WalletFrame()
|
||||
|
@ -85,7 +90,7 @@ void WalletFrame::removeAllWallets()
|
|||
|
||||
bool WalletFrame::handlePaymentRequest(const SendCoinsRecipient &recipient)
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (!walletView)
|
||||
return false;
|
||||
|
||||
|
@ -130,56 +135,62 @@ void WalletFrame::gotoSendCoinsPage(QString addr)
|
|||
|
||||
void WalletFrame::gotoSignMessageTab(QString addr)
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->gotoSignMessageTab(addr);
|
||||
}
|
||||
|
||||
void WalletFrame::gotoVerifyMessageTab(QString addr)
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->gotoVerifyMessageTab(addr);
|
||||
}
|
||||
|
||||
void WalletFrame::encryptWallet(bool status)
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->encryptWallet(status);
|
||||
}
|
||||
|
||||
void WalletFrame::backupWallet()
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->backupWallet();
|
||||
}
|
||||
|
||||
void WalletFrame::changePassphrase()
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->changePassphrase();
|
||||
}
|
||||
|
||||
void WalletFrame::unlockWallet()
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->unlockWallet();
|
||||
}
|
||||
|
||||
void WalletFrame::usedSendingAddresses()
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->usedSendingAddresses();
|
||||
}
|
||||
|
||||
void WalletFrame::usedReceivingAddresses()
|
||||
{
|
||||
WalletView *walletView = (WalletView*)walletStack->currentWidget();
|
||||
WalletView *walletView = currentWalletView();
|
||||
if (walletView)
|
||||
walletView->usedReceivingAddresses();
|
||||
}
|
||||
|
||||
WalletView *WalletFrame::currentWalletView()
|
||||
{
|
||||
return qobject_cast<WalletView*>(walletStack->currentWidget());
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,8 @@ private:
|
|||
|
||||
bool bOutOfSync;
|
||||
|
||||
WalletView *currentWalletView();
|
||||
|
||||
public slots:
|
||||
/** Switch to overview (home) page */
|
||||
void gotoOverviewPage();
|
||||
|
|
Loading…
Reference in a new issue