#include "lts_splash.h" #include #include #include #include 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; } }