// Ryzom Core - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This source file has been modified by the following contributors: // Copyright (C) 2014 Jan BOON (Kaetemi) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #include "splash_screen.h" #include #include #include #include SplashScreen::SplashScreen() : QSplashScreen() { progress = 0; textX = 5; textY = 20; pbLeft = 2; pbTop = 0; pbWidth = 100; pbHeight = 20; } SplashScreen::~SplashScreen() { } void SplashScreen::setPixmap( const QPixmap &pixmap ) { QSplashScreen::setPixmap( pixmap ); if( this->pixmap().width() > 0 ) pbWidth = this->pixmap().width() - 4; if( this->pixmap().height() > 0 ) pbTop = this->pixmap().height() - pbHeight - 2; textY = pbTop - pbHeight / 2; } void SplashScreen::setText( const QString &text ) { this->text = text; repaint(); QCoreApplication::instance()->processEvents(); } void SplashScreen::clearText() { setText( "" ); } void SplashScreen::setProgress( int percent ) { progress = percent; repaint(); QCoreApplication::instance()->processEvents(); } void SplashScreen::advanceProgress( int percent ) { progress += percent; repaint(); QCoreApplication::instance()->processEvents(); } void SplashScreen::drawContents( QPainter *painter ) { QSplashScreen::drawContents( painter ); if( progressBarEnabled ) { QStyleOptionProgressBarV2 pbStyle; pbStyle.initFrom( this ); pbStyle.state = QStyle::State_Enabled; pbStyle.textVisible = false; pbStyle.minimum = 0; pbStyle.maximum = 100; pbStyle.progress = progress; pbStyle.invertedAppearance = false; pbStyle.rect = QRect( pbLeft, pbTop, pbWidth, pbHeight ); style()->drawControl( QStyle::CE_ProgressBar, &pbStyle, painter, this ); } if( !text.isEmpty() ) { QPen oldPen = painter->pen(); QPen pen; pen.setColor( Qt::white ); painter->setPen( pen ); painter->drawText( textX, textY, text ); painter->setPen( oldPen ); } }