添加主题色板 tools各控件监听主题 bug 173999 133746

This commit is contained in:
zhangyuanyuan1 2023-07-13 15:50:20 +08:00
parent e063bfecc2
commit 1e614eb144
7 changed files with 273 additions and 26 deletions

View File

@ -37,24 +37,9 @@ Divider::Divider(bool useLightPal, QWidget * parent)
void Divider::onPaletteChanged()
{
QPalette pal = qApp->palette();
QGSettings * styleGsettings = nullptr;
const QByteArray style_id(THEME_SCHAME);
if (QGSettings::isSchemaInstalled(style_id) && m_useLightPal) {
styleGsettings = new QGSettings(style_id);
QString currentTheme = styleGsettings->get(COLOR_THEME).toString();
if(currentTheme == "ukui-default"){
pal = lightPalette(this);
}
}
QPalette pal = this->palette();
m_color = pal.color(QPalette::BrightText);
m_color.setAlphaF(0.08);
if (styleGsettings != nullptr) {
delete styleGsettings;
styleGsettings = nullptr;
}
}
void Divider::paintEvent(QPaintEvent * e)

View File

@ -22,20 +22,22 @@
#include <QPainter>
#include <QPainterPath>
#include <QApplication>
#include <QGSettings>
#include "themepalette.h"
#define BUTTON_SIZE 36,36
#define ICON_SIZE 16,16
#define BACKGROUND_COLOR QColor(0,0,0,0)
#define FOREGROUND_COLOR_NORMAL qApp->palette().text().color()
//#define FOREGROUND_COLOR_HOVER QColor(55,144,250,255)
//#define FOREGROUND_COLOR_PRESS QColor(36,109,212,255)
#define FOREGROUND_COLOR_BRIGHTTEXT qApp->palette().brightText().color()
#define FOREGROUND_COLOR_HIGHLIGHT qApp->palette().highlight().color()
#define FOREGROUND_COLOR_NORMAL this->palette().text().color()
#define FOREGROUND_COLOR_BRIGHTTEXT this->palette().brightText().color()
#define FOREGROUND_COLOR_HIGHLIGHT this->palette().highlight().color()
#define OUTER_PATH 8,10,16,16
#define INNER_PATH 9,11,14,14
#define TEXT_POS 14,7,16,16,0
#define BUTTON_SIZE 36,36
#define THEME_SCHAME "org.ukui.style"
#define COLOR_THEME "styleName"
QColor mixColor(const QColor &c1, const QColor &c2, qreal bias);
@ -44,6 +46,17 @@ InfoButton::InfoButton(QWidget *parent) : QPushButton(parent)
this->setFixedSize(BUTTON_SIZE);
initUI();
connect(qApp, &QApplication::paletteChanged, this, &InfoButton::onPaletteChanged);
const QByteArray id(THEME_SCHAME);
if (QGSettings::isSchemaInstalled(id)) {
QGSettings * styleGsettings = new QGSettings(id, QByteArray(), this);
connect(styleGsettings, &QGSettings::changed, this, [=](QString key){
if ("themeColor" == key) {
onPaletteChanged();
}
});
}
onPaletteChanged();
}
void InfoButton::initUI()
@ -55,6 +68,18 @@ void InfoButton::initUI()
void InfoButton::onPaletteChanged()
{
QPalette pal = qApp->palette();
QGSettings * styleGsettings = nullptr;
const QByteArray styleId(THEME_SCHAME);
if (QGSettings::isSchemaInstalled(styleId)) {
styleGsettings = new QGSettings(styleId, QByteArray(), this);
QString currentTheme = styleGsettings->get(COLOR_THEME).toString();
if(currentTheme == "ukui-default"){
pal = themePalette(true, this);
}
}
this->setPalette(pal);
m_foregroundColor = FOREGROUND_COLOR_NORMAL;
this->repaint();
}

View File

@ -24,7 +24,7 @@
#include <QFontMetrics>
#include <QGSettings>
#define FOREGROUND_COLOR_NORMAL qApp->palette().text().color()
#define FOREGROUND_COLOR_NORMAL this->palette().text().color()
static inline qreal mixQreal(qreal a, qreal b, qreal bias)
{

View File

@ -22,6 +22,7 @@
#include <QObject>
#include <QLabel>
#include "themepalette.h"
class FixLabel : public QLabel
{

View File

@ -24,6 +24,8 @@
#include <QApplication>
#include <QStyle>
#include <QDebug>
#include "themepalette.h"
#define FLASH_SPEED 100
#define TIMEOUT_TIMER 90*1000
#define BUTTON_SIZE 36,36
@ -35,9 +37,10 @@
#define FOREGROUND_COLOR_PRESS_INACTIVE_DARK QColor(70,70,70,255)
#define FOREGROUND_COLOR_NORMAL_ACTIVE QColor(55,144,250,255)
#define FOREGROUND_COLOR_PRESS_ACTIVE QColor(36,109,212,255)
#define COLOR_BRIGHT_TEXT qApp->palette().brightText().color()
#define COLOR_HIGH_LIGHT qApp->palette().highlight().color()
#define COLOR_BRIGHT_TEXT this->palette().brightText().color()
#define COLOR_HIGH_LIGHT this->palette().highlight().color()
#define THEME_SCHAME "org.ukui.style"
#define COLOR_THEME "styleName"
QColor mixColor(const QColor &c1, const QColor &c2, qreal bias);
@ -61,6 +64,7 @@ RadioItemButton::RadioItemButton(QWidget *parent) : QPushButton(parent)
}
});
}
onPaletteChanged();
//JXJ_TODO loading动画
connect(this, &RadioItemButton::requestStartLoading, this, &RadioItemButton::onLoadingStarted);
@ -140,6 +144,18 @@ void RadioItemButton::onLoadingStopped()
void RadioItemButton::onPaletteChanged()
{
QPalette pal = qApp->palette();
QGSettings * styleGsettings = nullptr;
const QByteArray styleId(THEME_SCHAME);
if (QGSettings::isSchemaInstalled(styleId)) {
styleGsettings = new QGSettings(styleId, QByteArray(), this);
QString currentTheme = styleGsettings->get(COLOR_THEME).toString();
if(currentTheme == "ukui-default"){
pal = themePalette(true, this);
}
}
this->setPalette(pal);
refreshButtonIcon();
}
@ -233,7 +249,7 @@ void RadioItemButton::refreshButtonIcon()
} else {
m_backgroundColor = COLOR_BRIGHT_TEXT;
m_backgroundColor.setAlphaF(0.12);
if (qApp->palette().base().color().red() > MIDDLE_COLOR) {
if (this->palette().base().color().red() > MIDDLE_COLOR) {
m_iconLabel->setPixmap(m_pixmap);
} else {
m_iconLabel->setPixmap(loadSvg(m_pixmap, PixmapColor::WHITE));

View File

@ -0,0 +1,219 @@
#ifndef THEMEPALETTE_H
#define THEMEPALETTE_H
#include <QPalette>
#include <QApplication>
static QPalette themePalette(bool isDark, QWidget *widget)
{
QPalette palette = qApp->palette();
//ukui-light palette UKUI3.1
QColor windowText_at(38, 38, 38),
windowText_iat(0, 0, 0, 255 * 0.55),
windowText_dis(0, 0, 0, 255 * 0.3),
button_at(230, 230, 230),
button_iat(230, 230, 230),
button_dis(233, 233, 233),
light_at(255, 255, 255),
light_iat(255, 255, 255),
light_dis(242, 242, 242),
midlight_at(218, 218, 218),
midlight_iat(218, 218, 218),
midlight_dis(230, 230, 230),
dark_at(77, 77, 77),
dark_iat(77, 77, 77),
dark_dis(64, 64, 64),
mid_at(115, 115, 115),
mid_iat(115, 115, 115),
mid_dis(102, 102, 102),
text_at(38, 38, 38),
text_iat(38, 38, 38),
text_dis(0, 0, 0, 255 * 0.3),
brightText_at(0, 0, 0),
brightText_iat(0, 0, 0),
brightText_dis(0, 0, 0),
buttonText_at(38, 38, 38),
buttonText_iat(38, 38, 38),
buttonText_dis(179, 179, 179),
base_at(255, 255, 255),
base_iat(245, 245, 245),
base_dis(237, 237, 237),
window_at(245, 245, 245),
window_iat(237, 237, 237),
window_dis(230, 230, 230),
shadow_at(0, 0, 0, 255 * 0.16),
shadow_iat(0, 0, 0, 255 * 0.16),
shadow_dis(0, 0, 0, 255 * 0.21),
highLight_at(55, 144, 250),
highLight_iat(55, 144, 250),
highLight_dis(233, 233, 233),
highLightText_at(255, 255, 255),
highLightText_iat(255, 255, 255),
highLightText_dis(179, 179, 179),
link_at(55, 144, 250),
link_iat(55, 144, 250),
link_dis(55, 144, 250),
linkVisited_at(114, 46, 209),
linkVisited_iat(114, 46, 209),
linkVisited_dis(114, 46, 209),
alternateBase_at(245, 245, 245),
alternateBase_iat(245, 245, 245),
alternateBase_dis(245, 245, 245),
noRale_at(240, 240, 240),
noRole_iat(240, 240, 240),
noRole_dis(217, 217, 217),
toolTipBase_at(255, 255, 255),
toolTipBase_iat(255, 255, 255),
toolTipBase_dis(255, 255, 255),
toolTipText_at(38, 38, 38),
toolTipText_iat(38, 38, 38),
toolTipText_dis(38, 38, 38),
placeholderText_at(0, 0, 0, 255 * 0.35),
placeholderText_iat(0, 0, 0, 255 * 0.35),
placeholderText_dis(0, 0, 0, 255 * 0.3);
//ukui-dark
if (isDark) {
windowText_at.setRgb(217, 217, 217);
windowText_iat.setRgb(255, 255, 255, 255 * 0.55);
windowText_dis.setRgb(255, 255, 255, 255 * 0.3);
button_at.setRgb(55, 55, 59);
button_iat.setRgb(55, 55, 59);
button_dis.setRgb(46, 46, 46);
light_at.setRgb(255, 255, 255);
light_iat.setRgb(255, 255, 255);
light_dis.setRgb(242, 242, 242);
midlight_at.setRgb(95, 95, 98);
midlight_iat.setRgb(95, 95, 98);
midlight_dis.setRgb(79, 79, 82);
dark_at.setRgb(38, 38, 38);
dark_iat.setRgb(38, 38, 38);
dark_dis.setRgb(26, 26, 26);
mid_at.setRgb(115, 115, 115);
mid_iat.setRgb(115, 115, 115);
mid_dis.setRgb(102, 102, 102);
text_at.setRgb(217, 217, 217);
text_iat.setRgb(217, 217, 217);
text_dis.setRgb(255, 255, 255, 255 * 0.3);
brightText_at.setRgb(255, 255, 255);
brightText_iat.setRgb(255, 255, 255);
brightText_dis.setRgb(255, 255, 255);
buttonText_at.setRgb(217, 217, 217);
buttonText_iat.setRgb(217, 217, 217);
buttonText_dis.setRgb(76, 76, 79);
base_at.setRgb(29, 29, 29);
base_iat.setRgb(28, 28, 28);
base_dis.setRgb(36, 36, 36);
window_at.setRgb(35, 36, 38);
window_iat.setRgb(26, 26, 26);
window_dis.setRgb(18, 18, 18);
shadow_at.setRgb(0, 0, 0, 255 * 0.16);
shadow_iat.setRgb(0, 0, 0, 255 * 0.16);
shadow_dis.setRgb(0, 0, 0, 255 * 0.21);
highLight_at.setRgb(55, 144, 250);
highLight_iat.setRgb(55, 144, 250);
highLight_dis.setRgb(46, 46, 46);
highLightText_at.setRgb(255, 255, 255);
highLightText_iat.setRgb(255, 255, 255);
highLightText_dis.setRgb(77, 77, 77);
link_at.setRgb(55, 144, 250);
link_iat.setRgb(55, 144, 250);
link_dis.setRgb(55, 144, 250);
linkVisited_at.setRgb(114, 46, 209);
linkVisited_iat.setRgb(114, 46, 209);
linkVisited_dis.setRgb(114, 46, 209);
alternateBase_at.setRgb(38, 38, 38);
alternateBase_iat.setRgb(38, 38, 38);
alternateBase_dis.setRgb(38, 38, 38);
noRale_at.setRgb(51, 51, 51);
noRole_iat.setRgb(51, 51, 51);
noRole_dis.setRgb(60, 60, 60);
toolTipBase_at.setRgb(38, 38, 38);
toolTipBase_iat.setRgb(38, 38, 38);
toolTipBase_dis.setRgb(38, 38, 38);
toolTipText_at.setRgb(217, 217, 217);
toolTipText_iat.setRgb(217, 217, 217);
toolTipText_dis.setRgb(217, 217, 217);
placeholderText_at.setRgb(255, 255, 255, 255 * 0.35);
placeholderText_iat.setRgb(255, 255, 255, 255 * 0.35);
placeholderText_dis.setRgb(255, 255, 255, 255 * 0.3);
}
palette.setColor(QPalette::Active, QPalette::WindowText, windowText_at);
palette.setColor(QPalette::Inactive, QPalette::WindowText, windowText_iat);
palette.setColor(QPalette::Disabled, QPalette::WindowText, windowText_dis);
palette.setColor(QPalette::Active, QPalette::Button, button_at);
palette.setColor(QPalette::Inactive, QPalette::Button, button_iat);
palette.setColor(QPalette::Disabled, QPalette::Button, button_dis);
palette.setColor(QPalette::Active, QPalette::Light, light_at);
palette.setColor(QPalette::Inactive, QPalette::Light, light_iat);
palette.setColor(QPalette::Disabled, QPalette::Light, light_dis);
palette.setColor(QPalette::Active, QPalette::Midlight, midlight_at);
palette.setColor(QPalette::Inactive, QPalette::Midlight, midlight_iat);
palette.setColor(QPalette::Disabled, QPalette::Midlight, midlight_dis);
palette.setColor(QPalette::Active, QPalette::Dark, dark_at);
palette.setColor(QPalette::Inactive, QPalette::Dark, dark_iat);
palette.setColor(QPalette::Disabled, QPalette::Dark, dark_dis);
palette.setColor(QPalette::Active, QPalette::Mid, mid_at);
palette.setColor(QPalette::Inactive, QPalette::Mid, mid_iat);
palette.setColor(QPalette::Disabled, QPalette::Mid, mid_dis);
palette.setColor(QPalette::Active, QPalette::Text, text_at);
palette.setColor(QPalette::Inactive, QPalette::Text, text_iat);
palette.setColor(QPalette::Disabled, QPalette::Text, text_dis);
palette.setColor(QPalette::Active, QPalette::BrightText, brightText_at);
palette.setColor(QPalette::Inactive, QPalette::BrightText, brightText_iat);
palette.setColor(QPalette::Disabled, QPalette::BrightText, brightText_dis);
palette.setColor(QPalette::Active, QPalette::ButtonText, buttonText_at);
palette.setColor(QPalette::Inactive, QPalette::ButtonText, buttonText_iat);
palette.setColor(QPalette::Disabled, QPalette::ButtonText, buttonText_dis);
palette.setColor(QPalette::Active, QPalette::Base, base_at);
palette.setColor(QPalette::Inactive, QPalette::Base, base_iat);
palette.setColor(QPalette::Disabled, QPalette::Base, base_dis);
palette.setColor(QPalette::Active, QPalette::Window, window_at);
palette.setColor(QPalette::Inactive, QPalette::Window, window_iat);
palette.setColor(QPalette::Disabled, QPalette::Window, window_dis);
palette.setColor(QPalette::Active, QPalette::Shadow, shadow_at);
palette.setColor(QPalette::Inactive, QPalette::Shadow, shadow_iat);
palette.setColor(QPalette::Disabled, QPalette::Shadow, shadow_dis);
palette.setColor(QPalette::Active, QPalette::HighlightedText, highLightText_at);
palette.setColor(QPalette::Inactive, QPalette::HighlightedText, highLightText_iat);
palette.setColor(QPalette::Disabled, QPalette::HighlightedText, highLightText_dis);
palette.setColor(QPalette::Active, QPalette::AlternateBase, alternateBase_at);
palette.setColor(QPalette::Inactive, QPalette::AlternateBase, alternateBase_iat);
palette.setColor(QPalette::Disabled, QPalette::AlternateBase, alternateBase_dis);
palette.setColor(QPalette::Active, QPalette::NoRole, noRale_at);
palette.setColor(QPalette::Inactive, QPalette::NoRole, noRole_iat);
palette.setColor(QPalette::Disabled, QPalette::NoRole, noRole_dis);
palette.setColor(QPalette::Active, QPalette::ToolTipBase, toolTipBase_at);
palette.setColor(QPalette::Inactive, QPalette::ToolTipBase, toolTipBase_iat);
palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, toolTipBase_dis);
palette.setColor(QPalette::Active, QPalette::ToolTipText, toolTipText_at);
palette.setColor(QPalette::Inactive, QPalette::ToolTipText, toolTipText_iat);
palette.setColor(QPalette::Disabled, QPalette::ToolTipText, toolTipText_dis);
#if (QT_VERSION >= QT_VERSION_CHECK(5,12,0))
palette.setColor(QPalette::Active, QPalette::PlaceholderText, placeholderText_at);
palette.setColor(QPalette::Inactive, QPalette::PlaceholderText, placeholderText_iat);
palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, placeholderText_dis);
#endif
return palette;
}
#endif // THEMEPALETTE_H

View File

@ -7,7 +7,8 @@ HEADERS += \
$$PWD/loadingdiv.h \
$$PWD/radioitembutton.h \
$$PWD/switchbutton.h \
$$PWD/kylable.h
$$PWD/kylable.h \
$$PWD/themepalette.h
SOURCES += \