diff --git a/.gitmodules b/.gitmodules index 52ede30b..afccf304 100644 --- a/.gitmodules +++ b/.gitmodules @@ -37,3 +37,6 @@ [submodule "external/maplibre-native"] path = external/maplibre-native url = https://github.com/dpaulat/maplibre-gl-native.git +[submodule "external/qt6ct"] + path = external/qt6ct + url = https://github.com/trialuser02/qt6ct.git diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index bbc76c64..0a32377e 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -21,3 +21,4 @@ include(maplibre-native-qt.cmake) include(stb.cmake) include(textflowcpp.cmake) include(units.cmake) +include(qt6ct.cmake) diff --git a/external/qt6ct b/external/qt6ct new file mode 160000 index 00000000..55dba870 --- /dev/null +++ b/external/qt6ct @@ -0,0 +1 @@ +Subproject commit 55dba8704c0a748b0ce9f2d3cc2cf200ca3db464 diff --git a/external/qt6ct.cmake b/external/qt6ct.cmake new file mode 100644 index 00000000..c1227711 --- /dev/null +++ b/external/qt6ct.cmake @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.16.0) +set(PROJECT_NAME scwx-qt6ct) + +add_subdirectory(qt6ct/src/qt6ct-common) +set_target_properties(qt6ct-common PROPERTIES PUBLIC_HEADER qt6ct/src/qt6ct-common/qt6ct.h) +target_include_directories( qt6ct-common INTERFACE qt6ct/src ) diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index 2741f076..3d2f8368 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -357,7 +357,6 @@ set(HDR_UTIL source/scwx/qt/util/color.hpp source/scwx/qt/util/texture_atlas.hpp source/scwx/qt/util/q_file_buffer.hpp source/scwx/qt/util/q_file_input_stream.hpp - source/scwx/qt/util/qt6ct_palette.hpp source/scwx/qt/util/time.hpp source/scwx/qt/util/tooltip.hpp) set(SRC_UTIL source/scwx/qt/util/color.cpp @@ -370,7 +369,6 @@ set(SRC_UTIL source/scwx/qt/util/color.cpp source/scwx/qt/util/texture_atlas.cpp source/scwx/qt/util/q_file_buffer.cpp source/scwx/qt/util/q_file_input_stream.cpp - source/scwx/qt/util/qt6ct_palette.cpp source/scwx/qt/util/time.cpp source/scwx/qt/util/tooltip.cpp) set(HDR_VIEW source/scwx/qt/view/level2_product_view.hpp @@ -687,6 +685,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets GLEW::GLEW glm::glm imgui + qt6ct-common SQLite::SQLite3 wxdata) diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp index d90ec0e9..602a5fe8 100644 --- a/scwx-qt/source/scwx/qt/main/main.cpp +++ b/scwx-qt/source/scwx/qt/main/main.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -24,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -168,11 +168,9 @@ static void ConfigureTheme(const std::vector& args) if (uiStyle == scwx::qt::types::UiStyle::FusionQt6Ct) { - auto palette = - std::make_unique(scwx::qt::util::qt6ct::loadColorScheme( - ":res/qt6ct_colors/darker.conf", - QApplication::style()->standardPalette())); - QApplication::setPalette(*palette); + QPalette palette = Qt6CT::loadColorScheme(":res/qt6ct_colors/darker.conf", + QApplication::style()->standardPalette());; + QApplication::setPalette(palette); } } diff --git a/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp b/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp deleted file mode 100644 index b6319709..00000000 --- a/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* This code is drawn from qt6ct, and loads qt6ct color palette files. - * qt6ct is licensed under BSD-2-Clause below. - * - * Copyright (c) 2020-2024, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -namespace scwx -{ -namespace qt -{ -namespace util -{ -namespace qt6ct -{ - -QPalette loadColorScheme(const QString &filePath, const QPalette &fallback) -{ - QPalette customPalette; - QSettings settings(filePath, QSettings::IniFormat); - settings.beginGroup("ColorScheme"); - QStringList activeColors = settings.value("active_colors").toStringList(); - QStringList inactiveColors = settings.value("inactive_colors").toStringList(); - QStringList disabledColors = settings.value("disabled_colors").toStringList(); - settings.endGroup(); - - -#if (QT_VERSION >= QT_VERSION_CHECK(6,6,0)) - if(activeColors.count() == QPalette::Accent) - activeColors << activeColors.at(QPalette::Highlight); - if(inactiveColors.count() == QPalette::Accent) - inactiveColors << inactiveColors.at(QPalette::Highlight); - if(disabledColors.count() == QPalette::Accent) - disabledColors << disabledColors.at(QPalette::Highlight); -#endif - - - if(activeColors.count() >= QPalette::NColorRoles && - inactiveColors.count() >= QPalette::NColorRoles && - disabledColors.count() >= QPalette::NColorRoles) - { - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); - customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); - customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); - } - } - else - { - customPalette = fallback; //load fallback palette - } - - return customPalette; -} - -} // namespace qt6ct -} // namespace util -} // namespace qt -} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp b/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp deleted file mode 100644 index 9b168212..00000000 --- a/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -/* This code is drawn from qt6ct, and loads qt6ct color palette files. - * qt6ct is licensed under BSD-2-Clause below. - * - * Copyright (c) 2020-2024, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -namespace scwx -{ -namespace qt -{ -namespace util -{ -namespace qt6ct -{ - -QPalette loadColorScheme(const QString &filePath, const QPalette &fallback); - -} // namespace qt6ct -} // namespace util -} // namespace qt -} // namespace scwx