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

Fichier SVG

Et son fichier SVG réalisé par Cyril Frausti.

version 0.2

Un premier test fait par Benoît

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 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 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<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"));
 

version 0.11

Splash v0.11 Upload du splash estampillé “0.11 dév” pour la news du 03/08/08— Xavier G. 2008/08/03 20:12

Imprimer/exporter