mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 00:20:06 +00:00
Add Fusion Light and Fusion Dark styles
This commit is contained in:
parent
e9ee5c6911
commit
9ee6e2ee25
3 changed files with 58 additions and 30 deletions
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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_)
|
||||||
{
|
|
||||||
return result->first;
|
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle)
|
||||||
}
|
{
|
||||||
else
|
return qtColorSchemeMap_.at(uiStyle);
|
||||||
{
|
}
|
||||||
return UiStyle::Unknown;
|
|
||||||
}
|
std::string GetQtStyleName(UiStyle uiStyle)
|
||||||
|
{
|
||||||
|
return qtStyleName_.at(uiStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetUiStyleName(UiStyle uiStyle)
|
std::string GetUiStyleName(UiStyle uiStyle)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue