mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 07:20: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 <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
	
	 Dan Paulat
						Dan Paulat