Merge #8774: Qt refactors to better abstract wallet access
178cd88
Qt/splash: Specifically keep track of which wallet(s) we are connected to for later disconnecting (Luke Dashjr)1880aeb
Qt: Get the private key for signing messages via WalletModel (Luke Dashjr)
This commit is contained in:
commit
3e942a7060
5 changed files with 19 additions and 6 deletions
|
@ -142,7 +142,7 @@ void SignVerifyMessageDialog::on_signMessageButton_SM_clicked()
|
||||||
}
|
}
|
||||||
|
|
||||||
CKey key;
|
CKey key;
|
||||||
if (!pwalletMain->GetKey(keyID, key))
|
if (!model->getPrivKey(keyID, key))
|
||||||
{
|
{
|
||||||
ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }");
|
ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }");
|
||||||
ui->statusLabel_SM->setText(tr("Private key for the entered address is not available."));
|
ui->statusLabel_SM->setText(tr("Private key for the entered address is not available."));
|
||||||
|
|
|
@ -164,9 +164,10 @@ static void ShowProgress(SplashScreen *splash, const std::string &title, int nPr
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
static void ConnectWallet(SplashScreen *splash, CWallet* wallet)
|
void SplashScreen::ConnectWallet(CWallet* wallet)
|
||||||
{
|
{
|
||||||
wallet->ShowProgress.connect(boost::bind(ShowProgress, splash, _1, _2));
|
wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2));
|
||||||
|
connectedWallets.push_back(wallet);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -176,7 +177,7 @@ void SplashScreen::subscribeToCoreSignals()
|
||||||
uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1));
|
uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1));
|
||||||
uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2));
|
uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2));
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
uiInterface.LoadWallet.connect(boost::bind(ConnectWallet, this, _1));
|
uiInterface.LoadWallet.connect(boost::bind(&SplashScreen::ConnectWallet, this, _1));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,8 +187,9 @@ void SplashScreen::unsubscribeFromCoreSignals()
|
||||||
uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, _1));
|
uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, _1));
|
||||||
uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2));
|
uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2));
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
if(pwalletMain)
|
Q_FOREACH(CWallet* const & pwallet, connectedWallets) {
|
||||||
pwalletMain->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2));
|
pwallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include <QSplashScreen>
|
#include <QSplashScreen>
|
||||||
|
|
||||||
|
class CWallet;
|
||||||
class NetworkStyle;
|
class NetworkStyle;
|
||||||
|
|
||||||
/** Class for the splashscreen with information of the running client.
|
/** Class for the splashscreen with information of the running client.
|
||||||
|
@ -39,11 +40,15 @@ private:
|
||||||
void subscribeToCoreSignals();
|
void subscribeToCoreSignals();
|
||||||
/** Disconnect core signals to splash screen */
|
/** Disconnect core signals to splash screen */
|
||||||
void unsubscribeFromCoreSignals();
|
void unsubscribeFromCoreSignals();
|
||||||
|
/** Connect wallet signals to splash screen */
|
||||||
|
void ConnectWallet(CWallet*);
|
||||||
|
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
QString curMessage;
|
QString curMessage;
|
||||||
QColor curColor;
|
QColor curColor;
|
||||||
int curAlignment;
|
int curAlignment;
|
||||||
|
|
||||||
|
QList<CWallet*> connectedWallets;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BITCOIN_QT_SPLASHSCREEN_H
|
#endif // BITCOIN_QT_SPLASHSCREEN_H
|
||||||
|
|
|
@ -563,6 +563,11 @@ bool WalletModel::havePrivKey(const CKeyID &address) const
|
||||||
return wallet->HaveKey(address);
|
return wallet->HaveKey(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool WalletModel::getPrivKey(const CKeyID &address, CKey& vchPrivKeyOut) const
|
||||||
|
{
|
||||||
|
return wallet->GetKey(address, vchPrivKeyOut);
|
||||||
|
}
|
||||||
|
|
||||||
// returns a list of COutputs from COutPoints
|
// returns a list of COutputs from COutPoints
|
||||||
void WalletModel::getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs)
|
void WalletModel::getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -187,6 +187,7 @@ public:
|
||||||
|
|
||||||
bool getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const;
|
bool getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const;
|
||||||
bool havePrivKey(const CKeyID &address) const;
|
bool havePrivKey(const CKeyID &address) const;
|
||||||
|
bool getPrivKey(const CKeyID &address, CKey& vchPrivKeyOut) const;
|
||||||
void getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs);
|
void getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs);
|
||||||
bool isSpent(const COutPoint& outpoint) const;
|
bool isSpent(const COutPoint& outpoint) const;
|
||||||
void listCoins(std::map<QString, std::vector<COutput> >& mapCoins) const;
|
void listCoins(std::map<QString, std::vector<COutput> >& mapCoins) const;
|
||||||
|
|
Loading…
Add table
Reference in a new issue