Skip to content

Conversation

jonasschnelli
Copy link
Contributor

Adresses #8060 and #7235

This change will slide in a semi transparent modal info layer in out-of-sync state resulting in a more prominent warning. Users can hide the modal info layer by pressing on "Hide".
Clicking on the out-of-sync warning icons will re-display the modal info layer.

In the modal info layer, the user can get three new values:

  • amount of blocks left
  • estimated time left until in-sync
  • progress increase per hour

bildschirmfoto 2016-07-19 um 15 53 16

@instagibbs
Copy link
Member

"Progress increase per hour" is a bit weird sounding to me, maybe "Sync progress per hour"?

@laanwj
Copy link
Member

laanwj commented Jul 20, 2016

Looks very nice!

@laanwj
Copy link
Member

laanwj commented Jul 28, 2016

  • Looks like the font color should not depend on the theme?
    overlay
  • Maybe add some more text after "...but this process has not completed yet", to make it more concrete "this means that recent transactions will not be visible, and the balance will not be up-to-date until this process has completed."

@jonasschnelli jonasschnelli force-pushed the 2016/07/UI-out-of-sync branch from 476b1c7 to 4b25f0e Compare July 28, 2016 09:44
@jonasschnelli
Copy link
Contributor Author

Added the second info text and made sure, the font will be blackish (force push).

@jonasschnelli jonasschnelli added this to the 0.14 milestone Jul 28, 2016
@fanquake
Copy link
Member

fanquake commented Aug 8, 2016

Testing this, and clicking hide doesn't seem to do anything?
Also, If your opening a close-to, or recently synced wallet, should the modal disappear automatically once it reaches 100%?

OS X screenshots:
modal
full-wallet

Also, this looks like a new compiler warning.

  CXX      qt/qt_libbitcoinqt_a-bitcoingui.o
qt/bitcoingui.cpp:118:5: warning: field 'spinnerFrame' will be initialized after field 'modalOverlay' [-Wreorder]
    spinnerFrame(0),
    ^
1 warning generated.

@jonasschnelli
Copy link
Contributor Author

@fanquake: It should hide automatically if you are in sync,.. but only, If you haven't opened it manually (by pressing the warning icons).
Not sure if it should also hide in that case, but probably.

@Joukehofman
Copy link

Look great! Maybe add to the warning text that it's also not possible to send bitcoins?

@jonasschnelli jonasschnelli force-pushed the 2016/07/UI-out-of-sync branch from 4b25f0e to c6d09ee Compare August 26, 2016 07:49
@jonasschnelli
Copy link
Contributor Author

Fixed warning. Added a short text passage "Spending bitcoins is not possible during that phase!".

@sipa
Copy link
Member

sipa commented Aug 26, 2016

Does the "This process is not complete yet" disappear when 100% is reached, but the window is still open?

@jonasschnelli jonasschnelli force-pushed the 2016/07/UI-out-of-sync branch from c6d09ee to cd57920 Compare August 26, 2016 07:53
@jonasschnelli
Copy link
Contributor Author

@sipa: yes. It will (https://github.com/bitcoin/bitcoin/pull/8371/files#diff-0db7dd184df07a48c307ccc182021a68R776). But only if you not have manually opened the "window" by clicking on the alert icons (then it will stay intentionally).

@sipa
Copy link
Member

sipa commented Aug 26, 2016 via email

@jonasschnelli
Copy link
Contributor Author

Ah. I get your point. Maybe force closing then would make sense (or changing the text in the upper section [more complicate]).

@sipa
Copy link
Member

sipa commented Aug 26, 2016 via email

@maflcko
Copy link
Member

maflcko commented Aug 26, 2016

I think force closing is fine.

Agree

@jonasschnelli jonasschnelli force-pushed the 2016/07/UI-out-of-sync branch from cd57920 to 559d7e9 Compare August 26, 2016 09:25
@jonasschnelli jonasschnelli force-pushed the 2016/07/UI-out-of-sync branch from 559d7e9 to e3245b4 Compare August 26, 2016 09:34
@jonasschnelli
Copy link
Contributor Author

Updated so that the layer/window does force close when the we detect in-sync state.

@sipa
Copy link
Member

sipa commented Aug 26, 2016

The "number of blocks left" goes up and down for a while (presumably because the headers aren't processed yet?)... if the tip header is too far in the past, it may be better to say "unknown" there.

@fanquake
Copy link
Member

Updated OS X screenshot, the hiding issue seems to be fixed now.
modal

@luke-jr
Copy link
Member

luke-jr commented Sep 10, 2016

Looks like the font color should not depend on the theme?

Rather, the background colour should depend on the theme also? Why is this overriding the theme?

</font>
</property>
<property name="text">
<string>This means that recent transactions will not be visible, and the balance will not be up-to-date until this process has completed. Spending bitcoins is not possible during that phase!</string>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe

s/possible/recommended/

?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or what about [...]Spending bitcoins may not be possible[...]?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine, I think either is better.

@jonasschnelli
Copy link
Contributor Author

Force pushed a text- and bold-section-change.
This is how it looks now:
bildschirmfoto 2016-09-23 um 15 31 38

@maflcko
Copy link
Member

maflcko commented Sep 23, 2016

Are you sure you pushed the text change?

@jonasschnelli
Copy link
Contributor Author

Pushed now..

@maflcko
Copy link
Member

maflcko commented Sep 23, 2016

ACK 08827df

@jonasschnelli jonasschnelli merged commit 08827df into bitcoin:master Sep 23, 2016
jonasschnelli added a commit that referenced this pull request Sep 23, 2016
08827df [Qt] modalinfolayer: removed unused comments, renamed signal, code style overhaul (Jonas Schnelli)
d8b062e [Qt] only update "amount of blocks left" when the header chain is in-sync (Jonas Schnelli)
e3245b4 [Qt] add out-of-sync modal info layer (Jonas Schnelli)
e47052f [Qt] ClientModel add method to get the height of the header chain (Jonas Schnelli)
a001f18 [Qt] Always pass the numBlocksChanged signal for headers tip changed (Jonas Schnelli)
bd44a04 [Qt] make Out-Of-Sync warning icon clickable (Jonas Schnelli)
0904c3c [Refactor] refactor function that forms human readable text out of a timeoffset (Jonas Schnelli)
@@ -234,7 +250,7 @@ static void BlockTipChanged(ClientModel *clientmodel, bool initialSync, const CB
int64_t& nLastUpdateNotification = fHeader ? nLastHeaderTipUpdateNotification : nLastBlockTipUpdateNotification;

// if we are in-sync, update the UI regardless of last update time
if (!initialSync || now - nLastUpdateNotification > MODEL_UPDATE_DELAY) {
if (fHeader || !initialSync || now - nLastUpdateNotification > MODEL_UPDATE_DELAY) {
Copy link
Member

@maflcko maflcko Sep 25, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

Oh, nvm. It is needed so a header update is not accidentally lost. Still, this makes the gui unresponsive when -reindex is used...

@murchandamus
Copy link
Contributor

murchandamus commented Sep 26, 2016

Instead of "this process" and "that phase" I would repeat "synchronization":

The displayed information may be out of date.
Your wallet automatically synchronizes with the Bitcoin network while connected, but synchronization has not completed yet. Recent transactions will not be visible until your wallet catches up to the network. Your balance will update as transactions are processed.
Spending bitcoins may not be possible until synchronization has finished.

luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Oct 20, 2016
@laanwj laanwj mentioned this pull request Oct 20, 2016
@sipa sipa mentioned this pull request Jan 10, 2017
18 tasks
codablock pushed a commit to codablock/dash that referenced this pull request Sep 7, 2017
08827df [Qt] modalinfolayer: removed unused comments, renamed signal, code style overhaul (Jonas Schnelli)
d8b062e [Qt] only update "amount of blocks left" when the header chain is in-sync (Jonas Schnelli)
e3245b4 [Qt] add out-of-sync modal info layer (Jonas Schnelli)
e47052f [Qt] ClientModel add method to get the height of the header chain (Jonas Schnelli)
a001f18 [Qt] Always pass the numBlocksChanged signal for headers tip changed (Jonas Schnelli)
bd44a04 [Qt] make Out-Of-Sync warning icon clickable (Jonas Schnelli)
0904c3c [Refactor] refactor function that forms human readable text out of a timeoffset (Jonas Schnelli)
UdjinM6 pushed a commit to dashpay/dash that referenced this pull request Sep 9, 2017
* Merge bitcoin#7506: Use CCoinControl selection in CWallet::FundTransaction

d6cc6a1 Use CCoinControl selection in CWallet::FundTransaction (João Barbosa)

* Merge bitcoin#7732: [Qt] Debug window: replace "Build date" with "Datadir"

fc737d1 [Qt] remove unused formatBuildDate method (Jonas Schnelli)
4856f1d [Qt] Debug window: replace "Build date" with "Datadir" (Jonas Schnelli)

* Merge bitcoin#7707: [RPC][QT] UI support for abandoned transactions

8efed3b [Qt] Support for abandoned/abandoning transactions (Jonas Schnelli)

* Merge bitcoin#7688: List solvability in listunspent output and improve help

c3932b3 List solvability in listunspent output and improve help (Pieter Wuille)

* Merge bitcoin#8006: Qt: Add option to disable the system tray icon

8b0e497 Qt: Add option to hide the system tray icon (Tyler Hardin)

* Merge bitcoin#8073: qt: askpassphrasedialog: Clear pass fields on accept

02ce2a3 qt: askpassphrasedialog: Clear pass fields on accept (Pavel Vasin)

* Merge bitcoin#8231: [Qt] fix a bug where the SplashScreen will not be hidden during startup

b3e1348 [Qt] fix a bug where the SplashScreen will not be hidden during startup (Jonas Schnelli)

* Merge bitcoin#8257: Do not ask a UI question from bitcoind

1acf1db Do not ask a UI question from bitcoind (Pieter Wuille)

* Merge bitcoin#8463: [qt] Remove Priority from coincontrol dialog

fa8dd78 [qt] Remove Priority from coincontrol dialog (MarcoFalke)

* Merge bitcoin#8678: [Qt][CoinControl] fix UI bug that could result in paying unexpected fee

0480293 [Qt][CoinControl] fix UI bug that could result in paying unexpected fee (Jonas Schnelli)

* Merge bitcoin#8672: Qt: Show transaction size in transaction details window

c015634 qt: Adding transaction size to transaction details window (Hampus Sjöberg)
 \-- merge fix for s/size/total size/
fdf82fb Adding method GetTotalSize() to CTransaction (Hampus Sjöberg)

* Merge bitcoin#8371: [Qt] Add out-of-sync modal info layer

08827df [Qt] modalinfolayer: removed unused comments, renamed signal, code style overhaul (Jonas Schnelli)
d8b062e [Qt] only update "amount of blocks left" when the header chain is in-sync (Jonas Schnelli)
e3245b4 [Qt] add out-of-sync modal info layer (Jonas Schnelli)
e47052f [Qt] ClientModel add method to get the height of the header chain (Jonas Schnelli)
a001f18 [Qt] Always pass the numBlocksChanged signal for headers tip changed (Jonas Schnelli)
bd44a04 [Qt] make Out-Of-Sync warning icon clickable (Jonas Schnelli)
0904c3c [Refactor] refactor function that forms human readable text out of a timeoffset (Jonas Schnelli)

* Merge bitcoin#8805: Trivial: Grammar and capitalization

c9ce17b Trivial: Grammar and capitalization (Derek Miller)

* Merge bitcoin#8885: gui: fix ban from qt console

cb78c60 gui: fix ban from qt console (Cory Fields)

* Merge bitcoin#8821: [qt] sync-overlay: Don't block during reindex

fa85e86 [qt] sync-overlay: Don't show estimated number of headers left (MarcoFalke)
faa4de2 [qt] sync-overlay: Don't block during reindex (MarcoFalke)

* Support themes for new transaction_abandoned icon

* Fix constructor call to COutput

* Merge bitcoin#7842: RPC: do not print minping time in getpeerinfo when no ping received yet

62a6486 RPC: do not print ping info in getpeerinfo when no ping received yet, fix help (Pavel Janík)

* Merge bitcoin#8918: Qt: Add "Copy URI" to payment request context menu

21f5a63 Qt: Add "Copy URI" to payment request context menu (Luke Dashjr)

* Merge bitcoin#8925: qt: Display minimum ping in debug window.

1724a40 Display minimum ping in debug window. (R E Broadley)

* Merge bitcoin#8972: [Qt] make warnings label selectable (jonasschnelli)

ef0c9ee [Qt] make warnings label selectable (Jonas Schnelli)

* Make background of warning icon transparent in modaloverlay

* Merge bitcoin#9088: Reduce ambiguity of warning message

77cbbd9 Make warning message about wallet balance possibly being incorrect less ambiguous. (R E Broadley)

* Replace Bitcoin with Dash in modal overlay

* Remove clicked signals from labelWalletStatus and labelTransactionsStatus

As both are really just labels, clicking on those is not possible.
This is different in Bitcoin, where these labels are actually buttons.

* Pull out modaloverlay show/hide into it's own if/else block and switch to time based check

Also don't use masternodeSync.IsBlockchainSynced() for now as it won't
report the blockchain being synced before the first block (or other MN
data?) arrives. This would otherwise give the impression that sync is
being stuck.
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Sep 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.