Test Details Overview

Show a ledger loading indicator on the wallet splash screen (#5203)

* Give `qt`, `nano_wallet` and `qt_test` their own CMake lists

The three GUI targets were the last ones still defined in the root
list, left there since 2014 while every other component moved into a
list next to its sources. Each now has its own, and the root keeps what
they share: the Qt lookup, the submodules include path and the
packaging rules. Binaries still land in the build root, since the
runtime output directory is set globally, so CI paths are unchanged.

* Show a ledger loading indicator on the wallet splash screen

The wallet constructed the node on the GUI thread, so the splash screen
stopped painting for the minutes a full ledger takes to load and the OS
reported the wallet as not responding. The node is now constructed on a
worker thread while the GUI thread keeps pumping events, and the splash
shows "Loading ledger, this may take a while…" above the logo until the
main window replaces it.

The splash is the only window during the load, so it no longer hides
itself on click, which a stock QSplashScreen does. The seed backup
reminder keeps its place at the bottom, reworded to sentence case.

A Quit from the Dock or Cmd-Q while the node is still loading ends the
wallet right away. The wait runs on a nested Qt event loop rather than
processEvents polling: with no Qt event loop running, the Cocoa delegate
answers a quit with "terminate now" and AppKit calls exit () under the
worker thread still inside the node constructor, leaving the process
unwinding for a while with a generic Dock icon. With the loop running,
Qt hands the quit to it instead. A half-built node cannot be cancelled
or unwound, so the wallet logs the request, flushes the log and ends the
process with _Exit, which the ledger upgrades are written to survive.

* Set the wallet application icon on macOS and Linux

set_application_icon was empty outside Windows, so a bare nano_wallet
binary showed the generic executable icon in the Dock and in Linux
window managers. The packaged .app was unaffected, since its icon comes
from Info.plist. The 512px image from Nano.icns is now in the Qt
resources and set as the application icon right after the application
is created, so the splash screen and error dialogs carry it too.

__________

Type: commit

Hash: 6b6128735b4e736116af0afe4cf3bb2bef0058b7

Created: today

__________

gr0v1ty/nano-node:6b6128735b4e736116af0afe4cf3bb2bef0058b7

Test Results

Test Case Status Duration Median Deviation Log Graph
5n4pr_conf_10k_bintree PASS 118 s 3.0 s - Show
5n4pr_conf_10k_change PASS 196 s 49.0 s - Show
5n4pr_conf_change_dependant PASS 109 s -5.0 s - -
5n4pr_conf_change_independant PASS 118 s 0.0 s - -
5n4pr_conf_send_dependant PASS 120 s 3.5 s - -
5n4pr_conf_send_independant PASS 117 s 2.0 s - -
5n4pr_rocks_10k_bintree PASS 112 s -6.0 s - -
5n4pr_rocks_10k_change PASS 193 s 24.5 s - -