Skip to content

Commit dc01ba7

Browse files
committed
Fix coin control sorts date as text
1 parent aefbf6e commit dc01ba7

File tree

3 files changed

+39
-10
lines changed

3 files changed

+39
-10
lines changed

src/qt/coincontroldialog.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ CoinControlDialog::CoinControlDialog(QWidget *parent) :
125125
ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but dont show it
126126
ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but dont show it
127127
ui->treeWidget->setColumnHidden(COLUMN_PRIORITY_INT64, true); // store priority int64 in this column, but dont show it
128+
ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but dont show it
128129

129130
// default view is sorted by amount desc
130131
sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder);
@@ -327,30 +328,26 @@ void CoinControlDialog::sortView(int column, Qt::SortOrder order)
327328
sortColumn = column;
328329
sortOrder = order;
329330
ui->treeWidget->sortItems(column, order);
330-
ui->treeWidget->header()->setSortIndicator((sortColumn == COLUMN_AMOUNT_INT64 ? COLUMN_AMOUNT : (sortColumn == COLUMN_PRIORITY_INT64 ? COLUMN_PRIORITY : sortColumn)), sortOrder);
331+
ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder);
331332
}
332333

333334
// treeview: clicked on header
334335
void CoinControlDialog::headerSectionClicked(int logicalIndex)
335336
{
336337
if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing
337338
{
338-
ui->treeWidget->header()->setSortIndicator((sortColumn == COLUMN_AMOUNT_INT64 ? COLUMN_AMOUNT : (sortColumn == COLUMN_PRIORITY_INT64 ? COLUMN_PRIORITY : sortColumn)), sortOrder);
339+
ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder);
339340
}
340341
else
341342
{
342-
if (logicalIndex == COLUMN_AMOUNT) // sort by amount
343-
logicalIndex = COLUMN_AMOUNT_INT64;
344-
345-
if (logicalIndex == COLUMN_PRIORITY) // sort by priority
346-
logicalIndex = COLUMN_PRIORITY_INT64;
343+
logicalIndex = getMappedColumn(logicalIndex, false);
347344

348345
if (sortColumn == logicalIndex)
349346
sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder);
350347
else
351348
{
352349
sortColumn = logicalIndex;
353-
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
350+
sortOrder = ((sortColumn == COLUMN_LABEL || sortColumn == COLUMN_ADDRESS) ? Qt::AscendingOrder : Qt::DescendingOrder); // if label or address then default => asc, else default => desc
354351
}
355352

356353
sortView(sortColumn, sortOrder);
@@ -731,6 +728,7 @@ void CoinControlDialog::updateView()
731728

732729
// date
733730
itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime()));
731+
itemOutput->setText(COLUMN_DATE_INT64, strPad(QString::number(out.tx->GetTxTime()), 20, " "));
734732

735733
// confirmations
736734
itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " "));

src/qt/coincontroldialog.h

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,35 @@ class CoinControlDialog : public QDialog
6565
COLUMN_TXHASH,
6666
COLUMN_VOUT_INDEX,
6767
COLUMN_AMOUNT_INT64,
68-
COLUMN_PRIORITY_INT64
68+
COLUMN_PRIORITY_INT64,
69+
COLUMN_DATE_INT64
6970
};
7071

72+
// some columns have a hidden column containing the value used for sorting
73+
int getMappedColumn(int column, bool fVisibleColumn = true)
74+
{
75+
if (fVisibleColumn)
76+
{
77+
if (column == COLUMN_AMOUNT_INT64)
78+
return COLUMN_AMOUNT;
79+
else if (column == COLUMN_PRIORITY_INT64)
80+
return COLUMN_PRIORITY;
81+
else if (column == COLUMN_DATE_INT64)
82+
return COLUMN_DATE;
83+
}
84+
else
85+
{
86+
if (column == COLUMN_AMOUNT)
87+
return COLUMN_AMOUNT_INT64;
88+
else if (column == COLUMN_PRIORITY)
89+
return COLUMN_PRIORITY_INT64;
90+
else if (column == COLUMN_DATE)
91+
return COLUMN_DATE_INT64;
92+
}
93+
94+
return column;
95+
}
96+
7197
private slots:
7298
void showMenu(const QPoint &);
7399
void copyAmount();

src/qt/forms/coincontroldialog.ui

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@
428428
<bool>false</bool>
429429
</property>
430430
<property name="columnCount">
431-
<number>11</number>
431+
<number>12</number>
432432
</property>
433433
<attribute name="headerShowSortIndicator" stdset="0">
434434
<bool>true</bool>
@@ -494,6 +494,11 @@
494494
<string/>
495495
</property>
496496
</column>
497+
<column>
498+
<property name="text">
499+
<string/>
500+
</property>
501+
</column>
497502
</widget>
498503
</item>
499504
<item>

0 commit comments

Comments
 (0)