m_headerMenu = new QMenu(this);
m_showFullAddressesAction = m_headerMenu->addAction("Show full addresses", this, &ReceiveWidget::setShowFullAddresses);
m_showFullAddressesAction->setCheckable(true);
+ m_showChangeAddressesAction = m_headerMenu->addAction("Show change addresses", this, &ReceiveWidget::setShowChangeAddresses);
+ m_showChangeAddressesAction->setCheckable(true);
connect(ui->addresses->header(), &QHeaderView::customContextMenuRequested, this, &ReceiveWidget::showHeaderMenu);
// context menu
emit showTransactions(address);
}
+void ReceiveWidget::setShowChangeAddresses(bool show) {
+ if (!m_proxyModel) return;
+ m_proxyModel->setShowChangeAddresses(show);
+}
+
void ReceiveWidget::setShowFullAddresses(bool show) {
if (!m_model) return;
m_model->setShowFullAddresses(show);
void editLabel();
void showContextMenu(const QPoint& point);
void setShowFullAddresses(bool show);
+ void setShowChangeAddresses(bool show);
void setShowUsedAddresses(bool show);
void setShowHiddenAddresses(bool show);
void setSearchFilter(const QString &filter);
QMenu *m_headerMenu;
QAction *m_showFullAddressesAction;
QAction *m_showTransactionsAction;
+ QAction *m_showChangeAddressesAction;
SubaddressModel *m_model;
SubaddressProxyModel *m_proxyModel;
return address;
}
case Label:
- return index.row() == 0 ? tr("Primary address") : QString::fromStdString(subaddress.getLabel());
+ {
+ if (m_currentSubaddressAccount == 0 && index.row() == 0) {
+ return "Primary address";
+ }
+ else if (index.row() == 0) {
+ return "Change";
+ }
+ return QString::fromStdString(subaddress.getLabel());
+ }
case isUsed:
return subaddress.isUsed();
default:
#include "SubaddressProxyModel.h"
-SubaddressProxyModel::SubaddressProxyModel(QObject *parent, Subaddress *subaddress, bool hidePrimary)
+SubaddressProxyModel::SubaddressProxyModel(QObject *parent, Subaddress *subaddress, bool showChange)
: QSortFilterProxyModel(parent)
, m_subaddress(subaddress)
, m_searchRegExp("")
, m_searchCaseSensitiveRegExp("")
- , m_hidePrimary(hidePrimary)
+ , m_showChange(showChange)
{
m_searchRegExp.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
}
label = QString::fromStdString(subaddress.getLabel());
});
- // Hide primary address
- if (sourceRow == 0 && m_hidePrimary)
+ // Hide primary/change addresses
+ if (!m_showChange && sourceRow == 0) {
return false;
+ }
if (!m_showHidden && m_hiddenAddresses.contains(address)) {
return false;
{
Q_OBJECT
public:
- explicit SubaddressProxyModel(QObject* parent, Subaddress *subaddress, bool hidePrimary = true);
+ explicit SubaddressProxyModel(QObject* parent, Subaddress *subaddress, bool hidePrimary = false);
bool filterAcceptsRow(int sourceRow,
const QModelIndex &sourceParent) const;
invalidateFilter();
}
+ void setShowChangeAddresses(const bool showChange) {
+ m_showChange = showChange;
+ invalidateFilter();
+ }
+
private:
Subaddress *m_subaddress;
QRegularExpression m_searchCaseSensitiveRegExp;
bool m_showUsed = false;
bool m_showHidden = false;
- bool m_hidePrimary;
+ bool m_showChange = false;
};
#endif //FEATHER_SUBADDRESSPROXYMODEL_H