From 79ce7e9117cbf57bf09c225748ebddcbf0c48014 Mon Sep 17 00:00:00 2001 From: Cozz Lovan Date: Mon, 3 Mar 2014 04:16:42 +0100 Subject: [PATCH] Fix coin control sorts date as text --- src/qt/coincontroldialog.cpp | 14 ++++++-------- src/qt/coincontroldialog.h | 28 +++++++++++++++++++++++++++- src/qt/forms/coincontroldialog.ui | 7 ++++++- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 2d8fcd7a5..1e5a2efc9 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -125,6 +125,7 @@ CoinControlDialog::CoinControlDialog(QWidget *parent) : ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but dont show it ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but dont show it ui->treeWidget->setColumnHidden(COLUMN_PRIORITY_INT64, true); // store priority int64 in this column, but dont show it + ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but dont show it // default view is sorted by amount desc sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder); @@ -327,7 +328,7 @@ void CoinControlDialog::sortView(int column, Qt::SortOrder order) sortColumn = column; sortOrder = order; ui->treeWidget->sortItems(column, order); - ui->treeWidget->header()->setSortIndicator((sortColumn == COLUMN_AMOUNT_INT64 ? COLUMN_AMOUNT : (sortColumn == COLUMN_PRIORITY_INT64 ? COLUMN_PRIORITY : sortColumn)), sortOrder); + ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); } // treeview: clicked on header @@ -335,22 +336,18 @@ void CoinControlDialog::headerSectionClicked(int logicalIndex) { if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing { - ui->treeWidget->header()->setSortIndicator((sortColumn == COLUMN_AMOUNT_INT64 ? COLUMN_AMOUNT : (sortColumn == COLUMN_PRIORITY_INT64 ? COLUMN_PRIORITY : sortColumn)), sortOrder); + ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); } else { - if (logicalIndex == COLUMN_AMOUNT) // sort by amount - logicalIndex = COLUMN_AMOUNT_INT64; - - if (logicalIndex == COLUMN_PRIORITY) // sort by priority - logicalIndex = COLUMN_PRIORITY_INT64; + logicalIndex = getMappedColumn(logicalIndex, false); if (sortColumn == logicalIndex) sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder); else { sortColumn = logicalIndex; - sortOrder = ((sortColumn == COLUMN_AMOUNT_INT64 || sortColumn == COLUMN_PRIORITY_INT64 || sortColumn == COLUMN_DATE || sortColumn == COLUMN_CONFIRMATIONS) ? Qt::DescendingOrder : Qt::AscendingOrder); // if amount,date,conf,priority then default => desc, else default => asc + sortOrder = ((sortColumn == COLUMN_LABEL || sortColumn == COLUMN_ADDRESS) ? Qt::AscendingOrder : Qt::DescendingOrder); // if label or address then default => asc, else default => desc } sortView(sortColumn, sortOrder); @@ -731,6 +728,7 @@ void CoinControlDialog::updateView() // date itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime())); + itemOutput->setText(COLUMN_DATE_INT64, strPad(QString::number(out.tx->GetTxTime()), 20, " ")); // confirmations itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " ")); diff --git a/src/qt/coincontroldialog.h b/src/qt/coincontroldialog.h index b9318ca7b..465e2a009 100644 --- a/src/qt/coincontroldialog.h +++ b/src/qt/coincontroldialog.h @@ -65,9 +65,35 @@ private: COLUMN_TXHASH, COLUMN_VOUT_INDEX, COLUMN_AMOUNT_INT64, - COLUMN_PRIORITY_INT64 + COLUMN_PRIORITY_INT64, + COLUMN_DATE_INT64 }; + // some columns have a hidden column containing the value used for sorting + int getMappedColumn(int column, bool fVisibleColumn = true) + { + if (fVisibleColumn) + { + if (column == COLUMN_AMOUNT_INT64) + return COLUMN_AMOUNT; + else if (column == COLUMN_PRIORITY_INT64) + return COLUMN_PRIORITY; + else if (column == COLUMN_DATE_INT64) + return COLUMN_DATE; + } + else + { + if (column == COLUMN_AMOUNT) + return COLUMN_AMOUNT_INT64; + else if (column == COLUMN_PRIORITY) + return COLUMN_PRIORITY_INT64; + else if (column == COLUMN_DATE) + return COLUMN_DATE_INT64; + } + + return column; + } + private slots: void showMenu(const QPoint &); void copyAmount(); diff --git a/src/qt/forms/coincontroldialog.ui b/src/qt/forms/coincontroldialog.ui index a31c491e9..cd1c0ffa1 100644 --- a/src/qt/forms/coincontroldialog.ui +++ b/src/qt/forms/coincontroldialog.ui @@ -428,7 +428,7 @@ false - 11 + 12 true @@ -494,6 +494,11 @@ + + + + +