Coins: add key image icons for view only wallets

This commit is contained in:
tobtoht 2020-10-14 04:21:38 +02:00
parent ffa8c3e5bf
commit ebde5a1cb7
7 changed files with 42 additions and 1 deletions

View file

@ -33,6 +33,7 @@
<file>assets/images/expired.png</file> <file>assets/images/expired.png</file>
<file>assets/images/expired_icon.png</file> <file>assets/images/expired_icon.png</file>
<file>assets/images/eye1.png</file> <file>assets/images/eye1.png</file>
<file>assets/images/eye_blind.png</file>
<file>assets/images/feather.png</file> <file>assets/images/feather.png</file>
<file>assets/images/file.png</file> <file>assets/images/file.png</file>
<file>assets/images/ghost.png</file> <file>assets/images/ghost.png</file>
@ -44,6 +45,7 @@
<file>assets/images/ledger_unpaired.png</file> <file>assets/images/ledger_unpaired.png</file>
<file>assets/images/lightning.png</file> <file>assets/images/lightning.png</file>
<file>assets/images/lock.png</file> <file>assets/images/lock.png</file>
<file>assets/images/lock_icon.png</file>
<file>assets/images/lock.svg</file> <file>assets/images/lock.svg</file>
<file>assets/images/microphone.png</file> <file>assets/images/microphone.png</file>
<file>assets/images/network.png</file> <file>assets/images/network.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -7,6 +7,7 @@
#include "utils/utils.h" #include "utils/utils.h"
#include "dialog/outputinfodialog.h" #include "dialog/outputinfodialog.h"
#include "dialog/outputsweepdialog.h" #include "dialog/outputsweepdialog.h"
#include "mainwindow.h"
#include <QClipboard> #include <QClipboard>
#include <QDebug> #include <QDebug>
@ -21,6 +22,7 @@ CoinsWidget::CoinsWidget(QWidget *parent)
, m_copyMenu(new QMenu("Copy",this)) , m_copyMenu(new QMenu("Copy",this))
{ {
ui->setupUi(this); ui->setupUi(this);
m_ctx = MainWindow::getContext();
// header context menu // header context menu
ui->coins->header()->setContextMenuPolicy(Qt::CustomContextMenu); ui->coins->header()->setContextMenuPolicy(Qt::CustomContextMenu);
@ -70,6 +72,12 @@ void CoinsWidget::setModel(CoinsModel * model, Coins * coins) {
ui->coins->setColumnHidden(CoinsModel::SpentHeight, true); ui->coins->setColumnHidden(CoinsModel::SpentHeight, true);
ui->coins->setColumnHidden(CoinsModel::Frozen, true); ui->coins->setColumnHidden(CoinsModel::Frozen, true);
if (!m_ctx->currentWallet->viewOnly()) {
ui->coins->setColumnHidden(CoinsModel::KeyImageKnown, true);
} else {
ui->coins->setColumnHidden(CoinsModel::KeyImageKnown, false);
}
ui->coins->header()->setSectionResizeMode(QHeaderView::ResizeToContents); ui->coins->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->coins->header()->setSectionResizeMode(CoinsModel::AddressLabel, QHeaderView::Stretch); ui->coins->header()->setSectionResizeMode(CoinsModel::AddressLabel, QHeaderView::Stretch);
ui->coins->header()->setSortIndicator(CoinsModel::BlockHeight, Qt::DescendingOrder); ui->coins->header()->setSortIndicator(CoinsModel::BlockHeight, Qt::DescendingOrder);

View file

@ -67,6 +67,7 @@ private:
Coins *m_coins; Coins *m_coins;
CoinsModel * m_model; CoinsModel * m_model;
CoinsProxyModel * m_proxyModel; CoinsProxyModel * m_proxyModel;
AppContext *m_ctx;
void showContextMenu(const QPoint & point); void showContextMenu(const QPoint & point);
void copy(copyField field); void copy(copyField field);

View file

@ -19,6 +19,9 @@ CoinsModel::CoinsModel(QObject *parent, Coins *coins)
{ {
connect(m_coins, &Coins::refreshStarted, this, &CoinsModel::startReset); connect(m_coins, &Coins::refreshStarted, this, &CoinsModel::startReset);
connect(m_coins, &Coins::refreshFinished, this, &CoinsModel::endReset); connect(m_coins, &Coins::refreshFinished, this, &CoinsModel::endReset);
m_eye = QIcon(":/assets/images/eye1.png");
m_eyeBlind = QIcon(":/assets/images/eye_blind.png");
} }
void CoinsModel::startReset(){ void CoinsModel::startReset(){
@ -82,6 +85,19 @@ QVariant CoinsModel::data(const QModelIndex &index, int role) const
result = Qt::AlignRight; result = Qt::AlignRight;
} }
} }
else if (role == Qt::DecorationRole) {
switch (index.column()) {
case KeyImageKnown:
{
if (cInfo.keyImageKnown()) {
result = QVariant(m_eye);
}
else {
result = QVariant(m_eyeBlind);
}
}
}
}
else if (role == Qt::FontRole) { else if (role == Qt::FontRole) {
switch(index.column()) { switch(index.column()) {
case PubKey: case PubKey:
@ -91,6 +107,16 @@ QVariant CoinsModel::data(const QModelIndex &index, int role) const
} }
} }
else if (role == Qt::ToolTipRole) { else if (role == Qt::ToolTipRole) {
switch(index.column()) {
case KeyImageKnown:
{
if (cInfo.keyImageKnown()) {
result = "Key image known";
} else {
result = "Key image unknown. Outgoing transactions that include this output will not be detected.";
}
}
}
if (cInfo.frozen()) { if (cInfo.frozen()) {
result = "Output is frozen."; result = "Output is frozen.";
} }

View file

@ -9,6 +9,7 @@
#include <QAbstractTableModel> #include <QAbstractTableModel>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
#include <QDebug> #include <QDebug>
#include <QIcon>
class Coins; class Coins;
class CoinsInfo; class CoinsInfo;
@ -20,7 +21,8 @@ Q_OBJECT
public: public:
enum ModelColumn enum ModelColumn
{ {
PubKey = 0, KeyImageKnown = 0,
PubKey,
OutputPoint, OutputPoint,
Address, Address,
AddressLabel, AddressLabel,
@ -49,6 +51,8 @@ private:
QVariant parseTransactionInfo(const CoinsInfo &cInfo, int column, int role) const; QVariant parseTransactionInfo(const CoinsInfo &cInfo, int column, int role) const;
Coins *m_coins; Coins *m_coins;
QIcon m_eye;
QIcon m_eyeBlind;
}; };
#endif //FEATHER_COINSMODEL_H #endif //FEATHER_COINSMODEL_H