Dash Core  0.12.2.1
P2P Digital Currency
walletframe.cpp
Go to the documentation of this file.
1 // Copyright (c) 2011-2015 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include "walletframe.h"
6 
7 #include "bitcoingui.h"
8 #include "walletview.h"
9 
10 #include <cstdio>
11 
12 #include <QHBoxLayout>
13 #include <QLabel>
14 
15 WalletFrame::WalletFrame(const PlatformStyle *platformStyle, BitcoinGUI *_gui) :
16  QFrame(_gui),
17  gui(_gui),
18  platformStyle(platformStyle)
19 {
20  // Leave HBox hook for adding a list view later
21  QHBoxLayout *walletFrameLayout = new QHBoxLayout(this);
22  setContentsMargins(0,0,0,0);
23  walletStack = new QStackedWidget(this);
24  walletFrameLayout->setContentsMargins(0,0,0,0);
25  walletFrameLayout->addWidget(walletStack);
26 
27  QLabel *noWallet = new QLabel(tr("No wallet has been loaded."));
28  noWallet->setAlignment(Qt::AlignCenter);
29  walletStack->addWidget(noWallet);
30 }
31 
33 {
34 }
35 
37 {
38  this->clientModel = clientModel;
39 }
40 
41 bool WalletFrame::addWallet(const QString& name, WalletModel *walletModel)
42 {
43  if (!gui || !clientModel || !walletModel || mapWalletViews.count(name) > 0)
44  return false;
45 
46  WalletView *walletView = new WalletView(platformStyle, this);
47  walletView->setBitcoinGUI(gui);
48  walletView->setClientModel(clientModel);
49  walletView->setWalletModel(walletModel);
50  walletView->showOutOfSyncWarning(bOutOfSync);
51 
52  /* TODO we should goto the currently selected page once dynamically adding wallets is supported */
53  walletView->gotoOverviewPage();
54  walletStack->addWidget(walletView);
55  mapWalletViews[name] = walletView;
56 
57  // Ensure a walletView is able to show the main window
58  connect(walletView, SIGNAL(showNormalIfMinimized()), gui, SLOT(showNormalIfMinimized()));
59 
60  connect(walletView, SIGNAL(outOfSyncWarningClicked()), this, SLOT(outOfSyncWarningClicked()));
61 
62  return true;
63 }
64 
65 bool WalletFrame::setCurrentWallet(const QString& name)
66 {
67  if (mapWalletViews.count(name) == 0)
68  return false;
69 
70  WalletView *walletView = mapWalletViews.value(name);
71  walletStack->setCurrentWidget(walletView);
72  walletView->updateEncryptionStatus();
73  return true;
74 }
75 
76 bool WalletFrame::removeWallet(const QString &name)
77 {
78  if (mapWalletViews.count(name) == 0)
79  return false;
80 
81  WalletView *walletView = mapWalletViews.take(name);
82  walletStack->removeWidget(walletView);
83  return true;
84 }
85 
87 {
88  QMap<QString, WalletView*>::const_iterator i;
89  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
90  walletStack->removeWidget(i.value());
91  mapWalletViews.clear();
92 }
93 
95 {
96  WalletView *walletView = currentWalletView();
97  if (!walletView)
98  return false;
99 
100  return walletView->handlePaymentRequest(recipient);
101 }
102 
104 {
105  bOutOfSync = fShow;
106  QMap<QString, WalletView*>::const_iterator i;
107  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
108  i.value()->showOutOfSyncWarning(fShow);
109 }
110 
112 {
113  QMap<QString, WalletView*>::const_iterator i;
114  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
115  i.value()->gotoOverviewPage();
116 }
117 
119 {
120  QMap<QString, WalletView*>::const_iterator i;
121  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
122  i.value()->gotoHistoryPage();
123 }
124 
126 {
127  QMap<QString, WalletView*>::const_iterator i;
128  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
129  i.value()->gotoMasternodePage();
130 }
131 
133 {
134  QMap<QString, WalletView*>::const_iterator i;
135  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
136  i.value()->gotoReceiveCoinsPage();
137 }
138 
140 {
141  QMap<QString, WalletView*>::const_iterator i;
142  for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i)
143  i.value()->gotoSendCoinsPage(addr);
144 }
145 
147 {
148  WalletView *walletView = currentWalletView();
149  if (walletView)
150  walletView->gotoSignMessageTab(addr);
151 }
152 
154 {
155  WalletView *walletView = currentWalletView();
156  if (walletView)
157  walletView->gotoVerifyMessageTab(addr);
158 }
159 
160 void WalletFrame::encryptWallet(bool status)
161 {
162  WalletView *walletView = currentWalletView();
163  if (walletView)
164  walletView->encryptWallet(status);
165 }
166 
168 {
169  WalletView *walletView = currentWalletView();
170  if (walletView)
171  walletView->backupWallet();
172 }
173 
175 {
176  WalletView *walletView = currentWalletView();
177  if (walletView)
178  walletView->changePassphrase();
179 }
180 
182 {
183  WalletView *walletView = currentWalletView();
184  if (walletView)
185  walletView->unlockWallet();
186 }
187 
189 {
190  WalletView *walletView = currentWalletView();
191  if (walletView)
192  walletView->lockWallet();
193 }
194 
196 {
197  WalletView *walletView = currentWalletView();
198  if (walletView)
199  walletView->usedSendingAddresses();
200 }
201 
203 {
204  WalletView *walletView = currentWalletView();
205  if (walletView)
206  walletView->usedReceivingAddresses();
207 }
208 
210 {
211  return qobject_cast<WalletView*>(walletStack->currentWidget());
212 }
213 
215 {
216  Q_EMIT requestedSyncWarningInfo();
217 }
void encryptWallet(bool status)
Definition: walletview.cpp:277
void gotoMasternodePage()
void encryptWallet(bool status)
void usedReceivingAddresses()
Definition: walletview.cpp:346
QMap< QString, WalletView * > mapWalletViews
Definition: walletframe.h:49
bool setCurrentWallet(const QString &name)
Definition: walletframe.cpp:65
void gotoOverviewPage()
void setClientModel(ClientModel *clientModel)
Definition: walletview.cpp:135
WalletView * currentWalletView()
void setClientModel(ClientModel *clientModel)
Definition: walletframe.cpp:36
void backupWallet()
Definition: walletview.cpp:288
bool removeWallet(const QString &name)
Definition: walletframe.cpp:76
void gotoSignMessageTab(QString addr="")
Definition: walletview.cpp:238
void setBitcoinGUI(BitcoinGUI *gui)
Definition: walletview.cpp:114
void usedReceivingAddresses()
void updateEncryptionStatus()
Definition: walletview.cpp:272
bool handlePaymentRequest(const SendCoinsRecipient &recipient)
Definition: walletframe.cpp:94
void gotoOverviewPage()
Definition: walletview.cpp:207
void gotoVerifyMessageTab(QString addr="")
void usedSendingAddresses()
void usedSendingAddresses()
Definition: walletview.cpp:336
void removeAllWallets()
Definition: walletframe.cpp:86
bool addWallet(const QString &name, WalletModel *walletModel)
Definition: walletframe.cpp:41
BitcoinGUI * gui
Definition: walletframe.h:47
const char * name
Definition: rest.cpp:37
void lockWallet()
void unlockWallet(bool fAnonymizeOnly=false)
Definition: walletview.cpp:314
void unlockWallet()
void gotoSendCoinsPage(QString addr="")
void gotoVerifyMessageTab(QString addr="")
Definition: walletview.cpp:250
ClientModel * clientModel
Definition: walletframe.h:48
void requestedSyncWarningInfo()
void showOutOfSyncWarning(bool fShow)
Definition: walletview.cpp:267
void gotoSignMessageTab(QString addr="")
void showOutOfSyncWarning(bool fShow)
WalletFrame(const PlatformStyle *platformStyle, BitcoinGUI *_gui=0)
Definition: walletframe.cpp:15
void changePassphrase()
Definition: walletview.cpp:307
QStackedWidget * walletStack
Definition: walletframe.h:46
void lockWallet()
Definition: walletview.cpp:328
bool handlePaymentRequest(const SendCoinsRecipient &recipient)
Definition: walletview.cpp:262
void gotoReceiveCoinsPage()
void setWalletModel(WalletModel *walletModel)
Definition: walletview.cpp:147
void changePassphrase()
void backupWallet()
bool bOutOfSync
Definition: walletframe.h:51
void gotoHistoryPage()
const PlatformStyle * platformStyle
Definition: walletframe.h:53
void outOfSyncWarningClicked()