diff --git a/LeftPanel.qml b/LeftPanel.qml
index d33b2aff..65dbadad 100644
--- a/LeftPanel.qml
+++ b/LeftPanel.qml
@@ -39,6 +39,7 @@ Rectangle {
property alias balanceText: balanceText.text
property alias networkStatus : networkStatus
property alias progressBar : progressBar
+ property alias minutesToUnlockTxt: unlockedBalanceLabel.text
signal dashboardClicked()
signal historyClicked()
@@ -154,7 +155,8 @@ Rectangle {
}
Label {
- text: qsTr("Unlocked balance") + translationManager.emptyString
+ id: unlockedBalanceLabel
+ text: qsTr("Unlocked balance")
anchors.left: parent.left
anchors.leftMargin: 50
tipText: qsTr("Test tip 2
line 2") + translationManager.emptyString
diff --git a/main.qml b/main.qml
index 4a8c3f91..3144a70e 100644
--- a/main.qml
+++ b/main.qml
@@ -61,6 +61,10 @@ ApplicationWindow {
property int maxWindowHeight: (Screen.height < 900)? 720 : 800;
property bool daemonRunning: false
property alias toolTip: toolTip
+ property string walletName
+ property bool viewOnly: false
+ property bool foundNewBlock: false
+ property int timeToUnlock: 0
// true if wallet ever synchronized
property bool walletInitialized : false
@@ -293,6 +297,15 @@ ApplicationWindow {
console.log(">>> wallet updated")
middlePanel.unlockedBalanceText = leftPanel.unlockedBalanceText = walletManager.displayAmount(currentWallet.unlockedBalance);
middlePanel.balanceText = leftPanel.balanceText = walletManager.displayAmount(currentWallet.balance);
+ console.log("time to unlock: ", currentWallet.history.minutesToUnlock);
+ // Update history if new block found since last update and balance is locked.
+ if(foundNewBlock && currentWallet.history.locked) {
+ foundNewBlock = false;
+ console.log("New block found - updating history")
+ currentWallet.history.refresh()
+ timeToUnlock = currentWallet.history.minutesToUnlock
+ leftPanel.minutesToUnlockTxt = (timeToUnlock > 0)? qsTr("Unlocked balance (~%1 min)").arg(timeToUnlock) : qsTr("Unlocked balance");
+ }
}
function onWalletRefresh() {
@@ -337,13 +350,11 @@ ApplicationWindow {
}
}
-
// initialize transaction history once wallet is initializef first time;
if (!walletInitialized) {
currentWallet.history.refresh()
walletInitialized = true
- }
-
+ }
onWalletUpdate();
}
@@ -370,7 +381,6 @@ ApplicationWindow {
function onWalletNewBlock(blockHeight) {
-
// Update progress bar
var currHeight = blockHeight
//fast refresh until restoreHeight is reached
@@ -380,10 +390,7 @@ ApplicationWindow {
splashCounter = currHeight
leftPanel.progressBar.updateProgress(currHeight,currentWallet.daemonBlockChainTargetHeight());
}
-
- // Update num of confirmations on history page
- // TODO: check performance on big wallets. Maybe no need to refresh full history?
- currentWallet.history.refresh()
+ foundNewBlock = true;
}
function onWalletMoneyReceived(txId, amount) {
@@ -394,6 +401,7 @@ ApplicationWindow {
function onWalletUnconfirmedMoneyReceived(txId, amount) {
// refresh history
+ console.log("unconfirmed money found")
currentWallet.history.refresh()
}
diff --git a/pages/AddressBook.qml b/pages/AddressBook.qml
index 8d8be0a7..11086b99 100644
--- a/pages/AddressBook.qml
+++ b/pages/AddressBook.qml
@@ -138,7 +138,7 @@ Rectangle {
if(currentWallet.addressBook.errorCode() === AddressBook.Invalid_Address)
informationPopup.text = qsTr("Invalid address")
else if(currentWallet.addressBook.errorCode() === AddressBook.Invalid_Payment_Id)
- informationPopup.text = qsTr("Invalid Payment ID")
+ informationPopup.text = currentWallet.addressBook.errorString()
else
informationPopup.text = qsTr("Can't create entry")
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 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(this);
for (const auto i : m_pimpl->getAll()) {
TransactionInfo * ti = new TransactionInfo(i, parent);
@@ -43,6 +45,14 @@ QList 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 m_tinfo;
mutable QDateTime m_firstDateTime;
mutable QDateTime m_lastDateTime;
+ mutable int m_minutesToUnlock;
+ // history contains locked transfers
+ mutable bool m_locked;
};