aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-01-14 10:40:22 -0500
committerRiccardo Spagni <ric@spagni.net>2017-01-14 10:40:22 -0500
commita1c5e7fed213d88c677d62c6ec0197275b9d9553 (patch)
treeb42819f3ea5ded93e07c978d50632f3f3413ae34 /src
parent593839a374f6fb69df84d1cda5261ed246e9028f (diff)
parentad5115ac3c478d8cb8a4e040f9cc064e826a7af6 (diff)
downloadmonzero-gui-a1c5e7fed213d88c677d62c6ec0197275b9d9553.tar.gz
monzero-gui-a1c5e7fed213d88c677d62c6ec0197275b9d9553.tar.xz
monzero-gui-a1c5e7fed213d88c677d62c6ec0197275b9d9553.zip
Merge pull request #397
ad5115a Add estimated time countdown for locked balance (Jaquee) 205bfcd History: Show num of confirmations + unconfirmed payments (Jaquee)
Diffstat (limited to 'src')
-rw-r--r--src/libwalletqt/TransactionHistory.cpp24
-rw-r--r--src/libwalletqt/TransactionHistory.h7
-rw-r--r--src/libwalletqt/TransactionInfo.cpp5
-rw-r--r--src/libwalletqt/TransactionInfo.h2
-rw-r--r--src/libwalletqt/Wallet.cpp6
-rw-r--r--src/libwalletqt/Wallet.h1
-rw-r--r--src/model/TransactionHistoryModel.cpp5
-rw-r--r--src/model/TransactionHistoryModel.h1
8 files changed, 49 insertions, 2 deletions
diff --git a/src/libwalletqt/TransactionHistory.cpp b/src/libwalletqt/TransactionHistory.cpp
index b2c5cebe..9cd22bee 100644
--- a/src/libwalletqt/TransactionHistory.cpp
+++ b/src/libwalletqt/TransactionHistory.cpp
@@ -31,7 +31,9 @@ QList<TransactionInfo *> TransactionHistory::getAll() const
QDateTime firstDateTime = QDateTime(QDate(2014, 4, 18)); // the genesis block
QDateTime lastDateTime = QDateTime::currentDateTime().addDays(1); // tomorrow (guard against jitter and timezones)
-
+ quint64 lastTxHeight = 0;
+ m_locked = false;
+ m_minutesToUnlock = 0;
TransactionHistory * parent = const_cast<TransactionHistory*>(this);
for (const auto i : m_pimpl->getAll()) {
TransactionInfo * ti = new TransactionInfo(i, parent);
@@ -43,6 +45,14 @@ QList<TransactionInfo *> TransactionHistory::getAll() const
if (ti->timestamp() <= firstDateTime) {
firstDateTime = ti->timestamp();
}
+ // store last tx height
+ if (ti->confirmations() < 10 && ti->blockHeight() >= lastTxHeight ){
+ lastTxHeight = ti->blockHeight();
+ // TODO: Fetch block time and confirmations needed from wallet2?
+ m_minutesToUnlock = (10 - ti->confirmations()) * 2;
+ m_locked = true;
+ }
+
}
emit refreshFinished();
@@ -81,9 +91,19 @@ QDateTime TransactionHistory::lastDateTime() const
return m_lastDateTime;
}
+quint64 TransactionHistory::minutesToUnlock() const
+{
+ return m_minutesToUnlock;
+}
+
+bool TransactionHistory::TransactionHistory::locked() const
+{
+ return m_locked;
+}
+
TransactionHistory::TransactionHistory(Monero::TransactionHistory *pimpl, QObject *parent)
- : QObject(parent), m_pimpl(pimpl)
+ : QObject(parent), m_pimpl(pimpl), m_minutesToUnlock(0), m_locked(false)
{
m_firstDateTime = QDateTime(QDate(2014, 4, 18)); // the genesis block
m_lastDateTime = QDateTime::currentDateTime().addDays(1); // tomorrow (guard against jitter and timezones)
diff --git a/src/libwalletqt/TransactionHistory.h b/src/libwalletqt/TransactionHistory.h
index 7ded833c..0c8bfc9d 100644
--- a/src/libwalletqt/TransactionHistory.h
+++ b/src/libwalletqt/TransactionHistory.h
@@ -17,6 +17,8 @@ class TransactionHistory : public QObject
Q_PROPERTY(int count READ count)
Q_PROPERTY(QDateTime firstDateTime READ firstDateTime NOTIFY firstDateTimeChanged)
Q_PROPERTY(QDateTime lastDateTime READ lastDateTime NOTIFY lastDateTimeChanged)
+ Q_PROPERTY(int minutesToUnlock READ minutesToUnlock)
+ Q_PROPERTY(bool locked READ locked)
public:
Q_INVOKABLE TransactionInfo *transaction(int index);
@@ -26,6 +28,8 @@ public:
quint64 count() const;
QDateTime firstDateTime() const;
QDateTime lastDateTime() const;
+ quint64 minutesToUnlock() const;
+ bool locked() const;
signals:
void refreshStarted() const;
@@ -45,6 +49,9 @@ private:
mutable QList<TransactionInfo*> m_tinfo;
mutable QDateTime m_firstDateTime;
mutable QDateTime m_lastDateTime;
+ mutable int m_minutesToUnlock;
+ // history contains locked transfers
+ mutable bool m_locked;
};
diff --git a/src/libwalletqt/TransactionInfo.cpp b/src/libwalletqt/TransactionInfo.cpp
index ed73a29f..71df2b02 100644
--- a/src/libwalletqt/TransactionInfo.cpp
+++ b/src/libwalletqt/TransactionInfo.cpp
@@ -46,6 +46,11 @@ quint64 TransactionInfo::blockHeight() const
return m_pimpl->blockHeight();
}
+quint64 TransactionInfo::confirmations() const
+{
+ return m_pimpl->confirmations();
+}
+
QString TransactionInfo::hash() const
{
return QString::fromStdString(m_pimpl->hash());
diff --git a/src/libwalletqt/TransactionInfo.h b/src/libwalletqt/TransactionInfo.h
index 6d9fc270..30418b88 100644
--- a/src/libwalletqt/TransactionInfo.h
+++ b/src/libwalletqt/TransactionInfo.h
@@ -18,6 +18,7 @@ class TransactionInfo : public QObject
Q_PROPERTY(QString displayAmount READ displayAmount)
Q_PROPERTY(QString fee READ fee)
Q_PROPERTY(quint64 blockHeight READ blockHeight)
+ Q_PROPERTY(quint64 confirmations READ confirmations)
Q_PROPERTY(QString hash READ hash)
Q_PROPERTY(QDateTime timestamp READ timestamp)
Q_PROPERTY(QString date READ date)
@@ -42,6 +43,7 @@ public:
QString displayAmount() const;
QString fee() const;
quint64 blockHeight() const;
+ quint64 confirmations() const;
//! transaction_id
QString hash() const;
QDateTime timestamp() const;
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index 5bf75788..62c71110 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -44,6 +44,12 @@ public:
emit m_wallet->moneyReceived(QString::fromStdString(txId), amount);
}
+ virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount)
+ {
+ qDebug() << __FUNCTION__;
+ emit m_wallet->unconfirmedMoneyReceived(QString::fromStdString(txId), amount);
+ }
+
virtual void newBlock(uint64_t height)
{
// qDebug() << __FUNCTION__;
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index 24bdc15b..9f9ed3e1 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -206,6 +206,7 @@ signals:
void moneySpent(const QString &txId, quint64 amount);
void moneyReceived(const QString &txId, quint64 amount);
+ void unconfirmedMoneyReceived(const QString &txId, quint64 amount);
void newBlock(quint64 height);
void historyModelChanged() const;
diff --git a/src/model/TransactionHistoryModel.cpp b/src/model/TransactionHistoryModel.cpp
index 9aed10ce..2e232259 100644
--- a/src/model/TransactionHistoryModel.cpp
+++ b/src/model/TransactionHistoryModel.cpp
@@ -81,6 +81,10 @@ QVariant TransactionHistoryModel::data(const QModelIndex &index, int role) const
result = tInfo->blockHeight();
}
break;
+
+ case TransactionConfirmationsRole:
+ result = tInfo->confirmations();
+ break;
case TransactionHashRole:
result = tInfo->hash();
break;
@@ -125,6 +129,7 @@ QHash<int, QByteArray> TransactionHistoryModel::roleNames() const
roleNames.insert(TransactionAtomicAmountRole, "atomicAmount");
roleNames.insert(TransactionFeeRole, "fee");
roleNames.insert(TransactionBlockHeightRole, "blockHeight");
+ roleNames.insert(TransactionConfirmationsRole, "confirmations");
roleNames.insert(TransactionHashRole, "hash");
roleNames.insert(TransactionTimeStampRole, "timeStamp");
roleNames.insert(TransactionPaymentIdRole, "paymentId");
diff --git a/src/model/TransactionHistoryModel.h b/src/model/TransactionHistoryModel.h
index 1b349914..449d8003 100644
--- a/src/model/TransactionHistoryModel.h
+++ b/src/model/TransactionHistoryModel.h
@@ -25,6 +25,7 @@ public:
TransactionDisplayAmountRole,
TransactionFeeRole,
TransactionBlockHeightRole,
+ TransactionConfirmationsRole,
TransactionHashRole,
TransactionTimeStampRole,
TransactionPaymentIdRole,