1 /***************************************************************************
2 * Copyright (C) 2005-09 by the Quassel Project *
3 * devel@quassel-irc.org *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) version 3. *
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 *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
21 #include "colorsettingspage.h"
24 #include "qtuisettings.h"
25 #include "qtuistyle.h"
26 #include "colorbutton.h"
28 #include <QColorDialog>
33 ColorSettingsPage::ColorSettingsPage(QWidget *parent)
34 : SettingsPage(tr("Appearance"), tr("Color settings"), parent),
35 mapper(new QSignalMapper(this))
39 foreach(ColorButton *button, findChildren<ColorButton *>()) {
40 connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
41 mapper->setMapping(button, button);
43 foreach(QCheckBox *checkBox, findChildren<QCheckBox *>()) {
44 connect(checkBox, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
47 connect(mapper, SIGNAL(mapped(QWidget *)), this, SLOT(chooseColor(QWidget *)));
49 //disable unused buttons:
51 ui.inactiveActivityUseBG->setEnabled(false);
52 ui.noActivityUseBG->setEnabled(false);
53 ui.highlightActivityUseBG->setEnabled(false);
54 ui.newMessageActivityUseBG->setEnabled(false);
55 ui.otherActivityUseBG->setEnabled(false);
57 ui.nickFG->setEnabled(false);
58 ui.nickUseBG->setEnabled(false);
59 ui.hostmaskFG->setEnabled(false);
60 ui.hostmaskUseBG->setEnabled(false);
61 ui.channelnameFG->setEnabled(false);
62 ui.channelnameUseBG->setEnabled(false);
63 ui.modeFlagsFG->setEnabled(false);
64 ui.modeFlagsUseBG->setEnabled(false);
65 ui.urlFG->setEnabled(false);
66 ui.urlUseBG->setEnabled(false);
68 ui.onlineStatusUseBG->setEnabled(false);
69 ui.awayStatusUseBG->setEnabled(false);
73 bool ColorSettingsPage::hasDefaults() const {
77 void ColorSettingsPage::defaults() {
79 defaultServerActivity();
80 defaultUserActivity();
82 defaultMircColorCodes();
90 void ColorSettingsPage::defaultBufferview() {
91 ui.inactiveActivityFG->setColor(QColor(Qt::gray));
92 ui.inactiveActivityBG->setColor(QColor(Qt::white));
93 ui.inactiveActivityBG->setEnabled(false);
94 ui.inactiveActivityUseBG->setChecked(false);
95 ui.noActivityFG->setColor(QColor(Qt::black));
96 ui.noActivityBG->setColor(QColor(Qt::white));
97 ui.noActivityBG->setEnabled(false);
98 ui.noActivityUseBG->setChecked(false);
99 ui.highlightActivityFG->setColor(QColor(Qt::magenta));
100 ui.highlightActivityBG->setColor(QColor(Qt::white));
101 ui.highlightActivityBG->setEnabled(false);
102 ui.highlightActivityUseBG->setChecked(false);
103 ui.newMessageActivityFG->setColor(QColor(Qt::green));
104 ui.newMessageActivityBG->setColor(QColor(Qt::white));
105 ui.newMessageActivityBG->setEnabled(false);
106 ui.newMessageActivityUseBG->setChecked(false);
107 ui.otherActivityFG->setColor(QColor(Qt::darkGreen));
108 ui.otherActivityBG->setColor(QColor(Qt::white));
109 ui.otherActivityBG->setEnabled(false);
110 ui.otherActivityUseBG->setChecked(false);
113 void ColorSettingsPage::defaultServerActivity() {
114 ui.errorMessageFG->setColor(QtUi::style()->format(UiStyle::ErrorMsg, Settings::Default).foreground().color());
115 ui.errorMessageBG->setColor(QColor("white"));
116 ui.errorMessageBG->setEnabled(false);
117 ui.errorMessageUseBG->setChecked(false);
118 ui.noticeMessageFG->setColor(QtUi::style()->format(UiStyle::NoticeMsg, Settings::Default).foreground().color());
119 ui.noticeMessageBG->setColor(QColor("white"));
120 ui.noticeMessageBG->setEnabled(false);
121 ui.noticeMessageUseBG->setChecked(false);
122 ui.plainMessageFG->setColor(QtUi::style()->format(UiStyle::PlainMsg, Settings::Default).foreground().color());
123 ui.plainMessageBG->setColor(QColor("white"));
124 ui.plainMessageBG->setEnabled(false);
125 ui.plainMessageUseBG->setChecked(false);
126 ui.serverMessageFG->setColor(QtUi::style()->format(UiStyle::ServerMsg, Settings::Default).foreground().color());
127 ui.serverMessageBG->setColor(QColor("white"));
128 ui.serverMessageBG->setEnabled(false);
129 ui.serverMessageUseBG->setChecked(false);
130 ui.highlightColor->setColor(QColor("lightcoral"));
133 void ColorSettingsPage::defaultUserActivity() {
134 ui.actionMessageFG->setColor(QtUi::style()->format(UiStyle::ActionMsg, Settings::Default).foreground().color());
135 ui.actionMessageBG->setColor(QColor("white"));
136 ui.actionMessageBG->setEnabled(false);
137 ui.actionMessageUseBG->setChecked(false);
138 ui.joinMessageFG->setColor(QtUi::style()->format(UiStyle::JoinMsg, Settings::Default).foreground().color());
139 ui.joinMessageBG->setColor(QColor("white"));
140 ui.joinMessageBG->setEnabled(false);
141 ui.joinMessageUseBG->setChecked(false);
142 ui.kickMessageFG->setColor(QtUi::style()->format(UiStyle::KickMsg, Settings::Default).foreground().color());
143 ui.kickMessageBG->setColor(QColor("white"));
144 ui.kickMessageBG->setEnabled(false);
145 ui.kickMessageUseBG->setChecked(false);
146 ui.modeMessageFG->setColor(QtUi::style()->format(UiStyle::ModeMsg, Settings::Default).foreground().color());
147 ui.modeMessageBG->setColor(QColor("white"));
148 ui.modeMessageBG->setEnabled(false);
149 ui.modeMessageUseBG->setChecked(false);
150 ui.partMessageFG->setColor(QtUi::style()->format(UiStyle::PartMsg, Settings::Default).foreground().color());
151 ui.partMessageBG->setColor(QColor("white"));
152 ui.partMessageBG->setEnabled(false);
153 ui.partMessageUseBG->setChecked(false);
154 ui.quitMessageFG->setColor(QtUi::style()->format(UiStyle::QuitMsg, Settings::Default).foreground().color());
155 ui.quitMessageBG->setColor(QColor("white"));
156 ui.quitMessageBG->setEnabled(false);
157 ui.quitMessageUseBG->setChecked(false);
158 ui.renameMessageFG->setColor(QtUi::style()->format(UiStyle::RenameMsg, Settings::Default).foreground().color());
159 ui.renameMessageBG->setColor(QColor("white"));
160 ui.renameMessageBG->setEnabled(false);
161 ui.renameMessageUseBG->setChecked(false);
164 void ColorSettingsPage::defaultMessage() {
165 ui.timestampFG->setColor(QtUi::style()->format(UiStyle::Timestamp, Settings::Default).foreground().color());
166 ui.timestampBG->setColor(QColor("white"));
167 ui.timestampBG->setEnabled(false);
168 ui.timestampUseBG->setChecked(false);
169 ui.senderFG->setColor(QtUi::style()->format(UiStyle::Sender, Settings::Default).foreground().color());
170 ui.senderBG->setColor(QColor("white"));
171 ui.senderBG->setEnabled(false);
172 ui.senderUseBG->setChecked(false);
173 ui.newMsgMarkerFG->setColor(Qt::red);
176 ui.nickFG->setColor(QColor("black"));
177 ui.nickBG->setColor(QColor("white"));
178 ui.nickBG->setEnabled(false);
179 ui.nickUseBG->setChecked(false);
180 ui.hostmaskFG->setColor(QColor("black"));
181 ui.hostmaskBG->setColor(QColor("white"));
182 ui.hostmaskBG->setEnabled(false);
183 ui.hostmaskUseBG->setChecked(false);
184 ui.channelnameFG->setColor(QColor("black"));
185 ui.channelnameBG->setColor(QColor("white"));
186 ui.channelnameBG->setEnabled(false);
187 ui.channelnameUseBG->setChecked(false);
188 ui.modeFlagsFG->setColor(QColor("black"));
189 ui.modeFlagsBG->setColor(QColor("white"));
190 ui.modeFlagsBG->setEnabled(false);
191 ui.modeFlagsUseBG->setChecked(false);
192 ui.urlFG->setColor(QColor("black"));
193 ui.urlBG->setColor(QColor("white"));
194 ui.urlBG->setEnabled(false);
195 ui.urlUseBG->setChecked(false);
199 void ColorSettingsPage::defaultMircColorCodes() {
200 ui.color0->setColor(QtUi::style()->format(UiStyle::FgCol00, Settings::Default).foreground().color());
201 ui.color1->setColor(QtUi::style()->format(UiStyle::FgCol01, Settings::Default).foreground().color());
202 ui.color2->setColor(QtUi::style()->format(UiStyle::FgCol02, Settings::Default).foreground().color());
203 ui.color3->setColor(QtUi::style()->format(UiStyle::FgCol03, Settings::Default).foreground().color());
204 ui.color4->setColor(QtUi::style()->format(UiStyle::FgCol04, Settings::Default).foreground().color());
205 ui.color5->setColor(QtUi::style()->format(UiStyle::FgCol05, Settings::Default).foreground().color());
206 ui.color6->setColor(QtUi::style()->format(UiStyle::FgCol06, Settings::Default).foreground().color());
207 ui.color7->setColor(QtUi::style()->format(UiStyle::FgCol07, Settings::Default).foreground().color());
208 ui.color8->setColor(QtUi::style()->format(UiStyle::FgCol08, Settings::Default).foreground().color());
209 ui.color9->setColor(QtUi::style()->format(UiStyle::FgCol09, Settings::Default).foreground().color());
210 ui.color10->setColor(QtUi::style()->format(UiStyle::FgCol10, Settings::Default).foreground().color());
211 ui.color11->setColor(QtUi::style()->format(UiStyle::FgCol11, Settings::Default).foreground().color());
212 ui.color12->setColor(QtUi::style()->format(UiStyle::FgCol12, Settings::Default).foreground().color());
213 ui.color13->setColor(QtUi::style()->format(UiStyle::FgCol13, Settings::Default).foreground().color());
214 ui.color14->setColor(QtUi::style()->format(UiStyle::FgCol14, Settings::Default).foreground().color());
215 ui.color15->setColor(QtUi::style()->format(UiStyle::FgCol15, Settings::Default).foreground().color());
218 void ColorSettingsPage::defaultNickview() {
219 ui.onlineStatusFG->setColor(QColor(Qt::black));
220 ui.onlineStatusBG->setColor(QColor("white"));
221 ui.onlineStatusBG->setEnabled(false);
222 ui.onlineStatusUseBG->setChecked(false);
223 ui.awayStatusFG->setColor(QColor(Qt::gray));
224 ui.awayStatusBG->setColor(QColor("white"));
225 ui.awayStatusBG->setEnabled(false);
226 ui.awayStatusUseBG->setChecked(false);
229 void ColorSettingsPage::load() {
230 QtUiStyleSettings s("Colors");
231 settings["InactiveActivityFG"] = s.value("inactiveActivityFG", QVariant(QColor(Qt::gray)));
232 ui.inactiveActivityFG->setColor(settings["InactiveActivityFG"].value<QColor>());
233 settings["InactiveActivityBG"] = s.value("inactiveActivityBG", QVariant(QColor(Qt::white)));
234 ui.inactiveActivityBG->setColor(settings["InactiveActivityBG"].value<QColor>());
235 settings["InactiveActivityUseBG"] = s.value("inactiveActivityUseBG");
236 ui.inactiveActivityUseBG->setChecked(settings["InactiveActivityUseBG"].toBool());
238 settings["NoActivityFG"] = s.value("noActivityFG", QVariant(QColor(Qt::black)));
239 ui.noActivityFG->setColor(settings["NoActivityFG"].value<QColor>());
240 settings["NoActivityBG"] = s.value("noActivityBG", QVariant(QColor(Qt::white)));
241 ui.noActivityBG->setColor(settings["NoActivityBG"].value<QColor>());
242 settings["NoActivityUseBG"] = s.value("noActivityUseBG");
243 ui.noActivityUseBG->setChecked(settings["NoActivityUseBG"].toBool());
245 settings["HighlightActivityFG"] = s.value("highlightActivityFG", QVariant(QColor(Qt::magenta)));
246 ui.highlightActivityFG->setColor(settings["HighlightActivityFG"].value<QColor>());
247 settings["HighlightActivityBG"] = s.value("highlightActivityBG", QVariant(QColor(Qt::white)));
248 ui.highlightActivityBG->setColor(settings["HighlightActivityBG"].value<QColor>());
249 settings["HighlightActivityUseBG"] = s.value("highlightActivityUseBG");
250 ui.highlightActivityUseBG->setChecked(settings["HighlightActivityUseBG"].toBool());
252 settings["NewMessageActivityFG"] = s.value("newMessageActivityFG", QVariant(QColor(Qt::green)));
253 ui.newMessageActivityFG->setColor(settings["NewMessageActivityFG"].value<QColor>());
254 settings["NewMessageActivityBG"] = s.value("newMessageActivityBG", QVariant(QColor(Qt::white)));
255 ui.newMessageActivityBG->setColor(settings["NewMessageActivityBG"].value<QColor>());
256 settings["NewMessageActivityUseBG"] = s.value("newMessageActivityUseBG");
257 ui.newMessageActivityUseBG->setChecked(settings["NewMessageActivityUseBG"].toBool());
259 settings["OtherActivityFG"] = s.value("otherActivityFG", QVariant(QColor(Qt::darkGreen)));
260 ui.otherActivityFG->setColor(settings["OtherActivityFG"].value<QColor>());
261 settings["OtherActivityBG"] = s.value("otherActivityBG", QVariant(QColor(Qt::white)));
262 ui.otherActivityBG->setColor(settings["OtherActivityBG"].value<QColor>());
263 settings["OtherActivityUseBG"] = s.value("otherActivityUseBG");
264 ui.otherActivityUseBG->setChecked(settings["OtherActivityUseBG"].toBool());
266 ui.actionMessageFG->setColor(QtUi::style()->format(UiStyle::ActionMsg).foreground().color());
267 ui.errorMessageFG->setColor(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color());
268 ui.joinMessageFG->setColor(QtUi::style()->format(UiStyle::JoinMsg).foreground().color());
269 ui.kickMessageFG->setColor(QtUi::style()->format(UiStyle::KickMsg).foreground().color());
270 ui.modeMessageFG->setColor(QtUi::style()->format(UiStyle::ModeMsg).foreground().color());
271 ui.noticeMessageFG->setColor(QtUi::style()->format(UiStyle::NoticeMsg).foreground().color());
272 ui.partMessageFG->setColor(QtUi::style()->format(UiStyle::PartMsg).foreground().color());
273 ui.plainMessageFG->setColor(QtUi::style()->format(UiStyle::PlainMsg).foreground().color());
274 ui.quitMessageFG->setColor(QtUi::style()->format(UiStyle::QuitMsg).foreground().color());
275 ui.renameMessageFG->setColor(QtUi::style()->format(UiStyle::RenameMsg).foreground().color());
276 ui.serverMessageFG->setColor(QtUi::style()->format(UiStyle::ServerMsg).foreground().color());
278 ui.actionMessageBG->setColor(QtUi::style()->format(UiStyle::ActionMsg).background().color());
279 ui.errorMessageBG->setColor(QtUi::style()->format(UiStyle::ErrorMsg).background().color());
280 ui.joinMessageBG->setColor(QtUi::style()->format(UiStyle::JoinMsg).background().color());
281 ui.kickMessageBG->setColor(QtUi::style()->format(UiStyle::KickMsg).background().color());
282 ui.modeMessageBG->setColor(QtUi::style()->format(UiStyle::ModeMsg).background().color());
283 ui.noticeMessageBG->setColor(QtUi::style()->format(UiStyle::NoticeMsg).background().color());
284 ui.partMessageBG->setColor(QtUi::style()->format(UiStyle::PartMsg).background().color());
285 ui.plainMessageBG->setColor(QtUi::style()->format(UiStyle::PlainMsg).background().color());
286 ui.quitMessageBG->setColor(QtUi::style()->format(UiStyle::QuitMsg).background().color());
287 ui.renameMessageBG->setColor(QtUi::style()->format(UiStyle::RenameMsg).background().color());
288 ui.serverMessageBG->setColor(QtUi::style()->format(UiStyle::ServerMsg).background().color());
290 // FIXME set to false if appropriate
291 settings["ActionMessageUseBG"] = s.value("actionMessageUseBG", QVariant(false));
292 if(settings["ActionMessageUseBG"].toBool()) {
293 ui.actionMessageUseBG->setChecked(true);
294 ui.actionMessageBG->setEnabled(true);
296 settings["ErrorMessageUseBG"] = s.value("errorMessageUseBG", QVariant(false));
297 if(settings["ErrorMessageUseBG"].toBool()) {
298 ui.errorMessageUseBG->setChecked(true);
299 ui.errorMessageBG->setEnabled(true);
301 settings["JoinMessageUseBG"] = s.value("joinMessageUseBG", QVariant(false));
302 if(settings["JoinMessageUseBG"].toBool()) {
303 ui.joinMessageUseBG->setChecked(true);
304 ui.joinMessageBG->setEnabled(true);
306 settings["KickMessageUseBG"] = s.value("kickMessageUseBG", QVariant(false));
307 if(settings["KickMessageUseBG"].toBool()) {
308 ui.kickMessageUseBG->setChecked(true);
309 ui.kickMessageBG->setEnabled(true);
311 settings["ModeMessageUseBG"] = s.value("modeMessageUseBG", QVariant(false));
312 if(settings["ModeMessageUseBG"].toBool()) {
313 ui.modeMessageUseBG->setChecked(true);
314 ui.modeMessageBG->setEnabled(true);
316 settings["NoticeMessageUseBG"] = s.value("noticeMessageUseBG", QVariant(false));
317 if(settings["NoticeMessageUseBG"].toBool()) {
318 ui.noticeMessageUseBG->setChecked(true);
319 ui.noticeMessageBG->setEnabled(true);
321 settings["PartMessageUseBG"] = s.value("partMessageUseBG", QVariant(false));
322 if(settings["PartMessageUseBG"].toBool()) {
323 ui.partMessageUseBG->setChecked(true);
324 ui.partMessageBG->setEnabled(true);
326 settings["PlainMessageUseBG"] = s.value("plainMessageUseBG", QVariant(false));
327 if(settings["PlainMessageUseBG"].toBool()) {
328 ui.plainMessageUseBG->setChecked(true);
329 ui.plainMessageBG->setEnabled(true);
331 settings["QuitMessageUseBG"] = s.value("quitMessageUseBG", QVariant(false));
332 if(settings["QuitMessageUseBG"].toBool()) {
333 ui.quitMessageUseBG->setChecked(true);
334 ui.quitMessageBG->setEnabled(true);
336 settings["RenameMessageUseBG"] = s.value("renameMessageUseBG", QVariant(false));
337 if(settings["RenameMessageUseBG"].toBool()) {
338 ui.renameMessageUseBG->setChecked(true);
339 ui.renameMessageBG->setEnabled(true);
341 settings["ServerMessageUseBG"] = s.value("serverMessageUseBG", QVariant(false));
342 if(settings["ServerMessageUseBG"].toBool()) {
343 ui.serverMessageUseBG->setChecked(true);
344 ui.serverMessageBG->setEnabled(true);
347 ui.timestampFG->setColor(QtUi::style()->format(UiStyle::Timestamp).foreground().color());
348 ui.timestampBG->setColor(QtUi::style()->format(UiStyle::Timestamp).background().color());
349 ui.senderFG->setColor(QtUi::style()->format(UiStyle::Sender).foreground().color());
350 ui.senderBG->setColor(QtUi::style()->format(UiStyle::Sender).background().color());
351 settings["NewMsgMarkerFG"] = s.value("newMsgMarkerFG", QColor(Qt::red));
352 ui.newMsgMarkerFG->setColor(settings["NewMsgMarkerFG"].value<QColor>());
354 settings["TimestampUseBG"] = s.value("timestampUseBG", QVariant(false));
355 if(settings["TimestampUseBG"].toBool()) {
356 ui.timestampUseBG->setChecked(true);
357 ui.timestampBG->setEnabled(true);
359 settings["SenderUseBG"] = s.value("senderUseBG", QVariant(false));
360 if(settings["SenderUseBG"].toBool()) {
361 ui.senderUseBG->setChecked(true);
362 ui.senderBG ->setEnabled(true);
365 ui.nickFG->setColor(QtUi::style()->format(UiStyle::Nick).foreground().color());
366 ui.nickBG->setColor(QtUi::style()->format(UiStyle::Nick).background().color());
367 ui.hostmaskFG->setColor(QtUi::style()->format(UiStyle::Hostmask).foreground().color());
368 ui.hostmaskBG->setColor(QtUi::style()->format(UiStyle::Hostmask).background().color());
369 ui.channelnameFG->setColor(QtUi::style()->format(UiStyle::ChannelName).foreground().color());
370 ui.channelnameBG->setColor(QtUi::style()->format(UiStyle::ChannelName).background().color());
371 ui.modeFlagsFG->setColor(QtUi::style()->format(UiStyle::ModeFlags).foreground().color());
372 ui.modeFlagsBG->setColor(QtUi::style()->format(UiStyle::ModeFlags).background().color());
373 ui.urlFG->setColor(QtUi::style()->format(UiStyle::Url).foreground().color());
374 ui.urlBG->setColor(QtUi::style()->format(UiStyle::Url).background().color());
376 ui.highlightColor->setColor(QtUi::style()->highlightColor());
378 ui.color0->setColor(QtUi::style()->format(UiStyle::FgCol00).foreground().color());
379 ui.color1->setColor(QtUi::style()->format(UiStyle::FgCol01).foreground().color());
380 ui.color2->setColor(QtUi::style()->format(UiStyle::FgCol02).foreground().color());
381 ui.color3->setColor(QtUi::style()->format(UiStyle::FgCol03).foreground().color());
382 ui.color4->setColor(QtUi::style()->format(UiStyle::FgCol04).foreground().color());
383 ui.color5->setColor(QtUi::style()->format(UiStyle::FgCol05).foreground().color());
384 ui.color6->setColor(QtUi::style()->format(UiStyle::FgCol06).foreground().color());
385 ui.color7->setColor(QtUi::style()->format(UiStyle::FgCol07).foreground().color());
386 ui.color8->setColor(QtUi::style()->format(UiStyle::FgCol08).foreground().color());
387 ui.color9->setColor(QtUi::style()->format(UiStyle::FgCol09).foreground().color());
388 ui.color10->setColor(QtUi::style()->format(UiStyle::FgCol10).foreground().color());
389 ui.color11->setColor(QtUi::style()->format(UiStyle::FgCol11).foreground().color());
390 ui.color12->setColor(QtUi::style()->format(UiStyle::FgCol12).foreground().color());
391 ui.color13->setColor(QtUi::style()->format(UiStyle::FgCol13).foreground().color());
392 ui.color14->setColor(QtUi::style()->format(UiStyle::FgCol14).foreground().color());
393 ui.color15->setColor(QtUi::style()->format(UiStyle::FgCol15).foreground().color());
395 settings["OnlineStatusFG"] = s.value("onlineStatusFG", QVariant(QColor(Qt::black)));
396 ui.onlineStatusFG->setColor(settings["OnlineStatusFG"].value<QColor>());
397 settings["OnlineStatusBG"] = s.value("onlineStatusBG", QVariant(QColor(Qt::white)));
398 ui.onlineStatusBG->setColor(settings["OnlineStatusBG"].value<QColor>());
399 settings["OnlineStatusUseBG"] = s.value("onlineStatusUseBG");
400 ui.onlineStatusUseBG->setChecked(settings["OnlineStatusUseBG"].toBool());
402 settings["AwayStatusFG"] = s.value("awayStatusFG", QVariant(QColor(Qt::gray)));
403 ui.awayStatusFG->setColor(settings["AwayStatusFG"].value<QColor>());
404 settings["AwayStatusBG"] = s.value("awayStatusBG", QVariant(QColor(Qt::white)));
405 ui.awayStatusBG->setColor(settings["AwayStatusBG"].value<QColor>());
406 settings["AwayStatusUseBG"] = s.value("awayStatusUseBG");
407 ui.awayStatusUseBG->setChecked(settings["AwayStatusUseBG"].toBool());
409 setChangedState(false);
414 void ColorSettingsPage::save() {
415 QtUiStyleSettings s("Colors");
416 s.setValue("noActivityFG", ui.noActivityFG->color());
417 s.setValue("noActivityBG", ui.noActivityBG->color());
418 s.setValue("noActivityUseBG", ui.noActivityUseBG->isChecked());
419 s.setValue("inactiveActivityFG", ui.inactiveActivityFG->color());
420 s.setValue("inactiveActivityBG", ui.inactiveActivityBG->color());
421 s.setValue("inactiveActivityUseBG", ui.inactiveActivityUseBG->isChecked());
422 s.setValue("highlightActivityFG", ui.highlightActivityFG->color());
423 s.setValue("highlightActivityBG", ui.highlightActivityBG->color());
424 s.setValue("highlightActivityUseBG", ui.highlightActivityUseBG->isChecked());
425 s.setValue("newMessageActivityFG", ui.newMessageActivityFG->color());
426 s.setValue("newMessageActivityBG", ui.newMessageActivityBG->color());
427 s.setValue("newMessageActivityUseBG", ui.newMessageActivityUseBG->isChecked());
428 s.setValue("otherActivityFG", ui.otherActivityFG->color());
429 s.setValue("otherActivityBG", ui.otherActivityBG->color());
430 s.setValue("otherActivityUseBG", ui.otherActivityUseBG->isChecked());
432 saveColor(UiStyle::ErrorMsg, ui.errorMessageFG->color(), ui.errorMessageBG->color(), ui.errorMessageUseBG->isChecked());
433 s.setValue("errorMessageUseBG", ui.errorMessageUseBG->isChecked());
434 saveColor(UiStyle::NoticeMsg, ui.noticeMessageFG->color(), ui.noticeMessageBG->color(), ui.noticeMessageUseBG->isChecked());
435 s.setValue("noticeMessageUseBG", ui.noticeMessageUseBG->isChecked());
436 saveColor(UiStyle::PlainMsg, ui.plainMessageFG->color(), ui.plainMessageBG->color(), ui.plainMessageUseBG->isChecked());
437 s.setValue("plainMessageUseBG", ui.plainMessageUseBG->isChecked());
438 saveColor(UiStyle::ServerMsg, ui.serverMessageFG->color(), ui.serverMessageBG->color(), ui.serverMessageUseBG->isChecked());
439 s.setValue("serverMessageUseBG", ui.serverMessageUseBG->isChecked());
440 saveColor(UiStyle::ActionMsg, ui.actionMessageFG->color(), ui.actionMessageBG->color(), ui.actionMessageUseBG->isChecked());
441 s.setValue("actionMessageUseBG", ui.actionMessageUseBG->isChecked());
442 saveColor(UiStyle::JoinMsg, ui.joinMessageFG->color(), ui.joinMessageBG->color(), ui.joinMessageUseBG->isChecked());
443 s.setValue("joinMessageUseBG", ui.joinMessageUseBG->isChecked());
444 saveColor(UiStyle::KickMsg, ui.kickMessageFG->color(), ui.kickMessageBG->color(), ui.kickMessageUseBG->isChecked());
445 s.setValue("kickMessageUseBG", ui.kickMessageUseBG->isChecked());
446 saveColor(UiStyle::ModeMsg, ui.modeMessageFG->color(), ui.modeMessageBG->color(), ui.modeMessageUseBG->isChecked());
447 s.setValue("modeMessageUseBG", ui.modeMessageUseBG->isChecked());
448 saveColor(UiStyle::NoticeMsg, ui.noticeMessageFG->color(), ui.noticeMessageBG->color(), ui.noticeMessageUseBG->isChecked());
449 s.setValue("noticeMessageUseBG", ui.noticeMessageUseBG->isChecked());
450 saveColor(UiStyle::PartMsg, ui.partMessageFG->color(), ui.partMessageBG->color(), ui.partMessageUseBG->isChecked());
451 s.setValue("partMessageUseBG", ui.partMessageUseBG->isChecked());
452 saveColor(UiStyle::QuitMsg, ui.quitMessageFG->color(), ui.quitMessageBG->color(), ui.quitMessageUseBG->isChecked());
453 s.setValue("quitMessageUseBG", ui.quitMessageUseBG->isChecked());
454 saveColor(UiStyle::RenameMsg, ui.renameMessageFG->color(), ui.renameMessageBG->color(), ui.renameMessageUseBG->isChecked());
455 s.setValue("renameMessageUseBG", ui.renameMessageUseBG->isChecked());
457 QtUi::style()->setHighlightColor(ui.highlightColor->color());
459 saveColor(UiStyle::Timestamp, ui.timestampFG->color(), ui.timestampBG->color(), ui.timestampUseBG->isChecked());
460 s.setValue("timestampUseBG", ui.timestampUseBG->isChecked());
461 saveColor(UiStyle::Sender, ui.senderFG->color(), ui.senderBG->color(), ui.senderUseBG->isChecked());
462 s.setValue("senderUseBG", ui.senderUseBG->isChecked());
463 s.setValue("newMsgMarkerFG", ui.newMsgMarkerFG->color());
466 saveColor(UiStyle::Nick, ui.nickFG->color(), ui.nickBG->color(), ui.nickUseBG->isChecked());
467 s.setValue("nickUseBG", ui.nickUseBG->isChecked());
468 saveColor(UiStyle::Hostmask, ui.hostmaskFG->color(), ui.hostmaskBG->color(), ui.hostmaskUseBG->isChecked());
469 s.setValue("hostmaskUseBG", ui.hostmaskUseBG->isChecked());
470 saveColor(UiStyle::ChannelName, ui.channelnameFG->color(), ui.channelnameBG->color(), ui.channelnameUseBG->isChecked());
471 s.setValue("channelnameUseBG", ui.channelnameUseBG->isChecked());
472 saveColor(UiStyle::ModeFlags, ui.modeFlagsFG->color(), ui.modeFlagsBG->color(), ui.modeFlagsUseBG->isChecked());
473 s.setValue("modeFlagsUseBG", ui.modeFlagsUseBG->isChecked());
474 saveColor(UiStyle::Url, ui.urlFG->color(), ui.urlBG->color(), ui.urlUseBG->isChecked());
475 s.setValue("urlUseBG", ui.urlUseBG->isChecked());
478 saveMircColor(0, ui.color0->color());
479 saveMircColor(1, ui.color1->color());
480 saveMircColor(2, ui.color2->color());
481 saveMircColor(3, ui.color3->color());
482 saveMircColor(4, ui.color4->color());
483 saveMircColor(5, ui.color5->color());
484 saveMircColor(6, ui.color6->color());
485 saveMircColor(7, ui.color7->color());
486 saveMircColor(8, ui.color8->color());
487 saveMircColor(9, ui.color9->color());
488 saveMircColor(10, ui.color10->color());
489 saveMircColor(11, ui.color11->color());
490 saveMircColor(12, ui.color12->color());
491 saveMircColor(13, ui.color13->color());
492 saveMircColor(14, ui.color14->color());
493 saveMircColor(15, ui.color15->color());
495 s.setValue("onlineStatusFG", ui.onlineStatusFG->color());
496 s.setValue("onlineStatusBG", ui.onlineStatusBG->color());
497 s.setValue("onlineStatusUseBG", ui.onlineStatusUseBG->isChecked());
498 s.setValue("awayStatusFG", ui.awayStatusFG->color());
499 s.setValue("awayStatusBG", ui.awayStatusBG->color());
500 s.setValue("awayStatusUseBG", ui.awayStatusUseBG->isChecked());
502 load(); //TODO: remove when settings hash map is unnescessary
503 setChangedState(false);
506 void ColorSettingsPage::saveColor(UiStyle::FormatType formatType, const QColor &foreground, const QColor &background, bool enableBG) {
507 QTextCharFormat format = QtUi::style()->format(formatType);
508 format.setForeground(QBrush(foreground));
510 format.setBackground(QBrush(background));
512 format.clearBackground();
513 QtUi::style()->setFormat(formatType, format, Settings::Custom);
516 void ColorSettingsPage::saveMircColor(int num, const QColor &col) {
517 QTextCharFormat fgf, bgf;
518 fgf.setForeground(QBrush(col)); QtUi::style()->setFormat((UiStyle::FormatType)(UiStyle::FgCol00 | num<<24), fgf, Settings::Custom);
519 bgf.setBackground(QBrush(col)); QtUi::style()->setFormat((UiStyle::FormatType)(UiStyle::BgCol00 | num<<28), bgf, Settings::Custom);
522 void ColorSettingsPage::widgetHasChanged() {
523 bool changed = testHasChanged();
524 if(changed != hasChanged()) {
525 setChangedState(changed);
531 bool ColorSettingsPage::testHasChanged() {
532 if(settings["InactiveActivityFG"].value<QColor>() != ui.inactiveActivityFG->color()) return true;
533 if(settings["InactiveActivityBG"].value<QColor>() != ui.inactiveActivityBG->color()) return true;
534 if(settings["InactiveActivityUseBG"].toBool() != ui.inactiveActivityUseBG->isChecked()) return true;
535 if(settings["NoActivityFG"].value<QColor>() != ui.noActivityFG->color()) return true;
536 if(settings["NoActivityBG"].value<QColor>() != ui.noActivityBG->color()) return true;
537 if(settings["NoActivityUseBG"].toBool() != ui.noActivityUseBG->isChecked()) return true;
538 if(settings["HighlightActivityFG"].value<QColor>() != ui.highlightActivityFG->color()) return true;
539 if(settings["HighlightActivityBG"].value<QColor>() != ui.highlightActivityBG->color()) return true;
540 if(settings["HighlightActivityUseBG"].toBool() != ui.highlightActivityUseBG->isChecked()) return true;
541 if(settings["NewMessageActivityFG"].value<QColor>() != ui.newMessageActivityFG->color()) return true;
542 if(settings["NewMessageActivityBG"].value<QColor>() != ui.newMessageActivityBG->color()) return true;
543 if(settings["NewMessageActivityUseBG"].toBool() != ui.newMessageActivityUseBG->isChecked()) return true;
544 if(settings["OtherActivityFG"].value<QColor>() != ui.otherActivityFG->color()) return true;
545 if(settings["OtherActivityBG"].value<QColor>() != ui.otherActivityBG->color()) return true;
546 if(settings["OtherActivityUseBG"].toBool() != ui.otherActivityUseBG->isChecked()) return true;
548 if(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color() != ui.errorMessageFG->color()) return true;
549 if(QtUi::style()->format(UiStyle::ErrorMsg).background().color() != ui.errorMessageBG->color()) return true;
550 if(settings["ErrorMessageUseBG"].toBool() != ui.errorMessageUseBG->isChecked()) return true;
551 if(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color() != ui.errorMessageFG->color()) return true;
552 if(QtUi::style()->format(UiStyle::ErrorMsg).background().color() != ui.errorMessageBG->color()) return true;
553 if(settings["NoticeMessageUseBG"].toBool() != ui.noticeMessageUseBG->isChecked()) return true;
554 if(QtUi::style()->format(UiStyle::PlainMsg).foreground().color() != ui.plainMessageFG->color()) return true;
555 if(QtUi::style()->format(UiStyle::PlainMsg).background().color() != ui.plainMessageBG->color()) return true;
556 if(settings["PlainMessageUseBG"].toBool() != ui.plainMessageUseBG->isChecked()) return true;
557 if(QtUi::style()->format(UiStyle::ServerMsg).foreground().color() != ui.serverMessageFG->color()) return true;
558 if(QtUi::style()->format(UiStyle::ServerMsg).background().color() != ui.serverMessageBG->color()) return true;
559 if(settings["ServerMessageUseBG"].toBool() != ui.serverMessageUseBG->isChecked()) return true;
560 if(QtUi::style()->format(UiStyle::ActionMsg).foreground().color() != ui.actionMessageFG->color()) return true;
561 if(QtUi::style()->format(UiStyle::ActionMsg).background().color() != ui.actionMessageBG->color()) return true;
562 if(settings["ActionMessageUseBG"].toBool() != ui.actionMessageUseBG->isChecked()) return true;
563 if(QtUi::style()->format(UiStyle::JoinMsg).foreground().color() != ui.joinMessageFG->color()) return true;
564 if(QtUi::style()->format(UiStyle::JoinMsg).background().color() != ui.joinMessageBG->color()) return true;
565 if(settings["JoinMessageUseBG"].toBool() != ui.joinMessageUseBG->isChecked()) return true;
566 if(QtUi::style()->format(UiStyle::KickMsg).foreground().color() != ui.kickMessageFG->color()) return true;
567 if(QtUi::style()->format(UiStyle::KickMsg).background().color() != ui.joinMessageBG->color()) return true;
568 if(settings["KickMessageUseBG"].toBool() != ui.kickMessageUseBG->isChecked()) return true;
569 if(QtUi::style()->format(UiStyle::ModeMsg).foreground().color() != ui.modeMessageFG->color()) return true;
570 if(QtUi::style()->format(UiStyle::ModeMsg).background().color() != ui.modeMessageBG->color()) return true;
571 if(settings["ModeMessageUseBG"].toBool() != ui.modeMessageUseBG->isChecked()) return true;
572 if(QtUi::style()->format(UiStyle::NoticeMsg).foreground().color() != ui.noticeMessageFG->color()) return true;
573 if(QtUi::style()->format(UiStyle::NoticeMsg).background().color() != ui.noticeMessageBG->color()) return true;
574 if(settings["NoticeMessageUseBG"].toBool() != ui.noticeMessageUseBG->isChecked()) return true;
575 if(QtUi::style()->format(UiStyle::PartMsg).foreground().color() != ui.partMessageFG->color()) return true;
576 if(QtUi::style()->format(UiStyle::PartMsg).background().color() != ui.partMessageBG->color()) return true;
577 if(settings["PartMessageUseBG"].toBool() != ui.partMessageUseBG->isChecked()) return true;
578 if(QtUi::style()->format(UiStyle::QuitMsg).foreground().color() != ui.quitMessageFG->color()) return true;
579 if(QtUi::style()->format(UiStyle::QuitMsg).background().color() != ui.quitMessageBG->color()) return true;
580 if(settings["QuitMessageUseBG"].toBool() != ui.quitMessageUseBG->isChecked()) return true;
581 if(QtUi::style()->format(UiStyle::RenameMsg).foreground().color() != ui.renameMessageFG->color()) return true;
582 if(QtUi::style()->format(UiStyle::RenameMsg).background().color() != ui.renameMessageBG->color()) return true;
583 if(settings["RenameMessageUseBG"].toBool() != ui.renameMessageUseBG->isChecked()) return true;
585 if(QtUi::style()->highlightColor() != ui.highlightColor->color()) return true;
587 if(QtUi::style()->format(UiStyle::Timestamp).foreground().color() != ui.timestampFG->color()) return true;
588 if(QtUi::style()->format(UiStyle::Timestamp).background().color() != ui.timestampBG->color()) return true;
589 if(settings["TimestampUseBG"].toBool() != ui.timestampUseBG->isChecked()) return true;
590 if(QtUi::style()->format(UiStyle::Sender).foreground().color() != ui.senderFG->color()) return true;
591 if(QtUi::style()->format(UiStyle::Sender).background().color() != ui.senderBG->color()) return true;
592 if(settings["SenderUseBG"].toBool() != ui.senderUseBG->isChecked()) return true;
593 if(settings["NewMsgMarkerFG"].value<QColor>() != ui.newMsgMarkerFG->color()) return true;
596 if(QtUi::style()->format(UiStyle::Nick).foreground().color() != ui.nickFG->color()) return true;
597 if(QtUi::style()->format(UiStyle::Nick).background().color() != ui.nickBG->color()) return true;
598 if(settings["nickUseBG"].toBool() != ui.nickUseBG->isChecked()) return true;
599 if(QtUi::style()->format(UiStyle::Hostmask).foreground().color() != ui.hostmaskFG->color()) return true;
600 if(QtUi::style()->format(UiStyle::Hostmask).background().color() != ui.hostmaskBG->color()) return true;
601 if(settings["hostmaskUseBG"].toBool() != ui.hostmaskUseBG->isChecked()) return true;
602 if(QtUi::style()->format(UiStyle::ChannelName).foreground().color() != ui.channelnameFG->color()) return true;
603 if(QtUi::style()->format(UiStyle::ChannelName).background().color() != ui.channelnameBG->color()) return true;
604 if(settings["channelnameUseBG"].toBool() != ui.channelnameUseBG->isChecked()) return true;
605 if(QtUi::style()->format(UiStyle::ModeFlags).foreground().color() != ui.modeFlagsFG->color()) return true;
606 if(QtUi::style()->format(UiStyle::ModeFlags).background().color() != ui.modeFlagsBG->color()) return true;
607 if(settings["modeFlagsUseBG"].toBool() != ui.modeFlagsUseBG->isChecked()) return true;
608 if(QtUi::style()->format(UiStyle::Url).foreground().color() != ui.urlFG->color()) return true;
609 if(QtUi::style()->format(UiStyle::Url).background().color() != ui.urlBG->color()) return true;
610 if(settings["urlUseBG"].toBool() != ui.urlUseBG->isChecked()) return true;
613 if(QtUi::style()->format(UiStyle::FgCol00).foreground().color() != ui.color0->color()) return true;
614 if(QtUi::style()->format(UiStyle::FgCol01).foreground().color() != ui.color1->color()) return true;
615 if(QtUi::style()->format(UiStyle::FgCol02).foreground().color() != ui.color2->color()) return true;
616 if(QtUi::style()->format(UiStyle::FgCol03).foreground().color() != ui.color3->color()) return true;
617 if(QtUi::style()->format(UiStyle::FgCol04).foreground().color() != ui.color4->color()) return true;
618 if(QtUi::style()->format(UiStyle::FgCol05).foreground().color() != ui.color5->color()) return true;
619 if(QtUi::style()->format(UiStyle::FgCol06).foreground().color() != ui.color6->color()) return true;
620 if(QtUi::style()->format(UiStyle::FgCol07).foreground().color() != ui.color7->color()) return true;
621 if(QtUi::style()->format(UiStyle::FgCol08).foreground().color() != ui.color8->color()) return true;
622 if(QtUi::style()->format(UiStyle::FgCol09).foreground().color() != ui.color9->color()) return true;
623 if(QtUi::style()->format(UiStyle::FgCol10).foreground().color() != ui.color10->color()) return true;
624 if(QtUi::style()->format(UiStyle::FgCol11).foreground().color() != ui.color11->color()) return true;
625 if(QtUi::style()->format(UiStyle::FgCol12).foreground().color() != ui.color12->color()) return true;
626 if(QtUi::style()->format(UiStyle::FgCol13).foreground().color() != ui.color13->color()) return true;
627 if(QtUi::style()->format(UiStyle::FgCol14).foreground().color() != ui.color14->color()) return true;
628 if(QtUi::style()->format(UiStyle::FgCol15).foreground().color() != ui.color15->color()) return true;
630 if(settings["OnlineStatusFG"].value<QColor>() != ui.onlineStatusFG->color()) return true;
631 if(settings["OnlineStatusBG"].value<QColor>() != ui.onlineStatusBG->color()) return true;
632 if(settings["OnlineStatusUseBG"].toBool() != ui.onlineStatusUseBG->isChecked()) return true;
633 if(settings["AwayStatusFG"].value<QColor>() != ui.awayStatusFG->color()) return true;
634 if(settings["AwayStatusBG"].value<QColor>() != ui.awayStatusBG->color()) return true;
635 if(settings["AwayStatusUseBG"].toBool() != ui.awayStatusUseBG->isChecked()) return true;
640 void ColorSettingsPage::chooseColor(QWidget *widget) {
641 ColorButton *button = qobject_cast<ColorButton *>(widget);
643 QColor color = QColorDialog::getColor(button->color(), this);
644 if(color.isValid()) {
645 button->setColor(color);
650 void ColorSettingsPage::chatviewPreview() {
651 //TODO: update chatviewPreview
654 void ColorSettingsPage::bufferviewPreview() {
655 ui.bufferviewPreview->clear();
656 ui.bufferviewPreview->setColumnCount(1);
657 ui.bufferviewPreview->setHeaderLabels(QStringList("Buffers"));
659 QTreeWidgetItem *topLevelItem = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("network")));
660 ui.bufferviewPreview->insertTopLevelItem(0, topLevelItem);
661 topLevelItem->setForeground(0, QBrush(ui.noActivityFG->color()));
662 if(ui.noActivityUseBG->isChecked())
663 topLevelItem->setBackground(0, QBrush(ui.noActivityBG->color()));
666 QList<QTreeWidgetItem *> items;
667 QTreeWidgetItem *statusBuffer = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("Status Buffer")));
668 items.append(statusBuffer);
669 statusBuffer->setForeground(0, QBrush(ui.noActivityFG->color()));
670 if(ui.noActivityUseBG->isChecked())
671 statusBuffer->setBackground(0, QBrush(ui.noActivityBG->color()));
673 QTreeWidgetItem *inactiveActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#inactive channel")));
674 items.append(inactiveActivity);
675 inactiveActivity->setForeground(0, QBrush(ui.inactiveActivityFG->color()));
676 if(ui.inactiveActivityUseBG->isChecked())
677 inactiveActivity->setBackground(0, QBrush(ui.inactiveActivityBG->color()));
679 QTreeWidgetItem *noActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with no activity")));
680 items.append(noActivity);
681 noActivity->setForeground(0, QBrush(ui.noActivityFG->color()));
682 if(ui.noActivityUseBG->isChecked())
683 noActivity->setBackground(0, QBrush(ui.noActivityBG->color()));
685 QTreeWidgetItem *highlightActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with highlight")));
686 items.append(highlightActivity);
687 highlightActivity->setForeground(0, QBrush(ui.highlightActivityFG->color()));
688 if(ui.highlightActivityUseBG->isChecked())
689 highlightActivity->setBackground(0, QBrush(ui.highlightActivityBG->color()));
691 QTreeWidgetItem *newMessageActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with new message")));
692 items.append(newMessageActivity);
693 newMessageActivity->setForeground(0, QBrush(ui.newMessageActivityFG->color()));
694 if(ui.newMessageActivityUseBG->isChecked())
695 newMessageActivity->setBackground(0, QBrush(ui.newMessageActivityBG->color()));
697 QTreeWidgetItem *otherActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with other activity")));
698 items.append(otherActivity);
699 otherActivity->setForeground(0, QBrush(ui.otherActivityFG->color()));
700 if(ui.otherActivityUseBG->isChecked())
701 otherActivity->setBackground(0, QBrush(ui.otherActivityBG->color()));
703 topLevelItem->insertChildren(0, items);
704 ui.bufferviewPreview->expandItem(topLevelItem);