aboutsummaryrefslogtreecommitdiff
path: root/src/qt/walletframe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt/walletframe.cpp')
-rw-r--r--src/qt/walletframe.cpp205
1 files changed, 205 insertions, 0 deletions
diff --git a/src/qt/walletframe.cpp b/src/qt/walletframe.cpp
new file mode 100644
index 0000000000..573b3f1412
--- /dev/null
+++ b/src/qt/walletframe.cpp
@@ -0,0 +1,205 @@
+// Copyright (c) 2011-2016 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#include <qt/walletframe.h>
+
+#include <qt/bitcoingui.h>
+#include <qt/walletview.h>
+
+#include <cassert>
+#include <cstdio>
+
+#include <QHBoxLayout>
+#include <QLabel>
+
+WalletFrame::WalletFrame(const PlatformStyle *_platformStyle, BitcoinGUI *_gui) :
+ QFrame(_gui),
+ gui(_gui),
+ platformStyle(_platformStyle)
+{
+ // Leave HBox hook for adding a list view later
+ QHBoxLayout *walletFrameLayout = new QHBoxLayout(this);
+ setContentsMargins(0,0,0,0);
+ 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()
+{
+}
+
+void WalletFrame::setClientModel(ClientModel *_clientModel)
+{
+ this->clientModel = _clientModel;
+}
+
+bool WalletFrame::addWallet(const QString& name, WalletModel *walletModel)
+{
+ if (!gui || !clientModel || !walletModel || mapWalletViews.count(name) > 0)
+ return false;
+
+ WalletView *walletView = new WalletView(platformStyle, this);
+ walletView->setBitcoinGUI(gui);
+ walletView->setClientModel(clientModel);
+ walletView->setWalletModel(walletModel);
+ walletView->showOutOfSyncWarning(bOutOfSync);
+
+ /* TODO we should goto the currently selected page once dynamically adding wallets is supported */
+ walletView->gotoOverviewPage();
+ walletStack->addWidget(walletView);
+ mapWalletViews[name] = walletView;
+
+ // Ensure a walletView is able to show the main window
+ connect(walletView, SIGNAL(showNormalIfMinimized()), gui, SLOT(showNormalIfMinimized()));
+
+ connect(walletView, SIGNAL(outOfSyncWarningClicked()), this, SLOT(outOfSyncWarningClicked()));
+
+ return true;
+}
+
+bool WalletFrame::setCurrentWallet(const QString& name)
+{
+ if (mapWalletViews.count(name) == 0)
+ return false;
+
+ WalletView *walletView = mapWalletViews.value(name);
+ walletStack->setCurrentWidget(walletView);
+ assert(walletView);
+ walletView->updateEncryptionStatus();
+ return true;
+}
+
+bool WalletFrame::removeWallet(const QString &name)
+{
+ if (mapWalletViews.count(name) == 0)
+ return false;
+
+ WalletView *walletView = mapWalletViews.take(name);
+ walletStack->removeWidget(walletView);
+ return true;
+}
+
+void WalletFrame::removeAllWallets()
+{
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ walletStack->removeWidget(i.value());
+ mapWalletViews.clear();
+}
+
+bool WalletFrame::handlePaymentRequest(const SendCoinsRecipient &recipient)
+{
+ WalletView *walletView = currentWalletView();
+ if (!walletView)
+ return false;
+
+ return walletView->handlePaymentRequest(recipient);
+}
+
+void WalletFrame::showOutOfSyncWarning(bool fShow)
+{
+ bOutOfSync = fShow;
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ i.value()->showOutOfSyncWarning(fShow);
+}
+
+void WalletFrame::gotoOverviewPage()
+{
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ i.value()->gotoOverviewPage();
+}
+
+void WalletFrame::gotoHistoryPage()
+{
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ i.value()->gotoHistoryPage();
+}
+
+void WalletFrame::gotoReceiveCoinsPage()
+{
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ i.value()->gotoReceiveCoinsPage();
+}
+
+void WalletFrame::gotoSendCoinsPage(QString addr)
+{
+ QMap<QString, WalletView*>::const_iterator i;
+ for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
+ i.value()->gotoSendCoinsPage(addr);
+}
+
+void WalletFrame::gotoSignMessageTab(QString addr)
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->gotoSignMessageTab(addr);
+}
+
+void WalletFrame::gotoVerifyMessageTab(QString addr)
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->gotoVerifyMessageTab(addr);
+}
+
+void WalletFrame::encryptWallet(bool status)
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->encryptWallet(status);
+}
+
+void WalletFrame::backupWallet()
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->backupWallet();
+}
+
+void WalletFrame::changePassphrase()
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->changePassphrase();
+}
+
+void WalletFrame::unlockWallet()
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->unlockWallet();
+}
+
+void WalletFrame::usedSendingAddresses()
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->usedSendingAddresses();
+}
+
+void WalletFrame::usedReceivingAddresses()
+{
+ WalletView *walletView = currentWalletView();
+ if (walletView)
+ walletView->usedReceivingAddresses();
+}
+
+WalletView *WalletFrame::currentWalletView()
+{
+ return qobject_cast<WalletView*>(walletStack->currentWidget());
+}
+
+void WalletFrame::outOfSyncWarningClicked()
+{
+ Q_EMIT requestedSyncWarningInfo();
+}