Refresh custom colors once color scheme is changed
[qBittorrent.git] / src / gui / uithemecommon.h
blobacc3263f30e7f9d3251eec63ec686282396795c0
1 /*
2 * Bittorrent Client using Qt and libtorrent.
3 * Copyright (C) 2023-2024 Vladimir Golovnev <glassez@yandex.ru>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
18 * USA.
20 * In addition, as a special exception, the copyright holders give permission to
21 * link this program with the OpenSSL project's "OpenSSL" library (or with
22 * modified versions of it that use the same license as the "OpenSSL" library),
23 * and distribute the linked executables. You must obey the GNU General Public
24 * License in all respects for all of the code used other than "OpenSSL". If
25 * you modify file(s), you may extend this exception to your version of the
26 * file(s), but you are not obligated to do so. If you do not wish to do so,
27 * delete this exception statement from your version.
30 #pragma once
32 #include <QColor>
33 #include <QHash>
34 #include <QPalette>
35 #include <QSet>
36 #include <QString>
38 #include "base/global.h"
39 #include "color.h"
41 inline const QString CONFIG_FILE_NAME = u"config.json"_s;
42 inline const QString STYLESHEET_FILE_NAME = u"stylesheet.qss"_s;
43 inline const QString KEY_COLORS = u"colors"_s;
44 inline const QString KEY_COLORS_LIGHT = u"colors.light"_s;
45 inline const QString KEY_COLORS_DARK = u"colors.dark"_s;
47 struct UIThemeColor
49 QColor light;
50 QColor dark;
53 inline QHash<QString, UIThemeColor> defaultUIThemeColors()
55 return {
56 {u"Log.TimeStamp"_s, {Color::Primer::Light::fgSubtle, Color::Primer::Dark::fgSubtle}},
57 {u"Log.Normal"_s, {{}, {}}},
58 {u"Log.Info"_s, {Color::Primer::Light::accentFg, Color::Primer::Dark::accentFg}},
59 {u"Log.Warning"_s, {Color::Primer::Light::severeFg, Color::Primer::Dark::severeFg}},
60 {u"Log.Critical"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}},
61 {u"Log.BannedPeer"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}},
63 {u"RSS.ReadArticle"_s, {{}, {}}},
64 {u"RSS.UnreadArticle"_s, {{}, {}}},
66 {u"TransferList.Downloading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
67 {u"TransferList.StalledDownloading"_s, {Color::Primer::Light::successEmphasis, Color::Primer::Dark::successEmphasis}},
68 {u"TransferList.DownloadingMetadata"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
69 {u"TransferList.ForcedDownloadingMetadata"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
70 {u"TransferList.ForcedDownloading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
71 {u"TransferList.Uploading"_s, {Color::Primer::Light::accentFg, Color::Primer::Dark::accentFg}},
72 {u"TransferList.StalledUploading"_s, {Color::Primer::Light::accentEmphasis, Color::Primer::Dark::accentEmphasis}},
73 {u"TransferList.ForcedUploading"_s, {Color::Primer::Light::accentFg, Color::Primer::Dark::accentFg}},
74 {u"TransferList.QueuedDownloading"_s, {Color::Primer::Light::scaleYellow6, Color::Primer::Dark::scaleYellow6}},
75 {u"TransferList.QueuedUploading"_s, {Color::Primer::Light::scaleYellow6, Color::Primer::Dark::scaleYellow6}},
76 {u"TransferList.CheckingDownloading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
77 {u"TransferList.CheckingUploading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
78 {u"TransferList.CheckingResumeData"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
79 {u"TransferList.PausedDownloading"_s, {Color::Primer::Light::fgMuted, Color::Primer::Dark::fgMuted}},
80 {u"TransferList.PausedUploading"_s, {Color::Primer::Light::doneFg, Color::Primer::Dark::doneFg}},
81 {u"TransferList.Moving"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}},
82 {u"TransferList.MissingFiles"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}},
83 {u"TransferList.Error"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}}
87 inline QSet<QString> defaultUIThemeIcons()
89 return {
90 u"application-exit"_s,
91 u"application-rss"_s,
92 u"application-url"_s,
93 u"browser-cookies"_s,
94 u"chart-line"_s,
95 u"checked-completed"_s,
96 u"configure"_s,
97 u"connected"_s,
98 u"dialog-warning"_s,
99 u"directory"_s,
100 u"disconnected"_s,
101 u"download"_s,
102 u"downloading"_s,
103 u"edit-clear"_s,
104 u"edit-copy"_s,
105 u"edit-find"_s,
106 u"edit-rename"_s,
107 u"error"_s,
108 u"fileicon"_s,
109 u"filter-active"_s,
110 u"filter-all"_s,
111 u"filter-inactive"_s,
112 u"filter-stalled"_s,
113 u"firewalled"_s,
114 u"folder-documents"_s,
115 u"folder-new"_s,
116 u"folder-remote"_s,
117 u"force-recheck"_s,
118 u"go-bottom"_s,
119 u"go-down"_s,
120 u"go-top"_s,
121 u"go-up"_s,
122 u"hash"_s,
123 u"help-about"_s,
124 u"help-contents"_s,
125 u"insert-link"_s,
126 u"ip-blocked"_s,
127 u"list-add"_s,
128 u"list-remove"_s,
129 u"loading"_s,
130 u"mail-inbox"_s,
131 u"name"_s,
132 u"network-connect"_s,
133 u"network-server"_s,
134 u"object-locked"_s,
135 u"peers"_s,
136 u"peers-add"_s,
137 u"peers-remove"_s,
138 u"plugins"_s,
139 u"preferences-advanced"_s,
140 u"preferences-bittorrent"_s,
141 u"preferences-desktop"_s,
142 u"preferences-webui"_s,
143 u"qbittorrent-tray"_s,
144 u"qbittorrent-tray-dark"_s,
145 u"qbittorrent-tray-light"_s,
146 u"queued"_s,
147 u"ratio"_s,
148 u"reannounce"_s,
149 u"rss_read_article"_s,
150 u"rss_unread_article"_s,
151 u"security-high"_s,
152 u"security-low"_s,
153 u"set-location"_s,
154 u"slow"_s,
155 u"slow_off"_s,
156 u"speedometer"_s,
157 u"stalledDL"_s,
158 u"stalledUP"_s,
159 u"stopped"_s,
160 u"system-log-out"_s,
161 u"tags"_s,
162 u"task-complete"_s,
163 u"task-reject"_s,
164 u"torrent-creator"_s,
165 u"torrent-magnet"_s,
166 u"torrent-start"_s,
167 u"torrent-start-forced"_s,
168 u"torrent-stop"_s,
169 u"tracker-error"_s,
170 u"tracker-warning"_s,
171 u"trackerless"_s,
172 u"trackers"_s,
173 u"upload"_s,
174 u"view-categories"_s,
175 u"view-preview"_s,
176 u"view-refresh"_s,
177 u"view-statistics"_s,
178 u"wallet-open"_s