Projet

Général

Profil

AbulEduSplashScreenV0

Installation

L'installation de la classe AbulEduSplashScreenV0 se fait dans le dossier lib de votre logiciel, par exemple

git submodule add http://redmine.abuledu.org/ryxeo/leterrier-developpeurs/abuledusplashscreenv0.git src/lib/abuledusplashscreenv0

Mainteneur de la lib:

git clone ssh://gitolite3@redmine.abuledu.org/repositories-redmine/ryxeo/leterrier-developpeurs/abuledusplashscreenv0.git

Modification du fichier .pro

Pensez à modifier votre fichier .pro pour ajouter cette nouvelle lib

#AbulEduSplashScreenV0
include(lib/abuledusplashscreenv0/abuledusplashscreenv0.pri)

Utilisation

Tout se passe dans le fichier main.cpp


.../...
#include "abuledusplashscreenv0.h" 
#include "abuleduapplicationv1.h" 
.../...

int main(int argc, char *argv[])
{
    AbulEduApplicationV1 a(argc, argv,VER_INTERNALNAME_STR, VER_PRODUCTVERSION_STR);
    a.setAbeApplicationLongName(QObject::trUtf8(VER_FILEDESCRIPTION_STR));
    a.setOrganizationDomain(VER_COMPANYDOMAIN_STR);
    a.setOrganizationName("leterrier");

    QString locale = QLocale::system().name().section('_', 0, 0);
    QTranslator translator;
    translator.load("Imageo_"+locale, "./conf/lang");
    a.installTranslator(&translator);
    MainWindow *w;

    QPixmap pixmap("data/splash-imageo.png"); //Ou n'importe quel PNG ayant un canal alpha
    AbulEduSplashScreenV0 *splash = new AbulEduSplashScreenV0(pixmap);
    splash->show();
    for (int i = 1; i <= 5; i++)
    {
        //en attendant de savoir quand
        //On lance le constructeur de la mainwindows en "arrière plan" -> network request etc. c cool
        if(i == 1) {
            w = new MainWindow(0);
        }
        splash->showMessage(QObject::trUtf8("Chargement en cours, merci de patienter ... %1%").arg(QString::number(i*20)), Qt::AlignBottom | Qt::AlignHCenter, Qt::black);
        //tres important si vous voulez que le splash s'affiche !
        qApp->processEvents();
        AbulEduSleeperThread::msleep(1000);
    }
    splash->deleteLater();

    w->showMaximized();

Cette lib devrait nous permettre de créer des splashscreen au lancement des logiciels, mais je suis pour l'instant stoppé par un bug sous linux lorsque compiz n'est pas activé:

Sous linux avec compiz (effets "spéciaux"):

Sous linux sans compiz (effets "spéciaux"):

Sous windows, pas de problème apparemment:

20120301-splashscreen-transparent-linux_sans_compiz.jpg (92,2 ko) Eric Seigne, 01/03/2012 21:17

20120301-splashscreen-transparent-linux_compiz.jpg (85,7 ko) Eric Seigne, 01/03/2012 21:17

20120301-splashscreen-transparent-windows.jpg (95,4 ko) Eric Seigne, 01/03/2012 21:17

Redmine Appliance - Powered by TurnKey Linux