Files
qt6-migration-pipeline/Lts/Common/LtsWidgets/lts_splash.cpp
T

82 lines
1.3 KiB
C++
Executable File

#include "lts_splash.h"
#include <LtsWidgets/lts_global_wait_dialog.h>
#include <QCoreApplication>
#include <QFile>
#include <QEvent>
namespace LtsWidgets
{
Splash::Splash()
: QSplashScreen()
, m_done(false)
{
static const auto splashFiles =
{
QStringLiteral(":/project/splash.png"),
QStringLiteral(":/project/splash.jpg"),
};
for (const QString &f : splashFiles)
{
if (!QFile::exists(f))
continue;
setPixmap(QPixmap(f));
break;
}
}
bool Splash::event(QEvent *e)
{
if (e->type() == QEvent::MouseButtonPress ||
e->type() == QEvent::MouseButtonRelease ||
e->type() == QEvent::MouseButtonDblClick)
{
e->ignore();
return false;
}
return QSplashScreen::event(e);
}
void Splash::setMessage(const QString &message)
{
showMessage(message, Qt::AlignRight | Qt::AlignBottom);
}
void Splash::done()
{
if (m_done)
return;
m_done = true;
hide();
LtsWidgets::LtsGlobalWaitDialog::getInstance()->setVisible(true);
}
static Splash *s_splashInstance = nullptr;
void Splash::cleanupSplashInstance()
{
delete s_splashInstance;
s_splashInstance = nullptr;
}
Splash *Splash::getInstance()
{
if (!s_splashInstance)
{
s_splashInstance = new Splash;
qAddPostRoutine(&Splash::cleanupSplashInstance);
}
return s_splashInstance;
}
}