KanoopGuiQt 1.3.0
Qt GUI utility library
Loading...
Searching...
No Matches
palette.h
1#ifndef PALETTE_H
2#define PALETTE_H
3#include <QPalette>
4#include <QVariant>
5#include <Kanoop/gui/libkanoopgui.h>
6#include <Kanoop/kanoopcommon.h>
7
8/**
9 * @brief QPalette subclass adding named presets, string lookups, and QVariant serialization.
10 *
11 * Palette forwards all QPalette constructors and adds:
12 * - fusionLight() / fusionDark() factory methods for standard Fusion-style palettes
13 * - toVariant() / fromVariant() for QVariant round-trips
14 * - String lookup helpers for ColorRole and ColorGroup enum values
15 * - debugDumpPalette() for diagnostic output
16 */
17class LIBKANOOPGUI_EXPORT Palette : public QPalette
18{
19public:
20 /** @brief Default constructor. */
22 QPalette() {}
23 /**
24 * @brief Construct from a button colour.
25 * @param button Button role colour
26 */
27 Palette(const QColor &button) :
28 QPalette(button) {}
29 /**
30 * @brief Construct from a global colour for the button role.
31 * @param button Global colour constant
32 */
33 Palette(Qt::GlobalColor button) :
34 QPalette(button) {}
35 /**
36 * @brief Construct from button and window colours.
37 * @param button Button role colour
38 * @param window Window role colour
39 */
40 Palette(const QColor &button, const QColor &window) :
41 QPalette(button, window) {}
42 /**
43 * @brief Construct from individual brush values for each role.
44 * @param windowText WindowText brush
45 * @param button Button brush
46 * @param light Light brush
47 * @param dark Dark brush
48 * @param mid Mid brush
49 * @param text Text brush
50 * @param bright_text BrightText brush
51 * @param base Base brush
52 * @param window Window brush
53 */
54 Palette(const QBrush &windowText, const QBrush &button, const QBrush &light,
55 const QBrush &dark, const QBrush &mid, const QBrush &text,
56 const QBrush &bright_text, const QBrush &base, const QBrush &window) :
57 QPalette(windowText, button, light, dark, mid, text, bright_text, base, window) {}
58 /**
59 * @brief Construct from individual colour values for each role.
60 * @param windowText WindowText colour
61 * @param window Window colour
62 * @param light Light colour
63 * @param dark Dark colour
64 * @param mid Mid colour
65 * @param text Text colour
66 * @param base Base colour
67 */
68 Palette(const QColor &windowText, const QColor &window, const QColor &light,
69 const QColor &dark, const QColor &mid, const QColor &text, const QColor &base) :
70 QPalette(windowText, window, light, dark, mid, text, base) {}
71 /**
72 * @brief Copy-construct from a QPalette.
73 * @param palette Source palette
74 */
75 Palette(const QPalette &palette) :
76 QPalette(palette) {}
77
78 /**
79 * @brief Wrap this palette in a QVariant.
80 * @return QVariant containing a copy of this Palette
81 */
82 QVariant toVariant() const { return QVariant::fromValue<Palette>(*this); }
83
84 /**
85 * @brief Unwrap a Palette from a QVariant.
86 * @param value Variant previously created by toVariant()
87 * @return Extracted Palette
88 */
89 static Palette fromVariant(const QVariant& value) { return value.value<Palette>(); }
90
91 /** @brief A list of Palette objects. */
92 class List : public QList<Palette> {};
93
94 /**
95 * @brief Return a light Fusion-style palette.
96 * @return Fusion light palette
97 */
99
100 /**
101 * @brief Return a dark Fusion-style palette.
102 * @return Fusion dark palette
103 */
105
106 /**
107 * @brief Print all colour roles and their values to debug output.
108 * @param palette Palette to dump
109 */
110 static void debugDumpPalette(const Palette& palette);
111
112 /**
113 * @brief Return the string name for a colour role.
114 * @param role QPalette colour role
115 * @return String name, or empty string if unknown
116 */
117 static QString getColorRoleString(ColorRole role) { return _ColorRoleToStringMap.getString(role); }
118
119 /**
120 * @brief Return all registered colour role name strings.
121 * @return List of colour role names
122 */
123 static QStringList getColorRoleStrings() { return _ColorRoleToStringMap.values(); }
124
125 /**
126 * @brief Look up a colour role by its string name.
127 * @param value Colour role name string
128 * @return Matching QPalette::ColorRole, or NoRole if not found
129 */
130 static ColorRole getColorRole(const QString& value) { return _ColorRoleToStringMap.getType(value); }
131
132private:
133 class ColorGroupToStringMap : public KANOOP::EnumToStringMap<QPalette::ColorGroup>
134 {
135 public:
136 ColorGroupToStringMap()
137 {
138 insert(QPalette::Active, "Active");
139 insert(QPalette::Disabled, "Disabled");
140 insert(QPalette::Inactive, "Inactive");
141 }
142 };
143
144 class ColorRoleToStringMap : public KANOOP::EnumToStringMap<QPalette::ColorRole>
145 {
146 public:
147 ColorRoleToStringMap()
148 {
149 insert(QPalette::WindowText, "WindowText");
150 insert(QPalette::Button, "Button");
151 insert(QPalette::Light, "Light");
152 insert(QPalette::Midlight, "Midlight");
153 insert(QPalette::Dark, "Dark");
154 insert(QPalette::Mid, "Mid");
155 insert(QPalette::Text, "Text");
156 insert(QPalette::BrightText, "BrightText");
157 insert(QPalette::ButtonText, "ButtonText");
158 insert(QPalette::Base, "Base");
159 insert(QPalette::Window, "Window");
160 insert(QPalette::Shadow, "Shadow");
161 insert(QPalette::Highlight, "Highlight");
162 insert(QPalette::HighlightedText, "HighlightedText");
163 insert(QPalette::Link, "Link");
164 insert(QPalette::LinkVisited, "LinkVisited");
165 insert(QPalette::AlternateBase, "AlternateBase");
166 insert(QPalette::NoRole, "NoRole");
167 insert(QPalette::ToolTipBase, "ToolTipBase");
168 insert(QPalette::ToolTipText, "ToolTipText");
169 insert(QPalette::PlaceholderText, "PlaceholderText");
170 }
171 };
172
173 static const ColorGroupToStringMap _ColorGroupToStringMap;
174 static const ColorRoleToStringMap _ColorRoleToStringMap;
175};
176
177Q_DECLARE_METATYPE(Palette)
178
179#endif // PALETTE_H
A list of Palette objects.
Definition palette.h:92
QPalette subclass adding named presets, string lookups, and QVariant serialization.
Definition palette.h:18
Palette(const QPalette &palette)
Copy-construct from a QPalette.
Definition palette.h:75
static QStringList getColorRoleStrings()
Return all registered colour role name strings.
Definition palette.h:123
static Palette fusionDark()
Return a dark Fusion-style palette.
Palette(Qt::GlobalColor button)
Construct from a global colour for the button role.
Definition palette.h:33
static Palette fusionLight()
Return a light Fusion-style palette.
static ColorRole getColorRole(const QString &value)
Look up a colour role by its string name.
Definition palette.h:130
static void debugDumpPalette(const Palette &palette)
Print all colour roles and their values to debug output.
Palette(const QColor &button, const QColor &window)
Construct from button and window colours.
Definition palette.h:40
Palette()
Default constructor.
Definition palette.h:21
static Palette fromVariant(const QVariant &value)
Unwrap a Palette from a QVariant.
Definition palette.h:89
Palette(const QColor &windowText, const QColor &window, const QColor &light, const QColor &dark, const QColor &mid, const QColor &text, const QColor &base)
Construct from individual colour values for each role.
Definition palette.h:68
Palette(const QColor &button)
Construct from a button colour.
Definition palette.h:27
QVariant toVariant() const
Wrap this palette in a QVariant.
Definition palette.h:82
Palette(const QBrush &windowText, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &window)
Construct from individual brush values for each role.
Definition palette.h:54
static QString getColorRoleString(ColorRole role)
Return the string name for a colour role.
Definition palette.h:117