1 // Copyright (c) 2011-2018 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #ifndef BITCOIN_QT_SPLASHSCREEN_H 6 #define BITCOIN_QT_SPLASHSCREEN_H 7 8 #include <QWidget> 9 10 #include <memory> 11 12 class NetworkStyle; 13 14 namespace interfaces { 15 class Handler; 16 class Node; 17 class Wallet; 18 }; 19 20 /** Class for the splashscreen with information of the running client. 21 * 22 * @note this is intentionally not a QSplashScreen. Bitcoin Core initialization 23 * can take a long time, and in that case a progress window that cannot be 24 * moved around and minimized has turned out to be frustrating to the user. 25 */ 26 class SplashScreen : public QWidget 27 { 28 Q_OBJECT 29 30 public: 31 explicit SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle); 32 ~SplashScreen(); 33 34 protected: 35 void paintEvent(QPaintEvent *event); 36 void closeEvent(QCloseEvent *event); 37 38 public Q_SLOTS: 39 /** Hide the splash screen window and schedule the splash screen object for deletion */ 40 void finish(); 41 42 /** Show message and progress */ 43 void showMessage(const QString &message, int alignment, const QColor &color); 44 45 protected: 46 bool eventFilter(QObject * obj, QEvent * ev); 47 48 private: 49 /** Connect core signals to splash screen */ 50 void subscribeToCoreSignals(); 51 /** Disconnect core signals to splash screen */ 52 void unsubscribeFromCoreSignals(); 53 /** Connect wallet signals to splash screen */ 54 void ConnectWallet(std::unique_ptr<interfaces::Wallet> wallet); 55 56 QPixmap pixmap; 57 QString curMessage; 58 QColor curColor; 59 int curAlignment; 60 61 interfaces::Node& m_node; 62 std::unique_ptr<interfaces::Handler> m_handler_init_message; 63 std::unique_ptr<interfaces::Handler> m_handler_show_progress; 64 std::unique_ptr<interfaces::Handler> m_handler_load_wallet; 65 std::list<std::unique_ptr<interfaces::Wallet>> m_connected_wallets; 66 std::list<std::unique_ptr<interfaces::Handler>> m_connected_wallet_handlers; 67 }; 68 69 #endif // BITCOIN_QT_SPLASHSCREEN_H 70