aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/TransactionHistory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libwalletqt/TransactionHistory.cpp')
-rw-r--r--src/libwalletqt/TransactionHistory.cpp76
1 files changed, 58 insertions, 18 deletions
diff --git a/src/libwalletqt/TransactionHistory.cpp b/src/libwalletqt/TransactionHistory.cpp
index 2c2c9f73..7fd7c7bc 100644
--- a/src/libwalletqt/TransactionHistory.cpp
+++ b/src/libwalletqt/TransactionHistory.cpp
@@ -2,49 +2,89 @@
#include "TransactionInfo.h"
#include <wallet/wallet2_api.h>
+#include <QDebug>
-int TransactionHistory::count() const
-{
- return m_pimpl->count();
-}
TransactionInfo *TransactionHistory::transaction(int index)
{
- // box up Bitmonero::TransactionInfo
- Bitmonero::TransactionInfo * impl = m_pimpl->transaction(index);
- TransactionInfo * result = new TransactionInfo(impl, this);
- return result;
-}
-TransactionInfo *TransactionHistory::transaction(const QString &id)
-{
- // box up Bitmonero::TransactionInfo
- Bitmonero::TransactionInfo * impl = m_pimpl->transaction(id.toStdString());
- TransactionInfo * result = new TransactionInfo(impl, this);
- return result;
+ if (index < 0 || index >= m_tinfo.size()) {
+ qCritical("%s: no transaction info for index %d", __FUNCTION__, index);
+ qCritical("%s: there's %d transactions in backend", __FUNCTION__, m_pimpl->count());
+ return nullptr;
+ }
+ return m_tinfo.at(index);
}
+//// XXX: not sure if this method really needed;
+//TransactionInfo *TransactionHistory::transaction(const QString &id)
+//{
+// return nullptr;
+//}
+
QList<TransactionInfo *> TransactionHistory::getAll() const
{
+ // XXX this invalidates previously saved history that might be used by model
+ emit refreshStarted();
qDeleteAll(m_tinfo);
m_tinfo.clear();
+
+ QDateTime firstDateTime = QDateTime::currentDateTime();
+ QDateTime lastDateTime = QDateTime(QDate(1970, 1, 1));
+
TransactionHistory * parent = const_cast<TransactionHistory*>(this);
for (const auto i : m_pimpl->getAll()) {
TransactionInfo * ti = new TransactionInfo(i, parent);
m_tinfo.append(ti);
+ // looking for transactions timestamp scope
+ if (ti->timestamp() >= lastDateTime) {
+ lastDateTime = ti->timestamp();
+ }
+ if (ti->timestamp() <= firstDateTime) {
+ firstDateTime = ti->timestamp();
+ }
+ }
+ emit refreshFinished();
+
+ if (m_firstDateTime != firstDateTime) {
+ m_firstDateTime = firstDateTime;
+ emit firstDateTimeChanged();
+ }
+ if (m_lastDateTime != lastDateTime) {
+ m_lastDateTime = lastDateTime;
+ emit lastDateTimeChanged();
}
+
return m_tinfo;
}
void TransactionHistory::refresh()
{
- // XXX this invalidates previously saved history that might be used by clients
+ // rebuilding transaction list in wallet_api;
m_pimpl->refresh();
- emit invalidated();
+ // copying list here and keep track on every item to avoid memleaks
+ getAll();
}
+quint64 TransactionHistory::count() const
+{
+ return m_tinfo.count();
+}
+
+QDateTime TransactionHistory::firstDateTime() const
+{
+ return m_firstDateTime;
+}
+
+QDateTime TransactionHistory::lastDateTime() const
+{
+ return m_lastDateTime;
+}
+
+
TransactionHistory::TransactionHistory(Bitmonero::TransactionHistory *pimpl, QObject *parent)
: QObject(parent), m_pimpl(pimpl)
{
-
+ m_firstDateTime = QDateTime(QDate(1970, 1, 1));
+ m_lastDateTime = QDateTime::currentDateTime();
}