[Qt] Add sorting feature to the requested payments table
This commit is contained in:
parent
8476d5d407
commit
4d901023b7
4 changed files with 52 additions and 2 deletions
|
@ -207,7 +207,11 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTableView" name="recentRequestsView"/>
|
<widget class="QTableView" name="recentRequestsView">
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
|
|
@ -55,6 +55,8 @@ void ReceiveCoinsDialog::setModel(WalletModel *model)
|
||||||
ui->recentRequestsView->horizontalHeader()->setSectionResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch);
|
ui->recentRequestsView->horizontalHeader()->setSectionResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch);
|
||||||
#endif
|
#endif
|
||||||
ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Amount, 100);
|
ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Amount, 100);
|
||||||
|
|
||||||
|
model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,3 +175,31 @@ void RecentRequestsTableModel::addNewRequest(RecentRequestEntry &recipient)
|
||||||
list.prepend(recipient);
|
list.prepend(recipient);
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RecentRequestsTableModel::sort(int column, Qt::SortOrder order)
|
||||||
|
{
|
||||||
|
qSort(list.begin(), list.end(), RecentRequestEntryLessThan(column, order));
|
||||||
|
emit dataChanged(index(0, 0, QModelIndex()), index(list.size() - 1, NUMBER_OF_COLUMNS - 1, QModelIndex()));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RecentRequestEntryLessThan::operator()(RecentRequestEntry &left, RecentRequestEntry &right) const
|
||||||
|
{
|
||||||
|
RecentRequestEntry *pLeft = &left;
|
||||||
|
RecentRequestEntry *pRight = &right;
|
||||||
|
if (order == Qt::DescendingOrder)
|
||||||
|
std::swap(pLeft, pRight);
|
||||||
|
|
||||||
|
switch(column)
|
||||||
|
{
|
||||||
|
case RecentRequestsTableModel::Date:
|
||||||
|
return pLeft->date.toTime_t() < pRight->date.toTime_t();
|
||||||
|
case RecentRequestsTableModel::Label:
|
||||||
|
return pLeft->recipient.label < pRight->recipient.label;
|
||||||
|
case RecentRequestsTableModel::Message:
|
||||||
|
return pLeft->recipient.message < pRight->recipient.message;
|
||||||
|
case RecentRequestsTableModel::Amount:
|
||||||
|
return pLeft->recipient.amount < pRight->recipient.amount;
|
||||||
|
default:
|
||||||
|
return pLeft->id < pRight->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -41,6 +41,18 @@ public:
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class RecentRequestEntryLessThan
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder):
|
||||||
|
column(nColumn), order(fOrder) {}
|
||||||
|
bool operator()(RecentRequestEntry &left, RecentRequestEntry &right ) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int column;
|
||||||
|
Qt::SortOrder order;
|
||||||
|
};
|
||||||
|
|
||||||
/** Model for list of recently generated payment requests / bitcoin URIs.
|
/** Model for list of recently generated payment requests / bitcoin URIs.
|
||||||
* Part of wallet model.
|
* Part of wallet model.
|
||||||
*/
|
*/
|
||||||
|
@ -56,7 +68,8 @@ public:
|
||||||
Date = 0,
|
Date = 0,
|
||||||
Label = 1,
|
Label = 1,
|
||||||
Message = 2,
|
Message = 2,
|
||||||
Amount = 3
|
Amount = 3,
|
||||||
|
NUMBER_OF_COLUMNS
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @name Methods overridden from QAbstractTableModel
|
/** @name Methods overridden from QAbstractTableModel
|
||||||
|
@ -76,6 +89,9 @@ public:
|
||||||
void addNewRequest(const std::string &recipient);
|
void addNewRequest(const std::string &recipient);
|
||||||
void addNewRequest(RecentRequestEntry &recipient);
|
void addNewRequest(RecentRequestEntry &recipient);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WalletModel *walletModel;
|
WalletModel *walletModel;
|
||||||
QStringList columns;
|
QStringList columns;
|
||||||
|
|
Loading…
Add table
Reference in a new issue