File indexing completed on 2024-04-21 04:50:14

0001 /*
0002     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "k3bsplash.h"
0008 #include "k3bthememanager.h"
0009 #include "k3bapplication.h"
0010 
0011 #include <KAboutData>
0012 
0013 #include <QEvent>
0014 #include <QString>
0015 #include <QFontMetrics>
0016 #include <QPainter>
0017 #include <QPixmap>
0018 #include <QApplication>
0019 #include <QLabel>
0020 #include <QScreen>
0021 #include <QVBoxLayout>
0022 
0023 K3b::Splash::Splash( QWidget* parent )
0024     : QWidget( parent)
0025 {
0026     setAttribute( Qt::WA_DeleteOnClose );
0027     setWindowFlags(Qt::FramelessWindowHint|
0028                    Qt::SplashScreen|
0029                    Qt::WindowStaysOnTopHint|
0030                    Qt::X11BypassWindowManagerHint);
0031 
0032     QPalette pal( palette() );
0033     pal.setColor( QPalette::Window, Qt::black );
0034     pal.setColor( QPalette::WindowText, Qt::white );
0035     setPalette( pal );
0036 
0037     QLabel* copyrightLabel = new QLabel( KAboutData::applicationData().copyrightStatement(), this );
0038     copyrightLabel->setContentsMargins( 5, 5, 5, 5 );
0039     copyrightLabel->setAlignment( Qt::AlignRight );
0040 
0041     QLabel* picLabel = new QLabel( this );
0042     if( K3b::Theme* theme = k3bappcore->themeManager()->currentTheme() ) {
0043         picLabel->setPalette( theme->palette() );
0044         picLabel->setPixmap( theme->pixmap( K3b::Theme::SPLASH ) );
0045     }
0046 
0047     m_infoBox = new QLabel( this );
0048     m_infoBox->setContentsMargins( 5, 5, 5, 5 );
0049 
0050     QVBoxLayout* layout = new QVBoxLayout( this );
0051     layout->setContentsMargins( 0, 0, 0, 0 );
0052     layout->setSpacing( 0 );
0053     layout->addWidget( copyrightLabel );
0054     layout->addWidget( picLabel );
0055     layout->addWidget( m_infoBox );
0056 
0057     // Set geometry, with support for Xinerama systems
0058     QRect r;
0059     r.setSize(sizeHint());
0060     const QScreen *ps = QGuiApplication::primaryScreen();
0061     r.moveCenter( ps->geometry().center() );
0062     setGeometry(r);
0063 }
0064 
0065 
0066 K3b::Splash::~Splash()
0067 {
0068 }
0069 
0070 
0071 void K3b::Splash::mousePressEvent( QMouseEvent* )
0072 {
0073     close();
0074 }
0075 
0076 
0077 void K3b::Splash::show()
0078 {
0079     QWidget::show();
0080     // make sure the splash screen is shown immediately
0081     qApp->processEvents();
0082 }
0083 
0084 
0085 void K3b::Splash::addInfo( const QString& s )
0086 {
0087     m_infoBox->setText( s );
0088 
0089     qApp->processEvents();
0090 }
0091 
0092 
0093 void K3b::Splash::hide()
0094 {
0095     QWidget::hide();
0096     qApp->processEvents();
0097 }
0098 
0099 #include "moc_k3bsplash.cpp"