Revert "Use standard C99 (and Qt) types for 64-bit integers"
[novacoin.git] / src / qt / transactionfilterproxy.cpp
index cd1194d..16fb4da 100644 (file)
@@ -2,7 +2,8 @@
 #include "transactiontablemodel.h"
 
 #include <QDateTime>
-#include <QDebug>
+
+#include <cstdlib>
 
 // Earliest date that can be represented (far in the past)
 const QDateTime TransactionFilterProxy::MIN_DATE = QDateTime::fromTime_t(0);
@@ -15,7 +16,8 @@ TransactionFilterProxy::TransactionFilterProxy(QObject *parent) :
     dateTo(MAX_DATE),
     addrPrefix(),
     typeFilter(ALL_TYPES),
-    minAmount(0)
+    minAmount(0),
+    limitRows(-1)
 {
 }
 
@@ -27,13 +29,13 @@ bool TransactionFilterProxy::filterAcceptsRow(int sourceRow, const QModelIndex &
     QDateTime datetime = index.data(TransactionTableModel::DateRole).toDateTime();
     QString address = index.data(TransactionTableModel::AddressRole).toString();
     QString label = index.data(TransactionTableModel::LabelRole).toString();
-    qint64 amount = index.data(TransactionTableModel::AbsoluteAmountRole).toLongLong();
+    qint64 amount = llabs(index.data(TransactionTableModel::AmountRole).toLongLong());
 
     if(!(TYPE(type) & typeFilter))
         return false;
     if(datetime < dateFrom || datetime > dateTo)
         return false;
-    if(!address.startsWith(addrPrefix) && !label.startsWith(addrPrefix))
+    if (!address.contains(addrPrefix, Qt::CaseInsensitive) && !label.contains(addrPrefix, Qt::CaseInsensitive))
         return false;
     if(amount < minAmount)
         return false;
@@ -65,3 +67,20 @@ void TransactionFilterProxy::setMinAmount(qint64 minimum)
     this->minAmount = minimum;
     invalidateFilter();
 }
+
+void TransactionFilterProxy::setLimit(int limit)
+{
+    this->limitRows = limit;
+}
+
+int TransactionFilterProxy::rowCount(const QModelIndex &parent) const
+{
+    if(limitRows != -1)
+    {
+        return std::min(QSortFilterProxyModel::rowCount(parent), limitRows);
+    }
+    else
+    {
+        return QSortFilterProxyModel::rowCount(parent);
+    }
+}