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