Fix coin control sorts date as text

This commit is contained in:
Cozz Lovan 2014-03-03 04:16:42 +01:00 committed by Wladimir J. van der Laan
parent d6e0e171ab
commit 79ce7e9117
3 changed files with 39 additions and 10 deletions

View file

@ -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_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_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_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 // default view is sorted by amount desc
sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder); sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder);
@ -327,7 +328,7 @@ void CoinControlDialog::sortView(int column, Qt::SortOrder order)
sortColumn = column; sortColumn = column;
sortOrder = order; sortOrder = order;
ui->treeWidget->sortItems(column, 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 // treeview: clicked on header
@ -335,22 +336,18 @@ void CoinControlDialog::headerSectionClicked(int logicalIndex)
{ {
if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing 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 else
{ {
if (logicalIndex == COLUMN_AMOUNT) // sort by amount logicalIndex = getMappedColumn(logicalIndex, false);
logicalIndex = COLUMN_AMOUNT_INT64;
if (logicalIndex == COLUMN_PRIORITY) // sort by priority
logicalIndex = COLUMN_PRIORITY_INT64;
if (sortColumn == logicalIndex) if (sortColumn == logicalIndex)
sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder); sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder);
else else
{ {
sortColumn = logicalIndex; 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); sortView(sortColumn, sortOrder);
@ -731,6 +728,7 @@ void CoinControlDialog::updateView()
// date // date
itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime())); itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime()));
itemOutput->setText(COLUMN_DATE_INT64, strPad(QString::number(out.tx->GetTxTime()), 20, " "));
// confirmations // confirmations
itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " ")); itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " "));

View file

@ -65,9 +65,35 @@ private:
COLUMN_TXHASH, COLUMN_TXHASH,
COLUMN_VOUT_INDEX, COLUMN_VOUT_INDEX,
COLUMN_AMOUNT_INT64, 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: private slots:
void showMenu(const QPoint &); void showMenu(const QPoint &);
void copyAmount(); void copyAmount();

View file

@ -428,7 +428,7 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="columnCount"> <property name="columnCount">
<number>11</number> <number>12</number>
</property> </property>
<attribute name="headerShowSortIndicator" stdset="0"> <attribute name="headerShowSortIndicator" stdset="0">
<bool>true</bool> <bool>true</bool>
@ -494,6 +494,11 @@
<string/> <string/>
</property> </property>
</column> </column>
<column>
<property name="text">
<string/>
</property>
</column>
</widget> </widget>
</item> </item>
<item> <item>