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 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 | - | - |