mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-13 12:22:05 +08:00
重写QSS组件,让主题和元素更改更方便
This commit is contained in:
94
inc/spkqsshelper.h
Normal file
94
inc/spkqsshelper.h
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <QColor>
|
||||
|
||||
namespace SpkUi
|
||||
{
|
||||
QColor ColorTextOnBackground(QColor);
|
||||
|
||||
namespace Qss
|
||||
{
|
||||
enum ColorSetIndex
|
||||
{
|
||||
GlobalBgnd = 0,
|
||||
ControlsBgnd,
|
||||
ControlsBgndHighlighted,
|
||||
SelectionBgnd, AccentColor = SelectionBgnd,
|
||||
SelectionBgndHighlighted, AccentColorHighlighted = SelectionBgndHighlighted,
|
||||
LightCtrlsGradLight,
|
||||
LightCtrlsGradDark,
|
||||
LightCtrlsGradDarker,
|
||||
DarkCtrlsGradLight,
|
||||
DarkCtrlsGradDark,
|
||||
TextOnSelection, TextOnAccentColor = TextOnSelection,
|
||||
TextOnGlobalBgnd,
|
||||
TextOnControlsBgnd,
|
||||
TextLighter,
|
||||
GlossyEdge,
|
||||
ShadesEdge,
|
||||
};
|
||||
|
||||
const std::map<ColorSetIndex, const char *> ColorSet2Token
|
||||
{
|
||||
{ GlobalBgnd, "GBG_" },
|
||||
{ ControlsBgnd, "CBG_" },
|
||||
{ ControlsBgndHighlighted, "CBGH" },
|
||||
{ SelectionBgnd, "ACC_" },
|
||||
{ SelectionBgndHighlighted, "ACCH" },
|
||||
{ LightCtrlsGradLight, "LCTL1" },
|
||||
{ LightCtrlsGradDark, "LCTL2" },
|
||||
{ LightCtrlsGradDarker, "LCTL3" },
|
||||
{ DarkCtrlsGradLight, "DCTL1" },
|
||||
{ DarkCtrlsGradDark, "DCTL2" },
|
||||
{ TextOnSelection, "TXACC" },
|
||||
{ TextOnGlobalBgnd, "TXGBG" },
|
||||
{ TextOnControlsBgnd, "TXCBG" },
|
||||
{ TextLighter, "TXL" },
|
||||
{ GlossyEdge, "GLS" },
|
||||
{ ShadesEdge, "SHD" }
|
||||
};
|
||||
|
||||
const std::map<ColorSetIndex, QColor>
|
||||
DarkColorSet
|
||||
{
|
||||
{ GlobalBgnd, 0x282828 },
|
||||
{ ControlsBgnd, 0x323232 },
|
||||
{ ControlsBgndHighlighted, 0xff0000 },
|
||||
{ SelectionBgnd, 0x0070ff },
|
||||
{ SelectionBgndHighlighted, QColor(0x0070ff).lighter(120) },
|
||||
{ LightCtrlsGradLight, 0x6b6b6b },
|
||||
{ LightCtrlsGradDark, 0x656565 },
|
||||
{ LightCtrlsGradDarker, 0x606060 },
|
||||
{ DarkCtrlsGradLight, 0x404040 },
|
||||
{ DarkCtrlsGradDark, 0x383838 },
|
||||
{ TextOnSelection, ColorTextOnBackground(0x0070ff) },
|
||||
{ TextOnGlobalBgnd, ColorTextOnBackground(0x282828) },
|
||||
{ TextOnControlsBgnd, ColorTextOnBackground(0x282828) },
|
||||
{ TextLighter, 0xd5d5d5 },
|
||||
{ GlossyEdge, 0x656565 },
|
||||
{ ShadesEdge, 0x7b7b7b }
|
||||
},
|
||||
|
||||
LightColorSet // TODO: Use real light color set
|
||||
{
|
||||
// { GlobalBgnd, 0x282828 },
|
||||
// { ControlsBgnd, 0x282828 },
|
||||
// { ControlsBgndHighlighted, 0xff0000 },
|
||||
// { SelectionBgnd, 0x0070ff },
|
||||
// { SelectionBgndHighlighted, QColor(0x0070ff).lighter(120) },
|
||||
// { LightCtrlsGradLight, 0x6b6b6b },
|
||||
// { LightCtrlsGradDark, 0x656565 },
|
||||
// { LightCtrlsGradDarker, 0x606060 },
|
||||
// { DarkCtrlsGradLight, 0x404040 },
|
||||
// { DarkCtrlsGradDark, 0x383838 },
|
||||
// { TextOnSelection, ColorTextOnBackground(0x0070ff) },
|
||||
// { TextOnGlobalBgnd, ColorTextOnBackground(0x282828) },
|
||||
// { TextOnControlsBgnd, ColorTextOnBackground(0x282828) },
|
||||
// { TextLighter, 0xd5d5d5 }
|
||||
};
|
||||
|
||||
using ColorSet = std::map<Qss::ColorSetIndex, QColor>;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,14 @@
|
||||
#ifndef SPKRESOURCE_H
|
||||
#define SPKRESOURCE_H
|
||||
|
||||
#endif // SPKRESOURCE_H
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class SpkResource : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SpkResource(QObject *parent = nullptr);
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
@@ -8,30 +8,16 @@
|
||||
#include <QString>
|
||||
#include <QSize>
|
||||
#include <QColor>
|
||||
#include <map>
|
||||
|
||||
#include "spkqsshelper.h"
|
||||
#include "dtk/spkdtkplugin.h"
|
||||
|
||||
namespace SpkUi
|
||||
{
|
||||
|
||||
enum SpkUiStyle { Light, Dark };
|
||||
enum SpkButtonStyle { Normal = 0, Recommend, Warn };
|
||||
enum ColorSetIndex
|
||||
{
|
||||
GlobalBgnd = 0,
|
||||
ControlsBgnd,
|
||||
ControlsBgndHighlighted,
|
||||
SelectionBgnd, AccentColor = SelectionBgnd,
|
||||
SelectionBgndHighlighted, AccentColorHighlighted = SelectionBgndHighlighted,
|
||||
LightCtrlsGradLight,
|
||||
LightCtrlsGradDark,
|
||||
LightCtrlsGradDarker,
|
||||
DarkCtrlsGradLight,
|
||||
DarkCtrlsGradDark,
|
||||
TextOnSelection, TextOnAccentColor = TextOnSelection,
|
||||
TextOnGlobalBgnd,
|
||||
TextOnControlsBgnd,
|
||||
TextLighter
|
||||
};
|
||||
|
||||
class SpkPopup;
|
||||
|
||||
@@ -56,7 +42,7 @@ namespace SpkUi
|
||||
extern QSize PrimaryScreenSize;
|
||||
extern SpkDtkPlugin *DtkPlugin;
|
||||
extern QStyle *OldSystemStyle;
|
||||
extern QList<QColor> CurrentColorSet;
|
||||
extern std::map<Qss::ColorSetIndex, QColor> CurrentColorSet;
|
||||
|
||||
extern SpkPopup *Popup;
|
||||
|
||||
@@ -68,16 +54,16 @@ namespace SpkUi
|
||||
namespace Priv
|
||||
{
|
||||
extern bool CrashHandlerActivated;
|
||||
using namespace SpkUi::Qss;
|
||||
}
|
||||
|
||||
void Initialize();
|
||||
void GuessAppropriateTheme();
|
||||
void PrepareForDeepinDesktop();
|
||||
bool CheckIsDeepinDesktop();
|
||||
QString StylesheetFromColors(QList<QColor>);
|
||||
QString StylesheetFromColors(Qss::ColorSet);
|
||||
|
||||
QIcon GetThemedIcon(QString);
|
||||
QColor ColorTextOnBackground(QColor);
|
||||
|
||||
void CrashSignalHandler(int);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user