aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorIlya Kitaev <mbg033@gmail.com>2016-10-07 23:05:51 +0300
committerIlya Kitaev <mbg033@gmail.com>2016-10-10 00:19:13 +0300
commit612c497608cc64234a05cd413d4269160f17100c (patch)
tree77af4eac489b28fc04fff8c8b3d6d214ca172e9e /src/model
parente7e6c583b676325d64e10cf75257c000e35cd344 (diff)
downloadmonzero-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.cpp4
-rw-r--r--src/model/TransactionHistoryModel.h17
-rw-r--r--src/model/TransactionHistorySortFilterModel.cpp64
-rw-r--r--src/model/TransactionHistorySortFilterModel.h34
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