From 9b7849c5be87002f63ed055d86ad96ea5a2eb525 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Wed, 21 Oct 2020 16:53:17 +0200 Subject: [PATCH] Coins: numerical sort for amount column --- src/coinswidget.cpp | 15 ++++++++------- src/model/CoinsModel.cpp | 9 +++++++-- src/model/CoinsProxyModel.cpp | 1 + 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/coinswidget.cpp b/src/coinswidget.cpp index 21b5719..a9a81c9 100644 --- a/src/coinswidget.cpp +++ b/src/coinswidget.cpp @@ -42,14 +42,14 @@ CoinsWidget::CoinsWidget(QWidget *parent) // context menu ui->coins->setContextMenuPolicy(Qt::CustomContextMenu); - m_thawOutputAction = new QAction("Thaw output"); - m_freezeOutputAction = new QAction("Freeze output"); + m_thawOutputAction = new QAction("Thaw output", this); + m_freezeOutputAction = new QAction("Freeze output", this); - m_freezeAllSelectedAction = new QAction("Freeze selected"); - m_thawAllSelectedAction = new QAction("Thaw selected"); + m_freezeAllSelectedAction = new QAction("Freeze selected", this); + m_thawAllSelectedAction = new QAction("Thaw selected", this); - m_viewOutputAction = new QAction(QIcon(":/assets/images/info.png"), "Details"); - m_sweepOutputAction = new QAction("Sweep output"); + m_viewOutputAction = new QAction(QIcon(":/assets/images/info.png"), "Details", this); + m_sweepOutputAction = new QAction("Sweep output", this); connect(m_freezeOutputAction, &QAction::triggered, this, &CoinsWidget::freezeOutput); connect(m_thawOutputAction, &QAction::triggered, this, &CoinsWidget::thawOutput); connect(m_viewOutputAction, &QAction::triggered, this, &CoinsWidget::viewOutput); @@ -65,7 +65,7 @@ CoinsWidget::CoinsWidget(QWidget *parent) void CoinsWidget::setModel(CoinsModel * model, Coins * coins) { m_coins = coins; m_model = model; - m_proxyModel = new CoinsProxyModel; + m_proxyModel = new CoinsProxyModel(this); m_proxyModel->setSourceModel(m_model); ui->coins->setModel(m_proxyModel); ui->coins->setColumnHidden(CoinsModel::Spent, true); @@ -202,6 +202,7 @@ void CoinsWidget::onSweepOutput() { qCritical() << "key image: " << keyImage; emit sweepOutput(keyImage, dialog->address(), dialog->churn(), dialog->outputs()); + dialog->deleteLater(); } void CoinsWidget::copy(copyField field) { diff --git a/src/model/CoinsModel.cpp b/src/model/CoinsModel.cpp index 04b6046..dba92e2 100644 --- a/src/model/CoinsModel.cpp +++ b/src/model/CoinsModel.cpp @@ -6,6 +6,7 @@ #include "Coins.h" #include #include "ModelUtils.h" +#include "globals.h" #include #include @@ -190,10 +191,14 @@ QVariant CoinsModel::parseTransactionInfo(const CoinsInfo &cInfo, int column, in case SpentHeight: return cInfo.spentHeight(); case Amount: - return QString::number(cInfo.amount() / 1e12, 'f', 12); + { + if (role == Qt::UserRole) { + return cInfo.amount() / globals::cdiv; + } + return QString::number(cInfo.amount() / globals::cdiv, 'f', 12); + } case Frozen: return cInfo.frozen(); - default: { qCritical() << "Unimplemented role"; diff --git a/src/model/CoinsProxyModel.cpp b/src/model/CoinsProxyModel.cpp index b9ffd8f..5bf65b9 100644 --- a/src/model/CoinsProxyModel.cpp +++ b/src/model/CoinsProxyModel.cpp @@ -7,6 +7,7 @@ CoinsProxyModel::CoinsProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { + setSortRole(Qt::UserRole); } bool CoinsProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const