diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,28 @@ if (WIN32) add_definitions(-DW7API) find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS WinExtras) - # TODO set var for LIBS += User32.lib Ole32.lib Shell32.lib ShlWapi.lib Gdi32.lib ComCtl32.lib ? + + # taken from https://stackoverflow.com/a/40217291 + macro(get_WIN32_WINNT version) + if (CMAKE_SYSTEM_VERSION) + set(ver ${CMAKE_SYSTEM_VERSION}) + string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver}) + string(REGEX MATCH "^([0-9]+)" verMajor ${ver}) + # Check for Windows 10, b/c we'll need to convert to hex 'A'. + if ("${verMajor}" MATCHES "10") + set(verMajor "A") + string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver}) + endif ("${verMajor}" MATCHES "10") + # Remove all remaining '.' characters. + string(REPLACE "." "" ver ${ver}) + # Prepend each digit with a zero. + string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver}) + set(${version} "0x${ver}") + endif(CMAKE_SYSTEM_VERSION) + endmacro(get_WIN32_WINNT) + + get_WIN32_WINNT(ver) + add_definitions(-D_WIN32_WINNT=${ver}) endif() # Optional: GnomeKeyring diff --git a/src/lib/app/datapaths.h b/src/lib/app/datapaths.h --- a/src/lib/app/datapaths.h +++ b/src/lib/app/datapaths.h @@ -42,6 +42,7 @@ }; explicit DataPaths(); + ~DataPaths(); // Set absolute path of current profile static void setCurrentProfilePath(const QString &profilePath); diff --git a/src/lib/app/datapaths.cpp b/src/lib/app/datapaths.cpp --- a/src/lib/app/datapaths.cpp +++ b/src/lib/app/datapaths.cpp @@ -31,6 +31,10 @@ init(); } +DataPaths::~DataPaths() +{ +} + // static void DataPaths::setCurrentProfilePath(const QString &profilePath) { diff --git a/src/lib/downloads/downloaditem.cpp b/src/lib/downloads/downloaditem.cpp --- a/src/lib/downloads/downloaditem.cpp +++ b/src/lib/downloads/downloaditem.cpp @@ -39,6 +39,7 @@ #ifdef Q_OS_WIN #include "Shlwapi.h" +#include "shellapi.h" #endif //#define DOWNMANAGER_DEBUG diff --git a/src/lib/other/registerqappassociation.cpp b/src/lib/other/registerqappassociation.cpp --- a/src/lib/other/registerqappassociation.cpp +++ b/src/lib/other/registerqappassociation.cpp @@ -273,53 +273,52 @@ return false; } - if (isWin10OrNewer()) { - IApplicationActivationManager* pActivator; - HRESULT hr = CoCreateInstance(CLSID_ApplicationActivationManager, - nullptr, - CLSCTX_INPROC, - IID_IApplicationActivationManager, - (void**)&pActivator); - - if (!SUCCEEDED(hr)) { - return false; - } - - DWORD pid; - hr = pActivator->ActivateApplication( - L"windows.immersivecontrolpanel_cw5n1h2txyewy" // appUserModelId of "Settings" - L"!microsoft.windows.immersivecontrolpanel", // in Windows Store - L"page=SettingsPageAppsDefaults", AO_NONE, &pid); - - if (!SUCCEEDED(hr)) { - return false; - } +#ifdef _WIN32_WINNT_WIN8 + IApplicationActivationManager* pActivator; + HRESULT hr = CoCreateInstance(CLSID_ApplicationActivationManager, + nullptr, + CLSCTX_INPROC, + IID_IApplicationActivationManager, + (void**)&pActivator); + + if (!SUCCEEDED(hr)) { + return false; + } - // Do not check error because we could at least open - // the "Default apps" setting. - pActivator->ActivateApplication( - L"windows.immersivecontrolpanel_cw5n1h2txyewy" - L"!microsoft.windows.immersivecontrolpanel", - L"page=SettingsPageAppsDefaults" - L"&target=SystemSettings_DefaultApps_Browser", AO_NONE, &pid); + DWORD pid; + hr = pActivator->ActivateApplication( + L"windows.immersivecontrolpanel_cw5n1h2txyewy" // appUserModelId of "Settings" + L"!microsoft.windows.immersivecontrolpanel", // in Windows Store + L"page=SettingsPageAppsDefaults", AO_NONE, &pid); - pActivator->Release(); + if (!SUCCEEDED(hr)) { + return false; } - else { - IApplicationAssociationRegistrationUI* pAARUI = NULL; - HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI, - NULL, CLSCTX_INPROC, __uuidof(IApplicationAssociationRegistrationUI), - reinterpret_cast< void** > (&pAARUI)); + // Do not check error because we could at least open + // the "Default apps" setting. + pActivator->ActivateApplication( + L"windows.immersivecontrolpanel_cw5n1h2txyewy" + L"!microsoft.windows.immersivecontrolpanel", + L"page=SettingsPageAppsDefaults" + L"&target=SystemSettings_DefaultApps_Browser", AO_NONE, &pid); - if (!SUCCEEDED(hr)) { - return false; - } + pActivator->Release(); +#else // Vista or Win7 + IApplicationAssociationRegistrationUI* pAARUI = NULL; + + HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI, + NULL, CLSCTX_INPROC, __uuidof(IApplicationAssociationRegistrationUI), + reinterpret_cast< void** > (&pAARUI)); - hr = pAARUI->LaunchAdvancedAssociationUI(reinterpret_cast(_appRegisteredName.utf16())); - pAARUI->Release(); + if (!SUCCEEDED(hr)) { + return false; } + hr = pAARUI->LaunchAdvancedAssociationUI(reinterpret_cast(_appRegisteredName.utf16())); + pAARUI->Release(); +#endif // _WIN32_WINNT_WIN8 + return true; }