aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/TransactionInfo.cpp
blob: 72b56b6a1184bcc113c8a083f27c9ccb71688cae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include "TransactionInfo.h"
#include "WalletManager.h"
#include "Transfer.h"
#include <QDateTime>
#include <QDebug>

TransactionInfo::Direction TransactionInfo::direction() const
{
    return static_cast<Direction>(m_pimpl->direction());
}

bool TransactionInfo::isPending() const
{
    return m_pimpl->isPending();
}

bool TransactionInfo::isFailed() const
{
    return m_pimpl->isFailed();
}


double TransactionInfo::amount() const
{
    // there's no unsigned uint64 for JS, so better use double
    return WalletManager::instance()->displayAmount(m_pimpl->amount()).toDouble();
}

quint64 TransactionInfo::atomicAmount() const
{
    return m_pimpl->amount();
}

QString TransactionInfo::displayAmount() const
{
    return WalletManager::instance()->displayAmount(m_pimpl->amount());
}

QString TransactionInfo::fee() const
{
    if(m_pimpl->fee() == 0)
        return "";
    return WalletManager::instance()->displayAmount(m_pimpl->fee());
}

quint64 TransactionInfo::blockHeight() const
{
    return m_pimpl->blockHeight();
}

QSet<quint32> TransactionInfo::subaddrIndex() const
{
    QSet<quint32> result;
    for (uint32_t i : m_pimpl->subaddrIndex())
        result.insert(i);
    return result;
}

quint32 TransactionInfo::subaddrAccount() const
{
    return m_pimpl->subaddrAccount();
}

QString TransactionInfo::label() const
{
    return QString::fromStdString(m_pimpl->label());
}

quint64 TransactionInfo::confirmations() const
{
    return m_pimpl->confirmations();
}

quint64 TransactionInfo::unlockTime() const
{
    return m_pimpl->unlockTime();
}

QString TransactionInfo::hash() const
{
    return QString::fromStdString(m_pimpl->hash());
}

QDateTime TransactionInfo::timestamp() const
{
    QDateTime result = QDateTime::fromTime_t(m_pimpl->timestamp());
    return result;
}

QString TransactionInfo::date() const
{
    return timestamp().date().toString(Qt::ISODate);
}

QString TransactionInfo::time() const
{
    return timestamp().time().toString(Qt::ISODate);
}

QString TransactionInfo::paymentId() const
{
    return QString::fromStdString(m_pimpl->paymentId());
}

QString TransactionInfo::destinations_formatted() const
{
    QString destinations;
    for (auto const& t: transfers()) {
        if (!destinations.isEmpty())
          destinations += "<br> ";
        destinations +=  WalletManager::instance()->displayAmount(t->amount()) + ": " + t->address();
    }
    return destinations;
}

QList<Transfer*> TransactionInfo::transfers() const
{
    if (!m_transfers.isEmpty()) {
        return m_transfers;
    }

    for(auto const& t: m_pimpl->transfers()) {
        TransactionInfo * parent = const_cast<TransactionInfo*>(this);
        Transfer * transfer = new Transfer(t.amount, QString::fromStdString(t.address), parent);
        m_transfers.append(transfer);
    }
    return m_transfers;
}

TransactionInfo::TransactionInfo(Monero::TransactionInfo *pimpl, QObject *parent)
    : QObject(parent), m_pimpl(pimpl)
{

}