mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 07:50:04 +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 <QApplication>
|
||||
#include <QStandardPaths>
|
||||
#include <QStyleHints>
|
||||
#include <QTranslator>
|
||||
|
||||
static const std::string logPrefix_ = "scwx::main";
|
||||
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);
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
|
|
@ -103,18 +105,7 @@ int main(int argc, char* argv[])
|
|||
scwx::qt::manager::ResourceManager::Initialize();
|
||||
|
||||
// Theme
|
||||
auto uiStyle = scwx::qt::types::GetUiStyle(
|
||||
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)));
|
||||
}
|
||||
ConfigureTheme(args);
|
||||
|
||||
// Run initial setup if required
|
||||
if (scwx::qt::ui::setup::SetupWizard::IsSetupRequired())
|
||||
|
|
@ -152,6 +143,27 @@ int main(int argc, char* argv[])
|
|||
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
|
||||
OverrideDefaultStyle([[maybe_unused]] const std::vector<std::string>& args)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <scwx/qt/types/qt_types.hpp>
|
||||
#include <scwx/util/enum.hpp>
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
|
|
@ -9,27 +10,37 @@ namespace qt
|
|||
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_ {
|
||||
{UiStyle::Default, "Default"},
|
||||
{UiStyle::Fusion, "Fusion"},
|
||||
{UiStyle::FusionLight, "Fusion Light"},
|
||||
{UiStyle::FusionDark, "Fusion Dark"},
|
||||
{UiStyle::Unknown, "?"}};
|
||||
|
||||
UiStyle GetUiStyle(const std::string& name)
|
||||
{
|
||||
auto result =
|
||||
std::find_if(uiStyleName_.cbegin(),
|
||||
uiStyleName_.cend(),
|
||||
[&](const std::pair<UiStyle, std::string>& pair) -> bool
|
||||
{ return boost::iequals(pair.second, name); });
|
||||
static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ {
|
||||
{UiStyle::Default, Qt::ColorScheme::Unknown},
|
||||
{UiStyle::Fusion, Qt::ColorScheme::Unknown},
|
||||
{UiStyle::FusionLight, Qt::ColorScheme::Light},
|
||||
{UiStyle::FusionDark, Qt::ColorScheme::Dark},
|
||||
{UiStyle::Unknown, Qt::ColorScheme::Unknown}};
|
||||
|
||||
if (result != uiStyleName_.cend())
|
||||
{
|
||||
return result->first;
|
||||
}
|
||||
else
|
||||
{
|
||||
return UiStyle::Unknown;
|
||||
}
|
||||
SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_)
|
||||
|
||||
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle)
|
||||
{
|
||||
return qtColorSchemeMap_.at(uiStyle);
|
||||
}
|
||||
|
||||
std::string GetQtStyleName(UiStyle uiStyle)
|
||||
{
|
||||
return qtStyleName_.at(uiStyle);
|
||||
}
|
||||
|
||||
std::string GetUiStyleName(UiStyle uiStyle)
|
||||
|
|
|
|||
|
|
@ -20,17 +20,22 @@ enum ItemDataRole
|
|||
RawDataRole
|
||||
};
|
||||
|
||||
enum UiStyle
|
||||
enum class UiStyle
|
||||
{
|
||||
Default,
|
||||
Fusion,
|
||||
FusionLight,
|
||||
FusionDark,
|
||||
Unknown
|
||||
};
|
||||
typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::Fusion>
|
||||
typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionDark>
|
||||
UiStyleIterator;
|
||||
|
||||
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle);
|
||||
std::string GetQtStyleName(UiStyle uiStyle);
|
||||
|
||||
UiStyle GetUiStyle(const std::string& name);
|
||||
std::string GetUiStyleName(UiStyle alertAction);
|
||||
std::string GetUiStyleName(UiStyle uiStyle);
|
||||
|
||||
} // namespace types
|
||||
} // namespace qt
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue