TransactionHistory sorting

This commit is contained in:
Ilya Kitaev
2016-10-07 23:05:51 +03:00
parent e7e6c583b6
commit 612c497608
14 changed files with 191 additions and 36 deletions

View File

@@ -65,6 +65,9 @@ QVariant TransactionHistoryModel::data(const QModelIndex &index, int role) const
case TransactionAmountRole:
result = tInfo->amount();
break;
case TransactionDisplayAmountRole:
result = tInfo->displayAmount();
break;
case TransactionFeeRole:
result = tInfo->fee();
break;
@@ -108,6 +111,7 @@ QHash<int, QByteArray> TransactionHistoryModel::roleNames() const
roleNames.insert(TransactionPendingRole, "isPending");
roleNames.insert(TransactionFailedRole, "isFailed");
roleNames.insert(TransactionAmountRole, "amount");
roleNames.insert(TransactionDisplayAmountRole, "displayAmount");
roleNames.insert(TransactionFeeRole, "fee");
roleNames.insert(TransactionBlockHeightRole, "blockHeight");
roleNames.insert(TransactionHashRole, "hash");

View File

@@ -9,6 +9,7 @@ class TransactionInfo;
/**
* @brief The TransactionHistoryModel class - read-only list model for Transaction History
*/
class TransactionHistoryModel : public QAbstractListModel
{
Q_OBJECT
@@ -21,6 +22,7 @@ public:
TransactionPendingRole,
TransactionFailedRole,
TransactionAmountRole,
TransactionDisplayAmountRole,
TransactionFeeRole,
TransactionBlockHeightRole,
TransactionHashRole,
@@ -32,10 +34,24 @@ public:
TransactionDateRole,
TransactionTimeRole
};
Q_ENUM(TransactionInfoRole)
TransactionHistoryModel(QObject * parent = 0);
void setTransactionHistory(TransactionHistory * th);
TransactionHistory * transactionHistory() const;
/**
* @brief dateFrom - returns firstmost transaction datetime
* @return
*/
QDateTime firstDateTime() const;
/**
* @brief dateTo - returns lastmost transaction datetime
* @return
*/
QDateTime lastDateTime() const;
/// QAbstractListModel
virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
@@ -47,7 +63,6 @@ signals:
private:
TransactionHistory * m_transactionHistory;
};
#endif // TRANSACTIONHISTORYMODEL_H

View File

@@ -1,6 +1,66 @@
#include "TransactionHistorySortFiltrerModel.h"
#include "TransactionHistorySortFilterModel.h"
#include "TransactionHistoryModel.h"
TransactionHistorySortFiltrerModel::TransactionHistorySortFiltrerModel()
#include <QDebug>
TransactionHistorySortFilterModel::TransactionHistorySortFilterModel(QObject *parent)
: QSortFilterProxyModel(parent)
{
}
QString TransactionHistorySortFilterModel::paymentIdFilter() const
{
}
void TransactionHistorySortFilterModel::setPaymentIdFilter(const QString &arg)
{
}
void TransactionHistorySortFilterModel::sort(int column, Qt::SortOrder order)
{
QSortFilterProxyModel::sort(column, order);
}
bool TransactionHistorySortFilterModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
if (source_row < 0 || source_row >= sourceModel()->rowCount()) {
return false;
}
QModelIndex index = sourceModel()->index(source_row, 0, source_parent);
if (!index.isValid()) {
return false;
}
bool result = true;
for (int role : m_filterValues.keys()) {
if (m_filterValues.contains(role)) {
QVariant data = sourceModel()->data(index, role);
result = data.toString().contains(m_filterValues.value(role).toString());
if (result)
break;
}
}
return result;
}
bool TransactionHistorySortFilterModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
{
return QSortFilterProxyModel::lessThan(source_left, source_right);
}
QVariant TransactionHistorySortFilterModel::filterValue(int role)
{
return m_filterValues.value(role);
}
void TransactionHistorySortFilterModel::setFilterValue(int role, const QVariant &filterValue)
{
m_filterValues[role] = filterValue;
}

View File

@@ -1,12 +1,34 @@
#ifndef TRANSACTIONHISTORYSORTFILTRERMODEL_H
#define TRANSACTIONHISTORYSORTFILTRERMODEL_H
#ifndef TRANSACTIONHISTORYSORTFILTERMODEL_H
#define TRANSACTIONHISTORYSORTFILTERMODEL_H
#include <QObject>
class TransactionHistorySortFiltrerModel : public QSortFilterProxyModel
#include <QSortFilterProxyModel>
#include <QMap>
#include <QVariant>
class TransactionHistorySortFilterModel: public QSortFilterProxyModel
{
Q_OBJECT
public:
TransactionHistorySortFiltrerModel();
TransactionHistorySortFilterModel(QObject * parent = nullptr);
QString paymentIdFilter() const;
void setPaymentIdFilter(const QString &arg);
Q_INVOKABLE void sort(int column, Qt::SortOrder order);
protected:
// QSortFilterProxyModel overrides
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
private:
QVariant filterValue(int role);
void setFilterValue(int role, const QVariant &filterValue);
private:
QMap<int, QVariant> m_filterValues;
};
#endif // TRANSACTIONHISTORYSORTFILTRERMODEL_H
#endif // TRANSACTIONHISTORYSORTFILTERMODEL_H