====== Splash Screen ====== L'idée est de faire un écran signalant le démarrage de QET le temps de son chargement (et surtout le temps qu'il charge les composants) ====== version 0.3 ====== {{ :qet_splash_simple_0.3.png |}} {{:qet_splash_simple_0.3.svg.zip|Fichier SVG}} {{ :qet_splash_0.3.png |}} Et son {{:qet_splash_0.3.svg.zip|fichier SVG}} réalisé par Cyril Frausti. ====== version 0.2 ====== Un premier test fait par Benoît {{:spash_test_1.png|Premier test}} À noter que sur ma machine, et sur celle de Nishiki, le temps de démarrage de QET est toujours inférieur à 5 secondes. De plus, le détail sur le chargement des composants ne sera vraiment possible qu'en version 0.2, lorsque l'application charge les collections __avant__ d'afficher le moindre éditeur. Pour les versions 0.1*, il faudra se contenter de "Chargement... Éditeur de schémas" ou "Chargement... Ouverture des fichiers". Ci-dessous un patch **pour le trunk** pour ajouter le splash screen (ajouter splash.png dans ico/, se rendre dans le dossier qelectrotech, patch -p0 < le_patch) --- //[[xavier.guerrin@gmail.com|Xavier G.]] 2008/08/02 16:17// Splash screen commité dans le trunk. 2008-08-02 16:53 xavierqet * [r362] Ajout d'un splash screen --- //[[xavier.guerrin@gmail.com|Xavier G.]] 2008/08/02 18:54// Index: qetapp.h =================================================================== --- qetapp.h (révision 359) +++ qetapp.h (copie de travail) @@ -84,6 +84,7 @@ QTranslator qtTranslator; QTranslator qetTranslator; QSystemTrayIcon *qsti; + QSplashScreen *splash_screen_; QMenu *menu_systray; QAction *quitter_qet; QAction *reduce_appli; @@ -136,6 +137,8 @@ private: QList floatingToolbarsAndDocksForMainWindow(QMainWindow *) const; void parseArguments(); + void initSplashScreen(); + void setSplashScreenStep(const QString & = QString()); void initLanguage(); void initStyle(); void initConfiguration(); Index: qelectrotech.qrc =================================================================== --- qelectrotech.qrc (révision 358) +++ qelectrotech.qrc (copie de travail) @@ -64,6 +64,7 @@ ico/send_backward.png ico/sortir_fs.png ico/south.png + ico/splash.png ico/terminal.png ico/text.png ico/textfield.png Index: qetapp.cpp =================================================================== --- qetapp.cpp (révision 359) +++ qetapp.cpp (copie de travail) @@ -37,6 +37,7 @@ */ QETApp::QETApp(int &argc, char **argv) : QETSingleApplication(argc, argv, QString("qelectrotech-" + QETApp::userName())), + splash_screen_(0), non_interactive_execution_(false) { parseArguments(); @@ -55,6 +56,7 @@ std::exit(EXIT_SUCCESS); } + initSplashScreen(); initStyle(); initSystemTray(); @@ -72,11 +74,14 @@ // on ouvre soit les fichiers passes en parametre soit un nouvel editeur de projet if (qet_arguments_.files().isEmpty()) { + setSplashScreenStep(tr("Chargement... \311diteur de sch\351mas")); new QETDiagramEditor(); } else { + setSplashScreenStep(tr("Chargement... Ouverture des fichiers")); openFiles(qet_arguments_); } buildSystemTrayMenu(); + splash_screen_ -> hide(); } /// Destructeur @@ -613,6 +618,30 @@ } /** + Initialise le splash screen si et seulement si l'execution est interactive. + Autrement, l'attribut splash_screen_ vaut 0. +*/ +void QETApp::initSplashScreen() { + if (non_interactive_execution_) return; + splash_screen_ = new QSplashScreen(QPixmap(":/ico/splash.png")); + splash_screen_ -> show(); + setSplashScreenStep(tr("Chargement...")); +} + +/** + Change le texte du splash screen et prend en compte les evenements. + Si l'application s'execute de facon non interactive, cette methode ne fait + rien. +*/ +void QETApp::setSplashScreenStep(const QString &message) { + if (!splash_screen_) return; + if (!message.isEmpty()) { + splash_screen_ -> showMessage(message, Qt::AlignBottom | Qt::AlignLeft); + } + processEvents(); +} + +/** Determine et applique le langage a utiliser pour l'application */ void QETApp::initLanguage() { @@ -660,6 +689,7 @@ Construit l'icone dans le systray et son menu */ void QETApp::initSystemTray() { + setSplashScreenStep(tr("Chargement... icône du systray")); // initialisation des menus de l'icone dans le systray menu_systray = new QMenu(tr("QElectroTech")); ====== version 0.11 ====== {{:splash_0.11_dev.png|Splash v0.11}} Upload du splash estampillé "0.11 dév" pour la news du 03/08/08--- //[[xavier.guerrin@gmail.com|Xavier G.]] 2008/08/03 20:12//