From b8b11e59aadb7bf48cbf5bb0b24938e39b60370d Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Sat, 23 Nov 2013 20:57:38 +0100 Subject: [PATCH] Improved splash screen. --- LameXP_VS2013.vcxproj.filters | 4 +- etc/Translation/Blank.ts | 10 +- etc/Translation/LameXP_PL.ts | 10 +- etc/Translation/LameXP_SV.ts | 10 +- gui/SplashScreen.ui | 199 ++++++++++------------------------ res/Images.qrc | 8 +- res/images/Loading4.gif | Bin 0 -> 17741 bytes res/images/Logo.png | Bin 4898 -> 7907 bytes src/Config.h | 4 +- src/Dialog_SplashScreen.cpp | 8 +- src/Global.h | 1 + src/Global_Win32.cpp | 57 ++++++++++ src/Thread_Initialization.cpp | 2 +- 13 files changed, 144 insertions(+), 169 deletions(-) create mode 100644 res/images/Loading4.gif diff --git a/LameXP_VS2013.vcxproj.filters b/LameXP_VS2013.vcxproj.filters index 1bd46623..5377dab5 100644 --- a/LameXP_VS2013.vcxproj.filters +++ b/LameXP_VS2013.vcxproj.filters @@ -555,9 +555,6 @@ Header Files\Misc\3rd Party - - Header Files\Threads - @@ -761,6 +758,7 @@ Resources + diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 56893d71..ad9d629d 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -3300,22 +3300,22 @@ QApplication - + Executable '%1' doesn't support Windows compatibility mode. - + Executable '%1' requires Qt v%2, but found Qt v%3. - + Executable '%1' was built for Qt '%2', but found Qt '%3'. - + Executable '%1' requires Windows XP or later. @@ -3336,7 +3336,7 @@ SplashScreen - + LameXP is launching... diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 5102610f..05891979 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -3337,22 +3337,22 @@ QApplication - + Executable '%1' doesn't support Windows compatibility mode. Plik wykonywalny '%1' nie działa w trybie kompatybilności z Windows. - + Executable '%1' requires Qt v%2, but found Qt v%3. Plik wykonywalny '%1' wymaga Qt v%2, znaleziono jednak Qt v%3. - + Executable '%1' was built for Qt '%2', but found Qt '%3'. Plik wykonywalny "%1" został skompilowany dla Qt "%2", znaleziono "%3". - + Executable '%1' requires Windows XP or later. @@ -3373,7 +3373,7 @@ SplashScreen - + LameXP is launching... LameXP właśnie odpala... diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts index 9da779ed..998c72d6 100644 --- a/etc/Translation/LameXP_SV.ts +++ b/etc/Translation/LameXP_SV.ts @@ -3320,22 +3320,22 @@ QApplication - + Executable '%1' doesn't support Windows compatibility mode. EXE-filen '%1' stöder inte Windows kompatibilitetsläge. - + Executable '%1' requires Qt v%2, but found Qt v%3. EXE-filen '%1' kräver Qt v%2, du har Qt v%3. - + Executable '%1' was built for Qt '%2', but found Qt '%3'. EXE-filen '%1' är byggd för Qt '%2', du har Qt '%3'. - + Executable '%1' requires Windows XP or later. @@ -3356,7 +3356,7 @@ SplashScreen - + LameXP is launching... LameXP startar... diff --git a/gui/SplashScreen.ui b/gui/SplashScreen.ui index 8348b3d0..2de3a726 100644 --- a/gui/SplashScreen.ui +++ b/gui/SplashScreen.ui @@ -6,22 +6,10 @@ 0 0 - 256 - 82 + 378 + 116 - - - 256 - 82 - - - - - 256 - 82 - - @@ -116,6 +104,10 @@ LameXP is launching... + + + :/images/Loading2.gif:/images/Loading2.gif + true @@ -125,137 +117,58 @@ 0 - - - - 50 - 69 - 192 - 6 - + + + 24 - - - 192 - 6 - + + 32 - - - 192 - 6 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - - - - - - :/images/Loading.gif - - - Qt::AlignCenter - - - - - - 1 - 1 - 256 - 82 - - - - - 256 - 82 - - - - - 256 - 82 - - - - - - - :/images/Logo.png - - - false - - - labelLogo - labelLoading + + + + 8 + + + + + + + + :/images/Starting.png + + + + + + + 4 + + + + + + + + :/images/Logo.png + + + + + + + + + + :/images/Loading4.gif + + + + + + + + diff --git a/res/Images.qrc b/res/Images.qrc index de9857ab..cba56566 100644 --- a/res/Images.qrc +++ b/res/Images.qrc @@ -15,14 +15,16 @@ images/Loading.gif images/Loading2.gif images/Loading3.gif - images/Logo.png + images/Loading4.gif + images/Logo.png images/Logo_Contributors.png images/Logo_GNU.png images/Logo_Software.png images/Qt.svg images/Splash.png - images/Sound.png - images/Thumb.png + images/Sound.png + images/Starting.png + images/Thumb.png images/Wizard.png images/Working.gif diff --git a/res/images/Loading4.gif b/res/images/Loading4.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b0e0b469062be5ccd12e979655c82a78e617f1c GIT binary patch literal 17741 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 N002ovPDHLkV1i*YO)3BY literal 4898 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 LzIu(CO~iiyNpB9a diff --git a/src/Config.h b/src/Config.h index c668d235..a5e4232f 100644 --- a/src/Config.h +++ b/src/Config.h @@ -34,8 +34,8 @@ #define VER_LAMEXP_MINOR_HI 0 #define VER_LAMEXP_MINOR_LO 9 #define VER_LAMEXP_TYPE Alpha -#define VER_LAMEXP_PATCH 7 -#define VER_LAMEXP_BUILD 1458 +#define VER_LAMEXP_PATCH 8 +#define VER_LAMEXP_BUILD 1462 #define VER_LAMEXP_CONFG 1348 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Dialog_SplashScreen.cpp b/src/Dialog_SplashScreen.cpp index c4c65453..afb9b8ee 100644 --- a/src/Dialog_SplashScreen.cpp +++ b/src/Dialog_SplashScreen.cpp @@ -61,7 +61,7 @@ SplashScreen::SplashScreen(QWidget *parent) setupUi(this); //Make size fixed - setFixedSize(this->size()); + setFixedSize(this->maximumSize()); //Create event loop m_loop = new QEventLoop(this); @@ -74,8 +74,12 @@ SplashScreen::SplashScreen(QWidget *parent) //Connect timer to slot connect(m_timer, SIGNAL(timeout()), this, SLOT(updateHandler())); + //Enable "sheet of glass" effect on splash screen + lamexp_sheet_of_glass(this); + //Start animation - m_working = new QMovie(":/images/Loading.gif"); + m_working = new QMovie(":/images/Loading4.gif"); + m_working->setCacheMode(QMovie::CacheAll); labelLoading->setMovie(m_working); m_working->start(); diff --git a/src/Global.h b/src/Global.h index bebdf305..3be801c5 100644 --- a/src/Global.h +++ b/src/Global.h @@ -194,6 +194,7 @@ QString lamexp_rand_str(const bool bLong = false); void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version = 0, const QString *tag = NULL); bool lamexp_remove_file(const QString &filename); void lamexp_seed_rand(void); +bool lamexp_sheet_of_glass(QWidget *window); bool lamexp_shutdown_computer(const QString &message, const unsigned long timeout = 30, const bool forceShutdown = true, const bool hibernate = false); void lamexp_sleep(const unsigned int delay); const char *lamexp_support_url(void); diff --git a/src/Global_Win32.cpp b/src/Global_Win32.cpp index a22ab446..19cf3beb 100644 --- a/src/Global_Win32.cpp +++ b/src/Global_Win32.cpp @@ -38,6 +38,7 @@ #include #include #include +#include //Qt includes #include @@ -1845,6 +1846,62 @@ bool lamexp_open_media_file(const QString &mediaFilePath) return false; } +bool lamexp_sheet_of_glass(QWidget *window) +{ + typedef HRESULT (__stdcall *dwmExtendFrameIntoClientArea_t)(HWND hWnd, const MARGINS* pMarInset); + typedef HRESULT (__stdcall *dwmEnableBlurBehindWindow_t)(HWND hWnd, const DWM_BLURBEHIND* pBlurBehind); + + //Does OS support DWM? + if(lamexp_get_os_version() < lamexp_winver_vista) + { + return false; + } + + //Load DWMAPI.DLL + QLibrary libDwm("dwmapi.dll"); + if(!libDwm.load()) + { + qWarning("Failed to load DWMAPI.DLL on a DWM-enabled system!"); + return false; + } + + //Lookup required functions + dwmExtendFrameIntoClientArea_t dwmExtendFrameIntoClientArea = (dwmExtendFrameIntoClientArea_t) libDwm.resolve("DwmExtendFrameIntoClientArea"); + dwmEnableBlurBehindWindow_t dwmEnableBlurBehindWindow = (dwmEnableBlurBehindWindow_t) libDwm.resolve("DwmEnableBlurBehindWindow"); + + //Check function pointers + if((dwmExtendFrameIntoClientArea == NULL) || (dwmEnableBlurBehindWindow == NULL)) + { + qWarning("Required functions are missing from DWMAPI.DLL on a DWM-enabled system!"); + return false; + } + + //Enable the "sheet of glass" effect on this window + MARGINS margins = {-1, -1, -1, -1}; + if(HRESULT hr = dwmExtendFrameIntoClientArea(window->winId(), &margins)) + { + qWarning("DwmExtendFrameIntoClientArea function has failed! (error %d)", hr); + return false; + } + + //Create and populate the Blur Behind structure + DWM_BLURBEHIND bb; + memset(&bb, 0, sizeof(DWM_BLURBEHIND)); + bb.fEnable = TRUE; + bb.dwFlags = DWM_BB_ENABLE; + if(HRESULT hr = dwmEnableBlurBehindWindow(window->winId(), &bb)) + { + qWarning("DwmEnableBlurBehindWindow function has failed! (error %d)", hr); + return false; + } + + //Required for Qt + window->setAttribute(Qt::WA_TranslucentBackground); + window->setAttribute(Qt::WA_NoSystemBackground); + + return true; +} + /* * Fatal application exit */ diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp index a3e03a90..445804d1 100644 --- a/src/Thread_Initialization.cpp +++ b/src/Thread_Initialization.cpp @@ -472,7 +472,7 @@ void InitializationThread::runBenchmark(void) void InitializationThread::delay(void) { - __noop(); + lamexp_sleep(333); } void InitializationThread::initTranslations(void)