mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-16 04:09:39 +00:00
Merge pull request #13919 from cristian64/revise_builtin_styles
DolphinQt: Add Fusion-based styles.
This commit is contained in:
commit
5dd18246e7
@ -160,6 +160,17 @@ bool Settings::IsThemeDark()
|
|||||||
void Settings::ApplyStyle()
|
void Settings::ApplyStyle()
|
||||||
{
|
{
|
||||||
const StyleType style_type = GetStyleType();
|
const StyleType style_type = GetStyleType();
|
||||||
|
|
||||||
|
{
|
||||||
|
const bool use_fusion{style_type == StyleType::FusionLight ||
|
||||||
|
style_type == StyleType::FusionDarkGray ||
|
||||||
|
style_type == StyleType::FusionDark};
|
||||||
|
static const QString s_initial_style_name{QApplication::style()->name()};
|
||||||
|
const QString style_name{use_fusion ? QStringLiteral("fusion") : s_initial_style_name};
|
||||||
|
if (QApplication::style()->name() != style_name)
|
||||||
|
QApplication::setStyle(style_name);
|
||||||
|
}
|
||||||
|
|
||||||
const QString stylesheet_name = GetUserStyleName();
|
const QString stylesheet_name = GetUserStyleName();
|
||||||
QString stylesheet_contents;
|
QString stylesheet_contents;
|
||||||
|
|
||||||
@ -174,12 +185,155 @@ void Settings::ApplyStyle()
|
|||||||
stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data());
|
stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QPalette palette;
|
||||||
|
|
||||||
|
if (style_type == StyleType::FusionLight)
|
||||||
|
{
|
||||||
|
palette.setColor(QPalette::All, QPalette::Window, QColor(239, 239, 239));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Window, QColor(239, 239, 239));
|
||||||
|
palette.setColor(QPalette::All, QPalette::WindowText, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(190, 190, 190));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Base, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Base, QColor(239, 239, 239));
|
||||||
|
palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(247, 247, 247));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(247, 247, 247));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(255, 255, 220));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(255, 255, 220));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(119, 119, 119));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(119, 119, 119));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Text, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Text, QColor(190, 190, 190));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Button, QColor(239, 239, 239));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Button, QColor(239, 239, 239));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ButtonText, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(190, 190, 190));
|
||||||
|
palette.setColor(QPalette::All, QPalette::BrightText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Light, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Light, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Midlight, QColor(202, 202, 202));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(202, 202, 202));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Dark, QColor(159, 159, 159));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(190, 190, 190));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Mid, QColor(184, 184, 184));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(184, 184, 184));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Shadow, QColor(118, 118, 118));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(177, 177, 177));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Highlight, QColor(48, 140, 198));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(145, 145, 145));
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
palette.setColor(QPalette::All, QPalette::Accent, QColor(48, 140, 198));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(145, 145, 145).darker());
|
||||||
|
#endif
|
||||||
|
palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Link, QColor(0, 0, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Link, QColor(0, 0, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(255, 0, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(255, 0, 255));
|
||||||
|
}
|
||||||
|
else if (style_type == StyleType::FusionDarkGray)
|
||||||
|
{
|
||||||
|
palette.setColor(QPalette::All, QPalette::Window, QColor(50, 50, 50));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Window, QColor(55, 55, 55));
|
||||||
|
palette.setColor(QPalette::All, QPalette::WindowText, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(108, 108, 108));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Base, QColor(25, 25, 25));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Base, QColor(30, 30, 30));
|
||||||
|
palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(38, 38, 38));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(42, 42, 42));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(45, 45, 45));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(45, 45, 45));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Text, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Text, QColor(108, 108, 108));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Button, QColor(54, 54, 54));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Button, QColor(54, 54, 54));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ButtonText, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(108, 108, 108));
|
||||||
|
palette.setColor(QPalette::All, QPalette::BrightText, QColor(75, 75, 75));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Light, QColor(26, 26, 26));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Light, QColor(26, 26, 26));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Midlight, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Dark, QColor(108, 108, 108));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(108, 108, 108));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Mid, QColor(71, 71, 71));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(71, 71, 71));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Shadow, QColor(25, 25, 25));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(37, 37, 37));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Highlight, QColor(45, 140, 225));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(45, 140, 225).darker());
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
palette.setColor(QPalette::All, QPalette::Accent, QColor(45, 140, 225));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(45, 140, 225).darker());
|
||||||
|
#endif
|
||||||
|
palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Link, QColor(40, 130, 220));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Link, QColor(40, 130, 220).darker());
|
||||||
|
palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(110, 70, 150));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(110, 70, 150).darker());
|
||||||
|
}
|
||||||
|
else if (style_type == StyleType::FusionDark)
|
||||||
|
{
|
||||||
|
palette.setColor(QPalette::All, QPalette::Window, QColor(22, 22, 22));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Window, QColor(30, 30, 30));
|
||||||
|
palette.setColor(QPalette::All, QPalette::WindowText, QColor(180, 180, 180));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Base, QColor(35, 35, 35));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Base, QColor(30, 30, 30));
|
||||||
|
palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(35, 35, 35));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(170, 170, 170));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(170, 170, 170));
|
||||||
|
palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(100, 100, 100));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(100, 100, 100));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Text, QColor(200, 200, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Text, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Button, QColor(30, 30, 30));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Button, QColor(20, 20, 20));
|
||||||
|
palette.setColor(QPalette::All, QPalette::ButtonText, QColor(180, 180, 180));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::All, QPalette::BrightText, QColor(75, 75, 75));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Light, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Light, QColor(0, 0, 0));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Midlight, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(40, 40, 40));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Dark, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(90, 90, 90));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Mid, QColor(60, 60, 60));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(60, 60, 60));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Shadow, QColor(10, 10, 10));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(20, 20, 20));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Highlight, QColor(35, 130, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(35, 130, 200).darker());
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
palette.setColor(QPalette::All, QPalette::Accent, QColor(35, 130, 200));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(35, 130, 200).darker());
|
||||||
|
#endif
|
||||||
|
palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(240, 240, 240));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(35, 35, 35));
|
||||||
|
palette.setColor(QPalette::All, QPalette::Link, QColor(40, 130, 220));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::Link, QColor(40, 130, 220).darker());
|
||||||
|
palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(110, 70, 150));
|
||||||
|
palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(110, 70, 150).darker());
|
||||||
|
}
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Unlike other OSes we don't automatically get a default dark theme on Windows.
|
// Unlike other OSes we don't automatically get a default dark theme on Windows.
|
||||||
// We manually load a dark palette for our included "(Dark)" style,
|
// We manually load a dark palette for our included "(Dark)" style,
|
||||||
// and for *any* external style when the system is in "Dark" mode.
|
// and for *any* external style when the system is in "Dark" mode.
|
||||||
// Unfortunately it doesn't seem trivial to load a palette based on the stylesheet itself.
|
// Unfortunately it doesn't seem trivial to load a palette based on the stylesheet itself.
|
||||||
if (style_type == StyleType::Dark || (style_type != StyleType::Light && IsSystemDark()))
|
else if (style_type == StyleType::Dark || (style_type != StyleType::Light && IsSystemDark()))
|
||||||
{
|
{
|
||||||
if (stylesheet_contents.isEmpty())
|
if (stylesheet_contents.isEmpty())
|
||||||
{
|
{
|
||||||
@ -188,7 +342,7 @@ void Settings::ApplyStyle()
|
|||||||
stylesheet_contents = QString::fromUtf8(file.readAll().data());
|
stylesheet_contents = QString::fromUtf8(file.readAll().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
QPalette palette = qApp->style()->standardPalette();
|
palette = qApp->style()->standardPalette();
|
||||||
palette.setColor(QPalette::Window, QColor(32, 32, 32));
|
palette.setColor(QPalette::Window, QColor(32, 32, 32));
|
||||||
palette.setColor(QPalette::WindowText, QColor(220, 220, 220));
|
palette.setColor(QPalette::WindowText, QColor(220, 220, 220));
|
||||||
palette.setColor(QPalette::Base, QColor(32, 32, 32));
|
palette.setColor(QPalette::Base, QColor(32, 32, 32));
|
||||||
@ -202,20 +356,19 @@ void Settings::ApplyStyle()
|
|||||||
palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255));
|
palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255));
|
||||||
palette.setColor(QPalette::Link, QColor(100, 160, 220));
|
palette.setColor(QPalette::Link, QColor(100, 160, 220));
|
||||||
palette.setColor(QPalette::LinkVisited, QColor(100, 160, 220));
|
palette.setColor(QPalette::LinkVisited, QColor(100, 160, 220));
|
||||||
qApp->setPalette(palette);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// reset any palette changes that may exist from a previously set dark mode
|
|
||||||
if (s_default_palette)
|
|
||||||
qApp->setPalette(*s_default_palette);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (s_default_palette)
|
||||||
|
palette = *s_default_palette;
|
||||||
|
}
|
||||||
|
|
||||||
|
qApp->setPalette(palette);
|
||||||
|
|
||||||
// Define tooltips style if not already defined
|
// Define tooltips style if not already defined
|
||||||
if (!stylesheet_contents.contains(QStringLiteral("QToolTip"), Qt::CaseSensitive))
|
if (!stylesheet_contents.contains(QStringLiteral("QToolTip"), Qt::CaseSensitive))
|
||||||
{
|
{
|
||||||
const QPalette& palette = qApp->palette();
|
|
||||||
QColor window_color;
|
QColor window_color;
|
||||||
QColor text_color;
|
QColor text_color;
|
||||||
QColor unused_text_emphasis_color;
|
QColor unused_text_emphasis_color;
|
||||||
@ -223,11 +376,14 @@ void Settings::ApplyStyle()
|
|||||||
GetToolTipStyle(window_color, text_color, unused_text_emphasis_color, border_color, palette,
|
GetToolTipStyle(window_color, text_color, unused_text_emphasis_color, border_color, palette,
|
||||||
palette);
|
palette);
|
||||||
|
|
||||||
|
const int padding{QFontMetrics(QFont()).height() / 2};
|
||||||
|
|
||||||
const auto tooltip_stylesheet =
|
const auto tooltip_stylesheet =
|
||||||
QStringLiteral("QToolTip { background-color: #%1; color: #%2; padding: 8px; "
|
QStringLiteral("QToolTip { background-color: #%1; color: #%2; padding: %3px; "
|
||||||
"border: 1px; border-style: solid; border-color: #%3; }")
|
"border: 1px; border-style: solid; border-color: #%4; }")
|
||||||
.arg(window_color.rgba(), 0, 16)
|
.arg(window_color.rgba(), 0, 16)
|
||||||
.arg(text_color.rgba(), 0, 16)
|
.arg(text_color.rgba(), 0, 16)
|
||||||
|
.arg(padding)
|
||||||
.arg(border_color.rgba(), 0, 16);
|
.arg(border_color.rgba(), 0, 16);
|
||||||
stylesheet_contents.append(QStringLiteral("%1").arg(tooltip_stylesheet));
|
stylesheet_contents.append(QStringLiteral("%1").arg(tooltip_stylesheet));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,9 +66,12 @@ public:
|
|||||||
Light = 1,
|
Light = 1,
|
||||||
Dark = 2,
|
Dark = 2,
|
||||||
User = 3,
|
User = 3,
|
||||||
|
FusionLight = 4,
|
||||||
|
FusionDarkGray = 5,
|
||||||
|
FusionDark = 6,
|
||||||
|
|
||||||
MinValue = 0,
|
MinValue = 0,
|
||||||
MaxValue = 3,
|
MaxValue = 6,
|
||||||
};
|
};
|
||||||
|
|
||||||
void SetStyleType(StyleType type);
|
void SetStyleType(StyleType type);
|
||||||
|
|||||||
@ -157,6 +157,13 @@ void InterfacePane::CreateUI()
|
|||||||
m_combobox_userstyle->addItem(tr("(Dark)"), static_cast<int>(Settings::StyleType::Dark));
|
m_combobox_userstyle->addItem(tr("(Dark)"), static_cast<int>(Settings::StyleType::Dark));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_combobox_userstyle->addItem(tr("(Fusion Light)"),
|
||||||
|
static_cast<int>(Settings::StyleType::FusionLight));
|
||||||
|
m_combobox_userstyle->addItem(tr("(Fusion Dark Gray)"),
|
||||||
|
static_cast<int>(Settings::StyleType::FusionDarkGray));
|
||||||
|
m_combobox_userstyle->addItem(tr("(Fusion Dark)"),
|
||||||
|
static_cast<int>(Settings::StyleType::FusionDark));
|
||||||
|
|
||||||
for (const std::string& path : userstyle_search_results)
|
for (const std::string& path : userstyle_search_results)
|
||||||
{
|
{
|
||||||
const QFileInfo file_info(QString::fromStdString(path));
|
const QFileInfo file_info(QString::fromStdString(path));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user