mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 08:00:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* This code is drawn from qt6ct, and loads qt6ct color palette files.
 | |
|  * qt6ct is licensed under BSD-2-Clause below.
 | |
|  *
 | |
|  * Copyright (c) 2020-2024, Ilya Kotov <forkotov02@ya.ru>
 | |
|  *
 | |
|  * Redistribution and use in source and binary forms, with or without
 | |
|  * modification, are permitted provided that the following conditions are
 | |
|  * met:
 | |
|  *
 | |
|  * 1. Redistributions of source code must retain the above copyright
 | |
|  *    notice, this list of conditions and the following disclaimer.
 | |
|  *
 | |
|  * 2. Redistributions in binary form must reproduce the above copyright
 | |
|  *    notice, this list of conditions and the following disclaimer in
 | |
|  *    the documentation and/or other materials provided with the
 | |
|  *    distribution.
 | |
|  *
 | |
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | |
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | |
|  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | |
|  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
|  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | |
|  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | |
|  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
|  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
|  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | |
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|  */
 | |
| 
 | |
| #include <QPalette>
 | |
| #include <QSettings>
 | |
| 
 | |
| namespace scwx
 | |
| {
 | |
| namespace qt
 | |
| {
 | |
| namespace util
 | |
| {
 | |
| namespace qt6ct
 | |
| {
 | |
| 
 | |
| QPalette loadColorScheme(const QString &filePath, const QPalette &fallback)
 | |
| {
 | |
|     QPalette customPalette;
 | |
|     QSettings settings(filePath, QSettings::IniFormat);
 | |
|     settings.beginGroup("ColorScheme");
 | |
|     QStringList activeColors = settings.value("active_colors").toStringList();
 | |
|     QStringList inactiveColors = settings.value("inactive_colors").toStringList();
 | |
|     QStringList disabledColors = settings.value("disabled_colors").toStringList();
 | |
|     settings.endGroup();
 | |
| 
 | |
| 
 | |
| #if (QT_VERSION >= QT_VERSION_CHECK(6,6,0))
 | |
|     if(activeColors.count() == QPalette::Accent)
 | |
|         activeColors << activeColors.at(QPalette::Highlight);
 | |
|     if(inactiveColors.count() == QPalette::Accent)
 | |
|         inactiveColors << inactiveColors.at(QPalette::Highlight);
 | |
|     if(disabledColors.count() == QPalette::Accent)
 | |
|         disabledColors << disabledColors.at(QPalette::Highlight);
 | |
| #endif
 | |
| 
 | |
| 
 | |
|     if(activeColors.count() >= QPalette::NColorRoles &&
 | |
|             inactiveColors.count() >= QPalette::NColorRoles &&
 | |
|             disabledColors.count() >= QPalette::NColorRoles)
 | |
|     {
 | |
|         for (int i = 0; i < QPalette::NColorRoles; i++)
 | |
|         {
 | |
|             QPalette::ColorRole role = QPalette::ColorRole(i);
 | |
|             customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
 | |
|             customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
 | |
|             customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
 | |
|         }
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         customPalette = fallback; //load fallback palette
 | |
|     }
 | |
| 
 | |
|     return customPalette;
 | |
| }
 | |
| 
 | |
| } // namespace qt6ct
 | |
| } // namespace util
 | |
| } // namespace qt
 | |
| } // namespace scwx
 | 
