qt: Hide non PKHash-Addresses in signing address book

This commit is contained in:
Emil Engler 2020-01-13 19:50:44 +01:00
parent 2ed74a43a0
commit c4ea501e96
No known key found for this signature in database
GPG key ID: 2F6D4145C55FC7C7
6 changed files with 16 additions and 5 deletions

View file

@ -106,7 +106,7 @@ AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode,
ui->newAddress->setVisible(true); ui->newAddress->setVisible(true);
break; break;
case ReceivingTab: case ReceivingTab:
ui->labelExplanation->setText(tr("These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.")); ui->labelExplanation->setText(tr("These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.\nSigning is only possible with addresses of the type 'legacy'."));
ui->deleteAddress->setVisible(false); ui->deleteAddress->setVisible(false);
ui->newAddress->setVisible(false); ui->newAddress->setVisible(false);
break; break;

View file

@ -11,6 +11,7 @@
#include <wallet/wallet.h> #include <wallet/wallet.h>
#include <algorithm> #include <algorithm>
#include <typeinfo>
#include <QFont> #include <QFont>
#include <QDebug> #include <QDebug>
@ -75,12 +76,14 @@ public:
explicit AddressTablePriv(AddressTableModel *_parent): explicit AddressTablePriv(AddressTableModel *_parent):
parent(_parent) {} parent(_parent) {}
void refreshAddressTable(interfaces::Wallet& wallet) void refreshAddressTable(interfaces::Wallet& wallet, bool pk_hash_only = false)
{ {
cachedAddressTable.clear(); cachedAddressTable.clear();
{ {
for (const auto& address : wallet.getAddresses()) for (const auto& address : wallet.getAddresses())
{ {
if (pk_hash_only && address.dest.type() != typeid(PKHash))
continue;
AddressTableEntry::Type addressType = translateTransactionType( AddressTableEntry::Type addressType = translateTransactionType(
QString::fromStdString(address.purpose), address.is_mine); QString::fromStdString(address.purpose), address.is_mine);
cachedAddressTable.append(AddressTableEntry(addressType, cachedAddressTable.append(AddressTableEntry(addressType,
@ -159,12 +162,12 @@ public:
} }
}; };
AddressTableModel::AddressTableModel(WalletModel *parent) : AddressTableModel::AddressTableModel(WalletModel *parent, bool pk_hash_only) :
QAbstractTableModel(parent), walletModel(parent) QAbstractTableModel(parent), walletModel(parent)
{ {
columns << tr("Label") << tr("Address"); columns << tr("Label") << tr("Address");
priv = new AddressTablePriv(this); priv = new AddressTablePriv(this);
priv->refreshAddressTable(parent->wallet()); priv->refreshAddressTable(parent->wallet(), pk_hash_only);
} }
AddressTableModel::~AddressTableModel() AddressTableModel::~AddressTableModel()

View file

@ -25,7 +25,7 @@ class AddressTableModel : public QAbstractTableModel
Q_OBJECT Q_OBJECT
public: public:
explicit AddressTableModel(WalletModel *parent = nullptr); explicit AddressTableModel(WalletModel *parent = nullptr, bool pk_hash_only = false);
~AddressTableModel(); ~AddressTableModel();
enum ColumnIndex { enum ColumnIndex {

View file

@ -89,6 +89,7 @@ void SignVerifyMessageDialog::on_addressBookButton_SM_clicked()
{ {
if (model && model->getAddressTableModel()) if (model && model->getAddressTableModel())
{ {
model->refresh(/* pk_hash_only */ true);
AddressBookPage dlg(platformStyle, AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this); AddressBookPage dlg(platformStyle, AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this);
dlg.setModel(model->getAddressTableModel()); dlg.setModel(model->getAddressTableModel());
if (dlg.exec()) if (dlg.exec())

View file

@ -563,3 +563,8 @@ bool WalletModel::isMultiwallet()
{ {
return m_node.getWallets().size() > 1; return m_node.getWallets().size() > 1;
} }
void WalletModel::refresh(bool pk_hash_only)
{
addressTableModel = new AddressTableModel(this, pk_hash_only);
}

View file

@ -152,6 +152,8 @@ public:
bool isMultiwallet(); bool isMultiwallet();
AddressTableModel* getAddressTableModel() const { return addressTableModel; } AddressTableModel* getAddressTableModel() const { return addressTableModel; }
void refresh(bool pk_hash_only = false);
private: private:
std::unique_ptr<interfaces::Wallet> m_wallet; std::unique_ptr<interfaces::Wallet> m_wallet;
std::unique_ptr<interfaces::Handler> m_handler_unload; std::unique_ptr<interfaces::Handler> m_handler_unload;