diff --git a/scwx-qt/scwx-qt.qrc b/scwx-qt/scwx-qt.qrc
index 63ad1793..fbe846ca 100644
--- a/scwx-qt/scwx-qt.qrc
+++ b/scwx-qt/scwx-qt.qrc
@@ -70,7 +70,13 @@
res/palettes/wct/SW.pal
res/palettes/wct/VIL.pal
res/palettes/wct/ZDR.pal
+ res/qt6ct_colors/airy.conf
res/qt6ct_colors/darker.conf
+ res/qt6ct_colors/dusk.conf
+ res/qt6ct_colors/ia_ora.conf
+ res/qt6ct_colors/sand.conf
+ res/qt6ct_colors/simple.conf
+ res/qt6ct_colors/waves.conf
res/textures/lines/default-1x7.png
res/textures/lines/test-pattern.png
res/textures/images/cursor-17.png
diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp
index 602a5fe8..11b7f098 100644
--- a/scwx-qt/source/scwx/qt/main/main.cpp
+++ b/scwx-qt/source/scwx/qt/main/main.cpp
@@ -166,10 +166,24 @@ static void ConfigureTheme(const std::vector& args)
QGuiApplication::styleHints()->setColorScheme(qtColorScheme);
- if (uiStyle == scwx::qt::types::UiStyle::FusionQt6Ct)
+ std::optional paletteFile =
+ scwx::qt::types::GetQtPaletteFile(uiStyle);
+ if (paletteFile)
{
- QPalette palette = Qt6CT::loadColorScheme(":res/qt6ct_colors/darker.conf",
- QApplication::style()->standardPalette());;
+ QPalette defaultPalette = QApplication::style()->standardPalette();
+ QPalette palette =
+ Qt6CT::loadColorScheme(QString::fromStdString(*paletteFile),
+ defaultPalette);
+
+ if (defaultPalette == palette)
+ {
+ logger_->warn("Failed to load palette file '{}'", *paletteFile);
+ }
+ else
+ {
+ logger_->info("Loaded palette file '{}'", *paletteFile);
+ }
+
QApplication::setPalette(palette);
}
}
diff --git a/scwx-qt/source/scwx/qt/types/qt_types.cpp b/scwx-qt/source/scwx/qt/types/qt_types.cpp
index 03d58a75..5e5a96a7 100644
--- a/scwx-qt/source/scwx/qt/types/qt_types.cpp
+++ b/scwx-qt/source/scwx/qt/types/qt_types.cpp
@@ -15,7 +15,12 @@ static const std::unordered_map qtStyleName_ {
{UiStyle::Fusion, "Fusion"},
{UiStyle::FusionLight, "Fusion"},
{UiStyle::FusionDark, "Fusion"},
- {UiStyle::FusionQt6Ct, "Fusion"},
+ {UiStyle::FusionAiry, "Fusion"},
+ {UiStyle::FusionDarker, "Fusion"},
+ {UiStyle::FusionDusk, "Fusion"},
+ {UiStyle::FusionIaOra, "Fusion"},
+ {UiStyle::FusionSand, "Fusion"},
+ {UiStyle::FusionWaves, "Fusion"},
{UiStyle::Unknown, "?"}};
static const std::unordered_map uiStyleName_ {
@@ -23,7 +28,12 @@ static const std::unordered_map uiStyleName_ {
{UiStyle::Fusion, "Fusion"},
{UiStyle::FusionLight, "Fusion Light"},
{UiStyle::FusionDark, "Fusion Dark"},
- {UiStyle::FusionQt6Ct, "Fusion with qt6ct Palette"},
+ {UiStyle::FusionAiry, "Fusion Airy"},
+ {UiStyle::FusionDarker, "Fusion Darker"},
+ {UiStyle::FusionDusk, "Fusion Dusk"},
+ {UiStyle::FusionIaOra, "Fusion IA Ora"},
+ {UiStyle::FusionSand, "Fusion Sand"},
+ {UiStyle::FusionWaves, "Fusion Waves"},
{UiStyle::Unknown, "?"}};
static const std::unordered_map qtColorSchemeMap_ {
@@ -31,9 +41,22 @@ static const std::unordered_map qtColorSchemeMap_ {
{UiStyle::Fusion, Qt::ColorScheme::Unknown},
{UiStyle::FusionLight, Qt::ColorScheme::Light},
{UiStyle::FusionDark, Qt::ColorScheme::Dark},
- {UiStyle::FusionQt6Ct, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionAiry, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionDarker, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionDusk, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionIaOra, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionSand, Qt::ColorScheme::Unknown},
+ {UiStyle::FusionWaves, Qt::ColorScheme::Unknown},
{UiStyle::Unknown, Qt::ColorScheme::Unknown}};
+static const std::unordered_map paletteFile_ {
+ {UiStyle::FusionAiry, ":res/qt6ct_colors/airy.conf"},
+ {UiStyle::FusionDarker, ":res/qt6ct_colors/darker.conf"},
+ {UiStyle::FusionDusk, ":res/qt6ct_colors/dusk.conf"},
+ {UiStyle::FusionIaOra, ":res/qt6ct_colors/ia_ora.conf"},
+ {UiStyle::FusionSand, ":res/qt6ct_colors/sand.conf"},
+ {UiStyle::FusionWaves, ":res/qt6ct_colors/waves.conf"}};
+
SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_)
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle)
@@ -46,6 +69,16 @@ std::string GetQtStyleName(UiStyle uiStyle)
return qtStyleName_.at(uiStyle);
}
+std::optional GetQtPaletteFile(UiStyle uiStyle)
+{
+ if (paletteFile_.contains(uiStyle))
+ {
+ return paletteFile_.at(uiStyle);
+ }
+
+ return std::nullopt;
+}
+
std::string GetUiStyleName(UiStyle uiStyle)
{
return uiStyleName_.at(uiStyle);
diff --git a/scwx-qt/source/scwx/qt/types/qt_types.hpp b/scwx-qt/source/scwx/qt/types/qt_types.hpp
index a9266c8b..9bb7ed5d 100644
--- a/scwx-qt/source/scwx/qt/types/qt_types.hpp
+++ b/scwx-qt/source/scwx/qt/types/qt_types.hpp
@@ -2,6 +2,7 @@
#include
+#include
#include
#include
@@ -26,14 +27,21 @@ enum class UiStyle
Fusion,
FusionLight,
FusionDark,
- FusionQt6Ct,
+ FusionAiry,
+ FusionDarker,
+ FusionDusk,
+ FusionIaOra,
+ FusionSand,
+ FusionWaves,
Unknown
};
-typedef scwx::util::Iterator
+typedef scwx::util::Iterator
UiStyleIterator;
-Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle);
-std::string GetQtStyleName(UiStyle uiStyle);
+Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle);
+std::string GetQtStyleName(UiStyle uiStyle);
+
+std::optional GetQtPaletteFile(UiStyle uiStyle);
UiStyle GetUiStyle(const std::string& name);
std::string GetUiStyleName(UiStyle uiStyle);