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 [27/01/2013 18:53]
cfdev
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