Merge pull request #284 from dpaulat/feature/qt-6.8.0

Bump dependency Qt to 6.8.0
This commit is contained in:
Dan Paulat 2024-10-17 17:36:12 -05:00 committed by GitHub
commit 72a1697d65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 88 additions and 45 deletions

View file

@ -28,9 +28,9 @@ jobs:
compiler: msvc compiler: msvc
msvc_arch: x64 msvc_arch: x64
msvc_version: 2022 msvc_version: 2022
qt_version: 6.7.2 qt_version: 6.8.0
qt_arch_aqt: win64_msvc2019_64 qt_arch_aqt: win64_msvc2022_64
qt_arch_dir: msvc2019_64 qt_arch_dir: msvc2022_64
qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport
qt_tools: '' qt_tools: ''
conan_arch: x86_64 conan_arch: x86_64
@ -46,7 +46,7 @@ jobs:
env_cc: gcc-11 env_cc: gcc-11
env_cxx: g++-11 env_cxx: g++-11
compiler: gcc compiler: gcc
qt_version: 6.7.2 qt_version: 6.8.0
qt_arch_aqt: linux_gcc_64 qt_arch_aqt: linux_gcc_64
qt_arch_dir: gcc_64 qt_arch_dir: gcc_64
qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport
@ -64,7 +64,7 @@ jobs:
env_cc: clang-17 env_cc: clang-17
env_cxx: clang++-17 env_cxx: clang++-17
compiler: clang compiler: clang
qt_version: 6.7.2 qt_version: 6.8.0
qt_arch_aqt: linux_gcc_64 qt_arch_aqt: linux_gcc_64
qt_arch_dir: gcc_64 qt_arch_dir: gcc_64
qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport

View file

@ -19,6 +19,17 @@ if (MSVC)
target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/DEBUG>") target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/DEBUG>")
target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/OPT:REF>") target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/OPT:REF>")
target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/OPT:ICF>") target_link_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:/OPT:ICF>")
# Enable multi-processor compilation
target_compile_options(MLNQtCore PRIVATE "/MP")
target_compile_options(mbgl-core PRIVATE "/MP")
target_compile_options(mbgl-vendor-csscolorparser PRIVATE "/MP")
target_compile_options(mbgl-vendor-nunicode PRIVATE "/MP")
target_compile_options(mbgl-vendor-parsedate PRIVATE "/MP")
if (TARGET mbgl-vendor-sqlite)
target_compile_options(mbgl-vendor-sqlite PRIVATE "/MP")
endif()
else() else()
target_compile_options(mbgl-core PRIVATE "$<$<CONFIG:Release>:-g>") target_compile_options(mbgl-core PRIVATE "$<$<CONFIG:Release>:-g>")
target_compile_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:-g>") target_compile_options(MLNQtCore PRIVATE "$<$<CONFIG:Release>:-g>")

View file

@ -25,11 +25,13 @@
#include <fmt/format.h> #include <fmt/format.h>
#include <QApplication> #include <QApplication>
#include <QStandardPaths> #include <QStandardPaths>
#include <QStyleHints>
#include <QTranslator> #include <QTranslator>
static const std::string logPrefix_ = "scwx::main"; static const std::string logPrefix_ = "scwx::main";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_); static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static void ConfigureTheme(const std::vector<std::string>& args);
static void OverrideDefaultStyle(const std::vector<std::string>& args); static void OverrideDefaultStyle(const std::vector<std::string>& args);
int main(int argc, char* argv[]) int main(int argc, char* argv[])
@ -103,18 +105,7 @@ int main(int argc, char* argv[])
scwx::qt::manager::ResourceManager::Initialize(); scwx::qt::manager::ResourceManager::Initialize();
// Theme // Theme
auto uiStyle = scwx::qt::types::GetUiStyle( ConfigureTheme(args);
scwx::qt::settings::GeneralSettings::Instance().theme().GetValue());
if (uiStyle == scwx::qt::types::UiStyle::Default)
{
OverrideDefaultStyle(args);
}
else
{
QApplication::setStyle(
QString::fromStdString(scwx::qt::types::GetUiStyleName(uiStyle)));
}
// Run initial setup if required // Run initial setup if required
if (scwx::qt::ui::setup::SetupWizard::IsSetupRequired()) if (scwx::qt::ui::setup::SetupWizard::IsSetupRequired())
@ -152,6 +143,27 @@ int main(int argc, char* argv[])
return result; return result;
} }
static void ConfigureTheme(const std::vector<std::string>& args)
{
auto& generalSettings = scwx::qt::settings::GeneralSettings::Instance();
auto uiStyle =
scwx::qt::types::GetUiStyle(generalSettings.theme().GetValue());
auto qtColorScheme = scwx::qt::types::GetQtColorScheme(uiStyle);
if (uiStyle == scwx::qt::types::UiStyle::Default)
{
OverrideDefaultStyle(args);
}
else
{
QApplication::setStyle(
QString::fromStdString(scwx::qt::types::GetQtStyleName(uiStyle)));
}
QGuiApplication::styleHints()->setColorScheme(qtColorScheme);
}
static void static void
OverrideDefaultStyle([[maybe_unused]] const std::vector<std::string>& args) OverrideDefaultStyle([[maybe_unused]] const std::vector<std::string>& args)
{ {

View file

@ -1080,9 +1080,9 @@ void MainWindowImpl::ConnectOtherSignals()
} }
}); });
connect(mainWindow_->ui->trackLocationCheckBox, connect(mainWindow_->ui->trackLocationCheckBox,
&QCheckBox::stateChanged, &QCheckBox::checkStateChanged,
mainWindow_, mainWindow_,
[this](int state) [this](Qt::CheckState state)
{ {
bool trackingEnabled = (state == Qt::CheckState::Checked); bool trackingEnabled = (state == Qt::CheckState::Checked);

View file

@ -1,4 +1,5 @@
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/util/enum.hpp>
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
@ -9,27 +10,37 @@ namespace qt
namespace types namespace types
{ {
static const std::unordered_map<UiStyle, std::string> qtStyleName_ {
{UiStyle::Default, "Default"},
{UiStyle::Fusion, "Fusion"},
{UiStyle::FusionLight, "Fusion"},
{UiStyle::FusionDark, "Fusion"},
{UiStyle::Unknown, "?"}};
static const std::unordered_map<UiStyle, std::string> uiStyleName_ { static const std::unordered_map<UiStyle, std::string> uiStyleName_ {
{UiStyle::Default, "Default"}, {UiStyle::Default, "Default"},
{UiStyle::Fusion, "Fusion"}, {UiStyle::Fusion, "Fusion"},
{UiStyle::FusionLight, "Fusion Light"},
{UiStyle::FusionDark, "Fusion Dark"},
{UiStyle::Unknown, "?"}}; {UiStyle::Unknown, "?"}};
UiStyle GetUiStyle(const std::string& name) static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ {
{ {UiStyle::Default, Qt::ColorScheme::Unknown},
auto result = {UiStyle::Fusion, Qt::ColorScheme::Unknown},
std::find_if(uiStyleName_.cbegin(), {UiStyle::FusionLight, Qt::ColorScheme::Light},
uiStyleName_.cend(), {UiStyle::FusionDark, Qt::ColorScheme::Dark},
[&](const std::pair<UiStyle, std::string>& pair) -> bool {UiStyle::Unknown, Qt::ColorScheme::Unknown}};
{ return boost::iequals(pair.second, name); });
if (result != uiStyleName_.cend()) SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_)
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle)
{ {
return result->first; return qtColorSchemeMap_.at(uiStyle);
} }
else
std::string GetQtStyleName(UiStyle uiStyle)
{ {
return UiStyle::Unknown; return qtStyleName_.at(uiStyle);
}
} }
std::string GetUiStyleName(UiStyle uiStyle) std::string GetUiStyleName(UiStyle uiStyle)

View file

@ -20,17 +20,22 @@ enum ItemDataRole
RawDataRole RawDataRole
}; };
enum UiStyle enum class UiStyle
{ {
Default, Default,
Fusion, Fusion,
FusionLight,
FusionDark,
Unknown Unknown
}; };
typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::Fusion> typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionDark>
UiStyleIterator; UiStyleIterator;
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle);
std::string GetQtStyleName(UiStyle uiStyle);
UiStyle GetUiStyle(const std::string& name); UiStyle GetUiStyle(const std::string& name);
std::string GetUiStyleName(UiStyle alertAction); std::string GetUiStyleName(UiStyle uiStyle);
} // namespace types } // namespace types
} // namespace qt } // namespace qt

View file

@ -2,11 +2,12 @@ call tools\setup-common.bat
set build_dir=build-debug set build_dir=build-debug
set build_type=Debug set build_type=Debug
set qt_version=6.7.2 set qt_version=6.8.0
set qt_arch=msvc2022_64
mkdir %build_dir% mkdir %build_dir%
cmake -B %build_dir% -S . ^ cmake -B %build_dir% -S . ^
-DCMAKE_BUILD_TYPE=%build_type% ^ -DCMAKE_BUILD_TYPE=%build_type% ^
-DCMAKE_CONFIGURATION_TYPES=%build_type% ^ -DCMAKE_CONFIGURATION_TYPES=%build_type% ^
-DCMAKE_PREFIX_PATH=C:/Qt/%qt_version%/msvc2019_64 -DCMAKE_PREFIX_PATH=C:/Qt/%qt_version%/%qt_arch%
pause pause

View file

@ -3,7 +3,8 @@
build_dir=${1:-build-debug} build_dir=${1:-build-debug}
build_type=Debug build_type=Debug
qt_version=6.7.2 qt_version=6.8.0
qt_arch=gcc_64
script_dir="$(dirname "$(readlink -f "$0")")" script_dir="$(dirname "$(readlink -f "$0")")"
mkdir -p ${build_dir} mkdir -p ${build_dir}
@ -11,5 +12,5 @@ cmake -B ${build_dir} -S . \
-DCMAKE_BUILD_TYPE=${build_type} \ -DCMAKE_BUILD_TYPE=${build_type} \
-DCMAKE_CONFIGURATION_TYPES=${build_type} \ -DCMAKE_CONFIGURATION_TYPES=${build_type} \
-DCMAKE_INSTALL_PREFIX=${build_dir}/${build_type}/supercell-wx \ -DCMAKE_INSTALL_PREFIX=${build_dir}/${build_type}/supercell-wx \
-DCMAKE_PREFIX_PATH=/opt/Qt/${qt_version}/gcc_64 \ -DCMAKE_PREFIX_PATH=/opt/Qt/${qt_version}/${qt_arch} \
-G Ninja -G Ninja

View file

@ -2,11 +2,12 @@ call tools\setup-common.bat
set build_dir=build-release set build_dir=build-release
set build_type=Release set build_type=Release
set qt_version=6.7.2 set qt_version=6.8.0
set qt_arch=msvc2022_64
mkdir %build_dir% mkdir %build_dir%
cmake -B %build_dir% -S . ^ cmake -B %build_dir% -S . ^
-DCMAKE_BUILD_TYPE=%build_type% ^ -DCMAKE_BUILD_TYPE=%build_type% ^
-DCMAKE_CONFIGURATION_TYPES=%build_type% ^ -DCMAKE_CONFIGURATION_TYPES=%build_type% ^
-DCMAKE_PREFIX_PATH=C:/Qt/%qt_version%/msvc2019_64 -DCMAKE_PREFIX_PATH=C:/Qt/%qt_version%/%qt_arch%
pause pause

View file

@ -3,7 +3,8 @@
build_dir=${1:-build-release} build_dir=${1:-build-release}
build_type=Release build_type=Release
qt_version=6.7.2 qt_version=6.8.0
qt_arch=gcc_64
script_dir="$(dirname "$(readlink -f "$0")")" script_dir="$(dirname "$(readlink -f "$0")")"
mkdir -p ${build_dir} mkdir -p ${build_dir}
@ -11,5 +12,5 @@ cmake -B ${build_dir} -S . \
-DCMAKE_BUILD_TYPE=${build_type} \ -DCMAKE_BUILD_TYPE=${build_type} \
-DCMAKE_CONFIGURATION_TYPES=${build_type} \ -DCMAKE_CONFIGURATION_TYPES=${build_type} \
-DCMAKE_INSTALL_PREFIX=${build_dir}/${build_type}/supercell-wx \ -DCMAKE_INSTALL_PREFIX=${build_dir}/${build_type}/supercell-wx \
-DCMAKE_PREFIX_PATH=/opt/Qt/${qt_version}/gcc_64 \ -DCMAKE_PREFIX_PATH=/opt/Qt/${qt_version}/${qt_arch} \
-G Ninja -G Ninja