First iteration of the new splash screen.
--HG-- branch : gsoc2014-dfighterhg/feature/cdb-packed
parent
1d23a092c1
commit
c15eebaadf
@ -0,0 +1,85 @@
|
||||
#include "splash_screen.h"
|
||||
#include <QPainter>
|
||||
#include <QStyleOptionProgressBarV2>
|
||||
#include <QCoreApplication>
|
||||
#include <QPixmap>
|
||||
|
||||
SplashScreen::SplashScreen() :
|
||||
QSplashScreen()
|
||||
{
|
||||
progress = 0;
|
||||
textX = 5;
|
||||
textY = 20;
|
||||
pbLeft = 0;
|
||||
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();
|
||||
|
||||
if( this->pixmap().height() > 0 )
|
||||
pbTop = this->pixmap().height() - pbHeight;
|
||||
|
||||
textY = pbTop - pbHeight;
|
||||
}
|
||||
|
||||
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::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( 0, 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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,42 @@
|
||||
#ifndef SPLASH_SCREEN_H
|
||||
#define SPLASH_SCREEN_H
|
||||
|
||||
|
||||
#include <QSplashScreen>
|
||||
|
||||
class SplashScreen : public QSplashScreen
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SplashScreen();
|
||||
~SplashScreen();
|
||||
|
||||
void setPixmap( const QPixmap &pixmap );
|
||||
|
||||
void setText( const QString &text );
|
||||
void clearText();
|
||||
void setTextXY( int x, int y ){ textX = x; textY = y; }
|
||||
void setProgress( int percent );
|
||||
|
||||
void setProgressBarEnabled( bool b ){ progressBarEnabled = b; }
|
||||
void setProgressBarRect( int left, int top, int width, int height ){}
|
||||
|
||||
protected:
|
||||
void drawContents( QPainter *painter );
|
||||
|
||||
private:
|
||||
int progress;
|
||||
int pbLeft;
|
||||
int pbTop;
|
||||
int pbWidth;
|
||||
int pbHeight;
|
||||
|
||||
QString text;
|
||||
int textX;
|
||||
int textY;
|
||||
|
||||
bool progressBarEnabled;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue