#include "lts_background_widget.h" #include #include #include #ifdef Q_OS_WIN #include #endif namespace LtsWidgets { LtsBackgroundWidget::LtsBackgroundWidget(QWidget *parent) : QDialog(parent) , m_isUltraWide(false) { setMouseTracking(true); setWindowFlags(windowFlags() | Qt::FramelessWindowHint ); setWindowTitle(QStringLiteral("Splash")); setBackground(); } void LtsBackgroundWidget::setBackground() { static const auto backgroundFiles = { QStringLiteral(":/project/background.png"), QStringLiteral(":/project/background.jpg"), }; static const auto backgroundFilesWide = { QStringLiteral(":/project/background_wide.png"), QStringLiteral(":/project/background_wide.jpg"), }; m_pixmap = QPixmap(); for (const QString &f : m_isUltraWide ? backgroundFilesWide : backgroundFiles) { if (!QFile::exists(f)) continue; m_pixmap = QPixmap(f); if (m_pixmap.isNull()) continue; break; } if (m_pixmap.isNull()) { if (m_isUltraWide) { m_isUltraWide = false; setBackground(); } else { qWarning() << "BackgroundWidget::c_tor: file missing or is not a valid image ':/project/background.png'"; } } } void LtsBackgroundWidget::setUltraWide(bool set) { if (set == m_isUltraWide) return; m_isUltraWide = set; setBackground(); update(); } void LtsBackgroundWidget::resizeEvent(QResizeEvent *e) { setUltraWide(width() > 3000); QDialog::resizeEvent(e); } void LtsBackgroundWidget::paintEvent(QPaintEvent *e) { if (!m_pixmap.isNull()) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); painter.drawPixmap(0, 0, width(), height(), m_pixmap); } QDialog::paintEvent(e); } bool LtsBackgroundWidget::event(QEvent *e) { if (e->type() == QEvent::KeyPress || e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonRelease || e->type() == QEvent::MouseMove) { emit signalOperatorAction(); e->ignore(); return true; } return QDialog::event(e); } void LtsBackgroundWidget::showFullScreen() { #ifdef Q_OS_WIN winId(); QWindowsWindowFunctions::setHasBorderInFullScreen(windowHandle(), true); #endif QDialog::showFullScreen(); raise(); } void LtsBackgroundWidget::closeEvent(QCloseEvent *e) { #ifdef DEVEL deleteLater(); #else e->ignore(); #endif } }