diff options
| author | Ilya Kitaev <mbg033@gmail.com> | 2016-10-07 23:05:51 +0300 |
|---|---|---|
| committer | Ilya Kitaev <mbg033@gmail.com> | 2016-10-10 00:19:13 +0300 |
| commit | 612c497608cc64234a05cd413d4269160f17100c (patch) | |
| tree | 77af4eac489b28fc04fff8c8b3d6d214ca172e9e /src/model | |
| parent | e7e6c583b676325d64e10cf75257c000e35cd344 (diff) | |
| download | monzero-gui-612c497608cc64234a05cd413d4269160f17100c.tar.gz monzero-gui-612c497608cc64234a05cd413d4269160f17100c.tar.xz monzero-gui-612c497608cc64234a05cd413d4269160f17100c.zip | |
TransactionHistory sorting
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/TransactionHistoryModel.cpp | 4 | ||||
| -rw-r--r-- | src/model/TransactionHistoryModel.h | 17 | ||||
| -rw-r--r-- | src/model/TransactionHistorySortFilterModel.cpp | 64 | ||||
| -rw-r--r-- | src/model/TransactionHistorySortFilterModel.h | 34 |
4 files changed, 110 insertions, 9 deletions
diff --git a/src/model/TransactionHistoryModel.cpp b/src/model/TransactionHistoryModel.cpp index b8f23f68..1ad17944 100644 --- a/src/model/TransactionHistoryModel.cpp +++ b/src/model/TransactionHistoryModel.cpp @@ -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"); diff --git a/src/model/TransactionHistoryModel.h b/src/model/TransactionHistoryModel.h index 96d3ff32..0960ceae 100644 --- a/src/model/TransactionHistoryModel.h +++ b/src/model/TransactionHistoryModel.h @@ -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 diff --git a/src/model/TransactionHistorySortFilterModel.cpp b/src/model/TransactionHistorySortFilterModel.cpp index 67d7b84a..946137c6 100644 --- a/src/model/TransactionHistorySortFilterModel.cpp +++ b/src/model/TransactionHistorySortFilterModel.cpp @@ -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; +} diff --git a/src/model/TransactionHistorySortFilterModel.h b/src/model/TransactionHistorySortFilterModel.h index bdcab079..c1d3d2c2 100644 --- a/src/model/TransactionHistorySortFilterModel.h +++ b/src/model/TransactionHistorySortFilterModel.h @@ -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
\ No newline at end of file +#endif // TRANSACTIONHISTORYSORTFILTERMODEL_H |
