diff options
Diffstat (limited to 'src/libwalletqt/TransactionHistory.cpp')
| -rw-r--r-- | src/libwalletqt/TransactionHistory.cpp | 76 |
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(); } |
