Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
splash_screen [16/08/2008 11:49]
127.0.0.1 modification externe
splash_screen [20/11/2014 13:01] (Version actuelle)
Ligne 1: Ligne 1:
 +====== 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//
 +
 +<code diff>
 +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<​QWidget *> 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 @@
 + ​ <​file>​ico/​send_backward.png</​file>​
 + ​ <​file>​ico/​sortir_fs.png</​file>​
 + ​ <​file>​ico/​south.png</​file>​
 ++ <​file>​ico/​splash.png</​file>​
 + ​ <​file>​ico/​terminal.png</​file>​
 + ​ <​file>​ico/​text.png</​file>​
 + ​ <​file>​ico/​textfield.png</​file>​
 +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"​));​
 + 
 +</​code>​
 +
 +====== 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//
Imprimer/exporter