diff options
| author | Ilya Kitaev <mbg033@gmail.com> | 2016-10-08 03:26:45 +0300 |
|---|---|---|
| committer | Ilya Kitaev <mbg033@gmail.com> | 2016-10-10 00:22:36 +0300 |
| commit | 0ac27e13a6cf10ba76fd1f50f8443ec0eccbc019 (patch) | |
| tree | fcbf3e627889e1fb160d88259b2d36de48994cb6 /src/model | |
| parent | 10c2786fca5abdc8dd963ac9994e7011c80bde3f (diff) | |
| download | monzero-gui-0ac27e13a6cf10ba76fd1f50f8443ec0eccbc019.tar.gz monzero-gui-0ac27e13a6cf10ba76fd1f50f8443ec0eccbc019.tar.xz monzero-gui-0ac27e13a6cf10ba76fd1f50f8443ec0eccbc019.zip | |
History: filter by amount
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/TransactionHistorySortFilterModel.cpp | 66 | ||||
| -rw-r--r-- | src/model/TransactionHistorySortFilterModel.h | 17 |
2 files changed, 35 insertions, 48 deletions
diff --git a/src/model/TransactionHistorySortFilterModel.cpp b/src/model/TransactionHistorySortFilterModel.cpp index d06d44bf..6d6a2b44 100644 --- a/src/model/TransactionHistorySortFilterModel.cpp +++ b/src/model/TransactionHistorySortFilterModel.cpp @@ -112,6 +112,20 @@ void TransactionHistorySortFilterModel::setAmountToFilter(double value) } } +int TransactionHistorySortFilterModel::directionFilter() const +{ + return m_filterValues.value(TransactionHistoryModel::TransactionDirectionRole).value<TransactionInfo::Direction>(); +} + +void TransactionHistorySortFilterModel::setDirectionFilter(int value) +{ + if (value != directionFilter()) { + m_filterValues[TransactionHistoryModel::TransactionDirectionRole] = QVariant::fromValue(value); + emit directionFilterChanged(); + invalidateFilter(); + } +} + void TransactionHistorySortFilterModel::sort(int column, Qt::SortOrder order) { @@ -150,6 +164,7 @@ bool TransactionHistorySortFilterModel::filterAcceptsRow(int source_row, const Q { QDateTime from = QDateTime(dateFromFilter()); QDateTime to = QDateTime(dateToFilter()); + to = to.addDays(1); // including upperbound QDateTime timestamp = data.toDateTime(); bool matchFrom = from.isNull() || timestamp.isNull() || timestamp >= from; bool matchTo = to.isNull() || timestamp.isNull() || timestamp <= to; @@ -162,17 +177,26 @@ bool TransactionHistorySortFilterModel::filterAcceptsRow(int source_row, const Q double to = amountToFilter(); double amount = data.toDouble(); - bool matchFrom = from < 0 || amount >= from; - bool matchTo = to < 0 || amount <= to; + bool matchFrom = from <= 0 || amount >= from; + bool matchTo = to <= 0 || amount <= to; result = matchFrom && matchTo; } break; + case TransactionHistoryModel::TransactionDirectionRole: + result = directionFilter() == TransactionInfo::Direction_Both ? true + : data.toInt() == directionFilter(); + + + break; + default: break; } - if (!result) // stop the loop once filter doesn't match + + if (!result) { // stop the loop once filter doesn't match break; + } } } @@ -183,39 +207,3 @@ bool TransactionHistorySortFilterModel::lessThan(const QModelIndex &source_left, { 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; -} - -QDate TransactionHistorySortFilterModel::dateFromToFilter(TransactionHistorySortFilterModel::ScopeIndex index) const -{ - int role = TransactionHistoryModel::TransactionTimeStampRole; - if (!m_filterValues.contains(role)) { - return QDate(); - } - return m_filterValues.value(role).toList().at(index).toDate(); -} - -void TransactionHistorySortFilterModel::setDateFromToFilter(TransactionHistorySortFilterModel::ScopeIndex index, const QDate &value) -{ - QVariantList scopeFilter; - int role = TransactionHistoryModel::TransactionTimeStampRole; - if (m_filterValues.contains(role)) { - scopeFilter = m_filterValues.value(role).toList(); - } - while (scopeFilter.size() < 2) { - scopeFilter.append(QDate()); - } - scopeFilter[index] = QVariant::fromValue(value); - m_filterValues[role] = scopeFilter; -} - - - diff --git a/src/model/TransactionHistorySortFilterModel.h b/src/model/TransactionHistorySortFilterModel.h index 43c46a7b..1b5c2fce 100644 --- a/src/model/TransactionHistorySortFilterModel.h +++ b/src/model/TransactionHistorySortFilterModel.h @@ -1,12 +1,14 @@ #ifndef TRANSACTIONHISTORYSORTFILTERMODEL_H #define TRANSACTIONHISTORYSORTFILTERMODEL_H +#include "TransactionInfo.h" #include <QSortFilterProxyModel> #include <QMap> #include <QVariant> #include <QDate> + class TransactionHistory; class TransactionHistorySortFilterModel: public QSortFilterProxyModel @@ -17,6 +19,8 @@ class TransactionHistorySortFilterModel: public QSortFilterProxyModel Q_PROPERTY(QDate dateToFilter READ dateToFilter WRITE setDateToFilter NOTIFY dateToFilterChanged) Q_PROPERTY(double amountFromFilter READ amountFromFilter WRITE setAmountFromFilter NOTIFY amountFromFilterChanged) Q_PROPERTY(double amountToFilter READ amountToFilter WRITE setAmountToFilter NOTIFY amountToFilterChanged) + Q_PROPERTY(int directionFilter READ directionFilter WRITE setDirectionFilter NOTIFY directionFilterChanged) + Q_PROPERTY(TransactionHistory * transactionHistory READ transactionHistory) public: @@ -41,6 +45,9 @@ public: double amountToFilter() const; void setAmountToFilter(double value); + //! filtering by direction + int directionFilter() const; + void setDirectionFilter(int value); Q_INVOKABLE void sort(int column, Qt::SortOrder order); TransactionHistory * transactionHistory() const; @@ -51,6 +58,7 @@ signals: void dateToFilterChanged(); void amountFromFilterChanged(); void amountToFilterChanged(); + void directionFilterChanged(); protected: // QSortFilterProxyModel overrides @@ -64,15 +72,6 @@ private: To = 1 }; - QVariant filterValue(int role); - void setFilterValue(int role, const QVariant &filterValue); - QDate dateFromToFilter(ScopeIndex index) const; - void setDateFromToFilter(ScopeIndex index, const QDate &value); -// double amountFromToFilter(ScopeIndex index) const; -// void setAmountFromToFilter(ScopeIndex index, double value); - - - private: QMap<int, QVariant> m_filterValues; }; |
