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>
31 ColorSettingsPage::ColorSettingsPage(QWidget *parent)
32 : SettingsPage(tr("Appearance"), tr("Color settings"), parent),
33 mapper(new QSignalMapper(this))
37 foreach(ColorButton *button, findChildren<ColorButton *>()) {
38 connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
39 mapper->setMapping(button, button);
41 foreach(QCheckBox *checkBox, findChildren<QCheckBox *>()) {
42 connect(checkBox, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
45 connect(mapper, SIGNAL(mapped(QWidget *)), this, SLOT(chooseColor(QWidget *)));
47 foreach(QWidget *widget, findChildren<QWidget *>()) {
48 if(widget->property("NotInUse").toBool()) {
49 widget->setEnabled(false);
55 bool ColorSettingsPage::hasDefaults() const {
59 void ColorSettingsPage::defaults() {
61 defaultServerActivity();
62 defaultUserActivity();
64 defaultMircColorCodes();
71 void ColorSettingsPage::defaultBufferview() {
72 ui.highlightActivityFG->setColor(QColor(Qt::magenta));
73 ui.highlightActivityBG->setColor(QColor(Qt::white));
74 ui.highlightActivityBG->setEnabled(false);
75 ui.highlightActivityUseBG->setChecked(false);
76 ui.newMessageActivityFG->setColor(QColor(Qt::green));
77 ui.newMessageActivityBG->setColor(QColor(Qt::white));
78 ui.newMessageActivityBG->setEnabled(false);
79 ui.newMessageActivityUseBG->setChecked(false);
80 ui.otherActivityFG->setColor(QColor(Qt::darkGreen));
81 ui.otherActivityBG->setColor(QColor(Qt::white));
82 ui.otherActivityBG->setEnabled(false);
83 ui.otherActivityUseBG->setChecked(false);
86 void ColorSettingsPage::defaultServerActivity() {
87 ui.errorMessageFG->setColor(QtUi::style()->format(UiStyle::ErrorMsg, Settings::Default).foreground().color());
88 ui.errorMessageBG->setColor(QColor("white"));
89 ui.errorMessageBG->setEnabled(false);
90 ui.errorMessageUseBG->setChecked(false);
91 ui.noticeMessageFG->setColor(QtUi::style()->format(UiStyle::NoticeMsg, Settings::Default).foreground().color());
92 ui.noticeMessageBG->setColor(QColor("white"));
93 ui.noticeMessageBG->setEnabled(false);
94 ui.noticeMessageUseBG->setChecked(false);
95 ui.plainMessageFG->setColor(QtUi::style()->format(UiStyle::PlainMsg, Settings::Default).foreground().color());
96 ui.plainMessageBG->setColor(QColor("white"));
97 ui.plainMessageBG->setEnabled(false);
98 ui.plainMessageUseBG->setChecked(false);
99 ui.serverMessageFG->setColor(QtUi::style()->format(UiStyle::ServerMsg, Settings::Default).foreground().color());
100 ui.serverMessageBG->setColor(QColor("white"));
101 ui.serverMessageBG->setEnabled(false);
102 ui.serverMessageUseBG->setChecked(false);
103 ui.highlightColor->setColor(QColor("lightcoral"));
106 void ColorSettingsPage::defaultUserActivity() {
107 ui.actionMessageFG->setColor(QtUi::style()->format(UiStyle::ActionMsg, Settings::Default).foreground().color());
108 ui.actionMessageBG->setColor(QColor("white"));
109 ui.actionMessageBG->setEnabled(false);
110 ui.actionMessageUseBG->setChecked(false);
111 ui.joinMessageFG->setColor(QtUi::style()->format(UiStyle::JoinMsg, Settings::Default).foreground().color());
112 ui.joinMessageBG->setColor(QColor("white"));
113 ui.joinMessageBG->setEnabled(false);
114 ui.joinMessageUseBG->setChecked(false);
115 ui.kickMessageFG->setColor(QtUi::style()->format(UiStyle::KickMsg, Settings::Default).foreground().color());
116 ui.kickMessageBG->setColor(QColor("white"));
117 ui.kickMessageBG->setEnabled(false);
118 ui.kickMessageUseBG->setChecked(false);
119 ui.modeMessageFG->setColor(QtUi::style()->format(UiStyle::ModeMsg, Settings::Default).foreground().color());
120 ui.modeMessageBG->setColor(QColor("white"));
121 ui.modeMessageBG->setEnabled(false);
122 ui.modeMessageUseBG->setChecked(false);
123 ui.partMessageFG->setColor(QtUi::style()->format(UiStyle::PartMsg, Settings::Default).foreground().color());
124 ui.partMessageBG->setColor(QColor("white"));
125 ui.partMessageBG->setEnabled(false);
126 ui.partMessageUseBG->setChecked(false);
127 ui.quitMessageFG->setColor(QtUi::style()->format(UiStyle::QuitMsg, Settings::Default).foreground().color());
128 ui.quitMessageBG->setColor(QColor("white"));
129 ui.quitMessageBG->setEnabled(false);
130 ui.quitMessageUseBG->setChecked(false);
131 ui.renameMessageFG->setColor(QtUi::style()->format(UiStyle::RenameMsg, Settings::Default).foreground().color());
132 ui.renameMessageBG->setColor(QColor("white"));
133 ui.renameMessageBG->setEnabled(false);
134 ui.renameMessageUseBG->setChecked(false);
137 void ColorSettingsPage::defaultMessage() {
138 ui.timestampFG->setColor(QtUi::style()->format(UiStyle::Timestamp, Settings::Default).foreground().color());
139 ui.timestampBG->setColor(QColor("white"));
140 ui.timestampBG->setEnabled(false);
141 ui.timestampUseBG->setChecked(false);
142 ui.senderFG->setColor(QtUi::style()->format(UiStyle::Sender, Settings::Default).foreground().color());
143 ui.senderBG->setColor(QColor("white"));
144 ui.senderBG->setEnabled(false);
145 ui.senderUseBG->setChecked(false);
146 ui.newMsgMarkerFG->setColor(Qt::red);
149 ui.nickFG->setColor(QColor("black"));
150 ui.nickBG->setColor(QColor("white"));
151 ui.nickBG->setEnabled(false);
152 ui.nickUseBG->setChecked(false);
153 ui.hostmaskFG->setColor(QColor("black"));
154 ui.hostmaskBG->setColor(QColor("white"));
155 ui.hostmaskBG->setEnabled(false);
156 ui.hostmaskUseBG->setChecked(false);
157 ui.channelnameFG->setColor(QColor("black"));
158 ui.channelnameBG->setColor(QColor("white"));
159 ui.channelnameBG->setEnabled(false);
160 ui.channelnameUseBG->setChecked(false);
161 ui.modeFlagsFG->setColor(QColor("black"));
162 ui.modeFlagsBG->setColor(QColor("white"));
163 ui.modeFlagsBG->setEnabled(false);
164 ui.modeFlagsUseBG->setChecked(false);
165 ui.urlFG->setColor(QColor("black"));
166 ui.urlBG->setColor(QColor("white"));
167 ui.urlBG->setEnabled(false);
168 ui.urlUseBG->setChecked(false);
172 void ColorSettingsPage::defaultMircColorCodes() {
173 ui.color0->setColor(QtUi::style()->format(UiStyle::FgCol00, Settings::Default).foreground().color());
174 ui.color1->setColor(QtUi::style()->format(UiStyle::FgCol01, Settings::Default).foreground().color());
175 ui.color2->setColor(QtUi::style()->format(UiStyle::FgCol02, Settings::Default).foreground().color());
176 ui.color3->setColor(QtUi::style()->format(UiStyle::FgCol03, Settings::Default).foreground().color());
177 ui.color4->setColor(QtUi::style()->format(UiStyle::FgCol04, Settings::Default).foreground().color());
178 ui.color5->setColor(QtUi::style()->format(UiStyle::FgCol05, Settings::Default).foreground().color());
179 ui.color6->setColor(QtUi::style()->format(UiStyle::FgCol06, Settings::Default).foreground().color());
180 ui.color7->setColor(QtUi::style()->format(UiStyle::FgCol07, Settings::Default).foreground().color());
181 ui.color8->setColor(QtUi::style()->format(UiStyle::FgCol08, Settings::Default).foreground().color());
182 ui.color9->setColor(QtUi::style()->format(UiStyle::FgCol09, Settings::Default).foreground().color());
183 ui.color10->setColor(QtUi::style()->format(UiStyle::FgCol10, Settings::Default).foreground().color());
184 ui.color11->setColor(QtUi::style()->format(UiStyle::FgCol11, Settings::Default).foreground().color());
185 ui.color12->setColor(QtUi::style()->format(UiStyle::FgCol12, Settings::Default).foreground().color());
186 ui.color13->setColor(QtUi::style()->format(UiStyle::FgCol13, Settings::Default).foreground().color());
187 ui.color14->setColor(QtUi::style()->format(UiStyle::FgCol14, Settings::Default).foreground().color());
188 ui.color15->setColor(QtUi::style()->format(UiStyle::FgCol15, Settings::Default).foreground().color());
191 void ColorSettingsPage::load() {
192 QtUiStyleSettings s("Colors");
193 settings["HighlightActivityFG"] = s.value("highlightActivityFG", QVariant(QColor(Qt::magenta)));
194 ui.highlightActivityFG->setColor(settings["HighlightActivityFG"].value<QColor>());
195 settings["HighlightActivityBG"] = s.value("highlightActivityBG", QVariant(QColor(Qt::white)));
196 ui.highlightActivityBG->setColor(settings["HighlightActivityBG"].value<QColor>());
197 settings["HighlightActivityUseBG"] = s.value("highlightActivityUseBG");
198 ui.highlightActivityUseBG->setChecked(settings["HighlightActivityUseBG"].toBool());
200 settings["NewMessageActivityFG"] = s.value("newMessageActivityFG", QVariant(QColor(Qt::green)));
201 ui.newMessageActivityFG->setColor(settings["NewMessageActivityFG"].value<QColor>());
202 settings["NewMessageActivityBG"] = s.value("newMessageActivityBG", QVariant(QColor(Qt::white)));
203 ui.newMessageActivityBG->setColor(settings["NewMessageActivityBG"].value<QColor>());
204 settings["NewMessageActivityUseBG"] = s.value("newMessageActivityUseBG");
205 ui.newMessageActivityUseBG->setChecked(settings["NewMessageActivityUseBG"].toBool());
207 settings["OtherActivityFG"] = s.value("otherActivityFG", QVariant(QColor(Qt::darkGreen)));
208 ui.otherActivityFG->setColor(settings["OtherActivityFG"].value<QColor>());
209 settings["OtherActivityBG"] = s.value("otherActivityBG", QVariant(QColor(Qt::white)));
210 ui.otherActivityBG->setColor(settings["OtherActivityBG"].value<QColor>());
211 settings["OtherActivityUseBG"] = s.value("otherActivityUseBG");
212 ui.otherActivityUseBG->setChecked(settings["OtherActivityUseBG"].toBool());
214 ui.actionMessageFG->setColor(QtUi::style()->format(UiStyle::ActionMsg).foreground().color());
215 ui.errorMessageFG->setColor(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color());
216 ui.joinMessageFG->setColor(QtUi::style()->format(UiStyle::JoinMsg).foreground().color());
217 ui.kickMessageFG->setColor(QtUi::style()->format(UiStyle::KickMsg).foreground().color());
218 ui.modeMessageFG->setColor(QtUi::style()->format(UiStyle::ModeMsg).foreground().color());
219 ui.noticeMessageFG->setColor(QtUi::style()->format(UiStyle::NoticeMsg).foreground().color());
220 ui.partMessageFG->setColor(QtUi::style()->format(UiStyle::PartMsg).foreground().color());
221 ui.plainMessageFG->setColor(QtUi::style()->format(UiStyle::PlainMsg).foreground().color());
222 ui.quitMessageFG->setColor(QtUi::style()->format(UiStyle::QuitMsg).foreground().color());
223 ui.renameMessageFG->setColor(QtUi::style()->format(UiStyle::RenameMsg).foreground().color());
224 ui.serverMessageFG->setColor(QtUi::style()->format(UiStyle::ServerMsg).foreground().color());
226 ui.actionMessageBG->setColor(QtUi::style()->format(UiStyle::ActionMsg).background().color());
227 ui.errorMessageBG->setColor(QtUi::style()->format(UiStyle::ErrorMsg).background().color());
228 ui.joinMessageBG->setColor(QtUi::style()->format(UiStyle::JoinMsg).background().color());
229 ui.kickMessageBG->setColor(QtUi::style()->format(UiStyle::KickMsg).background().color());
230 ui.modeMessageBG->setColor(QtUi::style()->format(UiStyle::ModeMsg).background().color());
231 ui.noticeMessageBG->setColor(QtUi::style()->format(UiStyle::NoticeMsg).background().color());
232 ui.partMessageBG->setColor(QtUi::style()->format(UiStyle::PartMsg).background().color());
233 ui.plainMessageBG->setColor(QtUi::style()->format(UiStyle::PlainMsg).background().color());
234 ui.quitMessageBG->setColor(QtUi::style()->format(UiStyle::QuitMsg).background().color());
235 ui.renameMessageBG->setColor(QtUi::style()->format(UiStyle::RenameMsg).background().color());
236 ui.serverMessageBG->setColor(QtUi::style()->format(UiStyle::ServerMsg).background().color());
238 // FIXME set to false if appropriate
239 settings["ActionMessageUseBG"] = s.value("actionMessageUseBG", QVariant(false));
240 if(settings["ActionMessageUseBG"].toBool()) {
241 ui.actionMessageUseBG->setChecked(true);
242 ui.actionMessageBG->setEnabled(true);
244 settings["ErrorMessageUseBG"] = s.value("errorMessageUseBG", QVariant(false));
245 if(settings["ErrorMessageUseBG"].toBool()) {
246 ui.errorMessageUseBG->setChecked(true);
247 ui.errorMessageBG->setEnabled(true);
249 settings["JoinMessageUseBG"] = s.value("joinMessageUseBG", QVariant(false));
250 if(settings["JoinMessageUseBG"].toBool()) {
251 ui.joinMessageUseBG->setChecked(true);
252 ui.joinMessageBG->setEnabled(true);
254 settings["KickMessageUseBG"] = s.value("kickMessageUseBG", QVariant(false));
255 if(settings["KickMessageUseBG"].toBool()) {
256 ui.kickMessageUseBG->setChecked(true);
257 ui.kickMessageBG->setEnabled(true);
259 settings["ModeMessageUseBG"] = s.value("modeMessageUseBG", QVariant(false));
260 if(settings["ModeMessageUseBG"].toBool()) {
261 ui.modeMessageUseBG->setChecked(true);
262 ui.modeMessageBG->setEnabled(true);
264 settings["NoticeMessageUseBG"] = s.value("noticeMessageUseBG", QVariant(false));
265 if(settings["NoticeMessageUseBG"].toBool()) {
266 ui.noticeMessageUseBG->setChecked(true);
267 ui.noticeMessageBG->setEnabled(true);
269 settings["PartMessageUseBG"] = s.value("partMessageUseBG", QVariant(false));
270 if(settings["PartMessageUseBG"].toBool()) {
271 ui.partMessageUseBG->setChecked(true);
272 ui.partMessageBG->setEnabled(true);
274 settings["PlainMessageUseBG"] = s.value("plainMessageUseBG", QVariant(false));
275 if(settings["PlainMessageUseBG"].toBool()) {
276 ui.plainMessageUseBG->setChecked(true);
277 ui.plainMessageBG->setEnabled(true);
279 settings["QuitMessageUseBG"] = s.value("quitMessageUseBG", QVariant(false));
280 if(settings["QuitMessageUseBG"].toBool()) {
281 ui.quitMessageUseBG->setChecked(true);
282 ui.quitMessageBG->setEnabled(true);
284 settings["RenameMessageUseBG"] = s.value("renameMessageUseBG", QVariant(false));
285 if(settings["RenameMessageUseBG"].toBool()) {
286 ui.renameMessageUseBG->setChecked(true);
287 ui.renameMessageBG->setEnabled(true);
289 settings["ServerMessageUseBG"] = s.value("serverMessageUseBG", QVariant(false));
290 if(settings["ServerMessageUseBG"].toBool()) {
291 ui.serverMessageUseBG->setChecked(true);
292 ui.serverMessageBG->setEnabled(true);
295 ui.timestampFG->setColor(QtUi::style()->format(UiStyle::Timestamp).foreground().color());
296 ui.timestampBG->setColor(QtUi::style()->format(UiStyle::Timestamp).background().color());
297 ui.senderFG->setColor(QtUi::style()->format(UiStyle::Sender).foreground().color());
298 ui.senderBG->setColor(QtUi::style()->format(UiStyle::Sender).background().color());
299 settings["NewMsgMarkerFG"] = s.value("newMsgMarkerFG", QColor(Qt::red));
300 ui.newMsgMarkerFG->setColor(settings["NewMsgMarkerFG"].value<QColor>());
302 settings["TimestampUseBG"] = s.value("timestampUseBG", QVariant(false));
303 if(settings["TimestampUseBG"].toBool()) {
304 ui.timestampUseBG->setChecked(true);
305 ui.timestampBG->setEnabled(true);
307 settings["SenderUseBG"] = s.value("senderUseBG", QVariant(false));
308 if(settings["SenderUseBG"].toBool()) {
309 ui.senderUseBG->setChecked(true);
310 ui.senderBG ->setEnabled(true);
313 ui.nickFG->setColor(QtUi::style()->format(UiStyle::Nick).foreground().color());
314 ui.nickBG->setColor(QtUi::style()->format(UiStyle::Nick).background().color());
315 ui.hostmaskFG->setColor(QtUi::style()->format(UiStyle::Hostmask).foreground().color());
316 ui.hostmaskBG->setColor(QtUi::style()->format(UiStyle::Hostmask).background().color());
317 ui.channelnameFG->setColor(QtUi::style()->format(UiStyle::ChannelName).foreground().color());
318 ui.channelnameBG->setColor(QtUi::style()->format(UiStyle::ChannelName).background().color());
319 ui.modeFlagsFG->setColor(QtUi::style()->format(UiStyle::ModeFlags).foreground().color());
320 ui.modeFlagsBG->setColor(QtUi::style()->format(UiStyle::ModeFlags).background().color());
321 ui.urlFG->setColor(QtUi::style()->format(UiStyle::Url).foreground().color());
322 ui.urlBG->setColor(QtUi::style()->format(UiStyle::Url).background().color());
324 ui.highlightColor->setColor(QtUi::style()->highlightColor());
326 ui.color0->setColor(QtUi::style()->format(UiStyle::FgCol00).foreground().color());
327 ui.color1->setColor(QtUi::style()->format(UiStyle::FgCol01).foreground().color());
328 ui.color2->setColor(QtUi::style()->format(UiStyle::FgCol02).foreground().color());
329 ui.color3->setColor(QtUi::style()->format(UiStyle::FgCol03).foreground().color());
330 ui.color4->setColor(QtUi::style()->format(UiStyle::FgCol04).foreground().color());
331 ui.color5->setColor(QtUi::style()->format(UiStyle::FgCol05).foreground().color());
332 ui.color6->setColor(QtUi::style()->format(UiStyle::FgCol06).foreground().color());
333 ui.color7->setColor(QtUi::style()->format(UiStyle::FgCol07).foreground().color());
334 ui.color8->setColor(QtUi::style()->format(UiStyle::FgCol08).foreground().color());
335 ui.color9->setColor(QtUi::style()->format(UiStyle::FgCol09).foreground().color());
336 ui.color10->setColor(QtUi::style()->format(UiStyle::FgCol10).foreground().color());
337 ui.color11->setColor(QtUi::style()->format(UiStyle::FgCol11).foreground().color());
338 ui.color12->setColor(QtUi::style()->format(UiStyle::FgCol12).foreground().color());
339 ui.color13->setColor(QtUi::style()->format(UiStyle::FgCol13).foreground().color());
340 ui.color14->setColor(QtUi::style()->format(UiStyle::FgCol14).foreground().color());
341 ui.color15->setColor(QtUi::style()->format(UiStyle::FgCol15).foreground().color());
343 setChangedState(false);
348 void ColorSettingsPage::save() {
349 QtUiStyleSettings s("Colors");
350 s.setValue("highlightActivityFG", ui.highlightActivityFG->color());
351 s.setValue("highlightActivityBG", ui.highlightActivityBG->color());
352 s.setValue("highlightActivityUseBG", ui.highlightActivityUseBG->isChecked());
353 s.setValue("newMessageActivityFG", ui.newMessageActivityFG->color());
354 s.setValue("newMessageActivityBG", ui.newMessageActivityBG->color());
355 s.setValue("newMessageActivityUseBG", ui.newMessageActivityUseBG->isChecked());
356 s.setValue("otherActivityFG", ui.otherActivityFG->color());
357 s.setValue("otherActivityBG", ui.otherActivityBG->color());
358 s.setValue("otherActivityUseBG", ui.otherActivityUseBG->isChecked());
360 saveColor(UiStyle::ErrorMsg, ui.errorMessageFG->color(), ui.errorMessageBG->color(), ui.errorMessageUseBG->isChecked());
361 s.setValue("errorMessageUseBG", ui.errorMessageUseBG->isChecked());
362 saveColor(UiStyle::NoticeMsg, ui.noticeMessageFG->color(), ui.noticeMessageBG->color(), ui.noticeMessageUseBG->isChecked());
363 s.setValue("noticeMessageUseBG", ui.noticeMessageUseBG->isChecked());
364 saveColor(UiStyle::PlainMsg, ui.plainMessageFG->color(), ui.plainMessageBG->color(), ui.plainMessageUseBG->isChecked());
365 s.setValue("plainMessageUseBG", ui.plainMessageUseBG->isChecked());
366 saveColor(UiStyle::ServerMsg, ui.serverMessageFG->color(), ui.serverMessageBG->color(), ui.serverMessageUseBG->isChecked());
367 s.setValue("serverMessageUseBG", ui.serverMessageUseBG->isChecked());
368 saveColor(UiStyle::ActionMsg, ui.actionMessageFG->color(), ui.actionMessageBG->color(), ui.actionMessageUseBG->isChecked());
369 s.setValue("actionMessageUseBG", ui.actionMessageUseBG->isChecked());
370 saveColor(UiStyle::JoinMsg, ui.joinMessageFG->color(), ui.joinMessageBG->color(), ui.joinMessageUseBG->isChecked());
371 s.setValue("joinMessageUseBG", ui.joinMessageUseBG->isChecked());
372 saveColor(UiStyle::KickMsg, ui.kickMessageFG->color(), ui.kickMessageBG->color(), ui.kickMessageUseBG->isChecked());
373 s.setValue("kickMessageUseBG", ui.kickMessageUseBG->isChecked());
374 saveColor(UiStyle::ModeMsg, ui.modeMessageFG->color(), ui.modeMessageBG->color(), ui.modeMessageUseBG->isChecked());
375 s.setValue("modeMessageUseBG", ui.modeMessageUseBG->isChecked());
376 saveColor(UiStyle::NoticeMsg, ui.noticeMessageFG->color(), ui.noticeMessageBG->color(), ui.noticeMessageUseBG->isChecked());
377 s.setValue("noticeMessageUseBG", ui.noticeMessageUseBG->isChecked());
378 saveColor(UiStyle::PartMsg, ui.partMessageFG->color(), ui.partMessageBG->color(), ui.partMessageUseBG->isChecked());
379 s.setValue("partMessageUseBG", ui.partMessageUseBG->isChecked());
380 saveColor(UiStyle::QuitMsg, ui.quitMessageFG->color(), ui.quitMessageBG->color(), ui.quitMessageUseBG->isChecked());
381 s.setValue("quitMessageUseBG", ui.quitMessageUseBG->isChecked());
382 saveColor(UiStyle::RenameMsg, ui.renameMessageFG->color(), ui.renameMessageBG->color(), ui.renameMessageUseBG->isChecked());
383 s.setValue("renameMessageUseBG", ui.renameMessageUseBG->isChecked());
385 QtUi::style()->setHighlightColor(ui.highlightColor->color());
387 saveColor(UiStyle::Timestamp, ui.timestampFG->color(), ui.timestampBG->color(), ui.timestampUseBG->isChecked());
388 s.setValue("timestampUseBG", ui.timestampUseBG->isChecked());
389 saveColor(UiStyle::Sender, ui.senderFG->color(), ui.senderBG->color(), ui.senderUseBG->isChecked());
390 s.setValue("senderUseBG", ui.senderUseBG->isChecked());
391 s.setValue("newMsgMarkerFG", ui.newMsgMarkerFG->color());
394 saveColor(UiStyle::Nick, ui.nickFG->color(), ui.nickBG->color(), ui.nickUseBG->isChecked());
395 s.setValue("nickUseBG", ui.nickUseBG->isChecked());
396 saveColor(UiStyle::Hostmask, ui.hostmaskFG->color(), ui.hostmaskBG->color(), ui.hostmaskUseBG->isChecked());
397 s.setValue("hostmaskUseBG", ui.hostmaskUseBG->isChecked());
398 saveColor(UiStyle::ChannelName, ui.channelnameFG->color(), ui.channelnameBG->color(), ui.channelnameUseBG->isChecked());
399 s.setValue("channelnameUseBG", ui.channelnameUseBG->isChecked());
400 saveColor(UiStyle::ModeFlags, ui.modeFlagsFG->color(), ui.modeFlagsBG->color(), ui.modeFlagsUseBG->isChecked());
401 s.setValue("modeFlagsUseBG", ui.modeFlagsUseBG->isChecked());
402 saveColor(UiStyle::Url, ui.urlFG->color(), ui.urlBG->color(), ui.urlUseBG->isChecked());
403 s.setValue("urlUseBG", ui.urlUseBG->isChecked());
406 saveMircColor(0, ui.color0->color());
407 saveMircColor(1, ui.color1->color());
408 saveMircColor(2, ui.color2->color());
409 saveMircColor(3, ui.color3->color());
410 saveMircColor(4, ui.color4->color());
411 saveMircColor(5, ui.color5->color());
412 saveMircColor(6, ui.color6->color());
413 saveMircColor(7, ui.color7->color());
414 saveMircColor(8, ui.color8->color());
415 saveMircColor(9, ui.color9->color());
416 saveMircColor(10, ui.color10->color());
417 saveMircColor(11, ui.color11->color());
418 saveMircColor(12, ui.color12->color());
419 saveMircColor(13, ui.color13->color());
420 saveMircColor(14, ui.color14->color());
421 saveMircColor(15, ui.color15->color());
423 load(); //TODO: remove when settings hash map is unnescessary
424 setChangedState(false);
427 void ColorSettingsPage::saveColor(UiStyle::FormatType formatType, const QColor &foreground, const QColor &background, bool enableBG) {
428 QTextCharFormat format = QtUi::style()->format(formatType);
429 format.setForeground(QBrush(foreground));
431 format.setBackground(QBrush(background));
433 format.clearBackground();
434 QtUi::style()->setFormat(formatType, format, Settings::Custom);
437 void ColorSettingsPage::saveMircColor(int num, const QColor &col) {
438 QTextCharFormat fgf, bgf;
439 fgf.setForeground(QBrush(col)); QtUi::style()->setFormat((UiStyle::FormatType)(UiStyle::FgCol00 | num<<24), fgf, Settings::Custom);
440 bgf.setBackground(QBrush(col)); QtUi::style()->setFormat((UiStyle::FormatType)(UiStyle::BgCol00 | num<<28), bgf, Settings::Custom);
443 void ColorSettingsPage::widgetHasChanged() {
444 bool changed = testHasChanged();
445 if(changed != hasChanged()) {
446 setChangedState(changed);
452 bool ColorSettingsPage::testHasChanged() {
453 if(settings["HighlightActivityFG"].value<QColor>() != ui.highlightActivityFG->color()) return true;
454 if(settings["HighlightActivityBG"].value<QColor>() != ui.highlightActivityBG->color()) return true;
455 if(settings["HighlightActivityUseBG"].toBool() != ui.highlightActivityUseBG->isChecked()) return true;
456 if(settings["NewMessageActivityFG"].value<QColor>() != ui.newMessageActivityFG->color()) return true;
457 if(settings["NewMessageActivityBG"].value<QColor>() != ui.newMessageActivityBG->color()) return true;
458 if(settings["NewMessageActivityUseBG"].toBool() != ui.newMessageActivityUseBG->isChecked()) return true;
459 if(settings["OtherActivityFG"].value<QColor>() != ui.otherActivityFG->color()) return true;
460 if(settings["OtherActivityBG"].value<QColor>() != ui.otherActivityBG->color()) return true;
461 if(settings["OtherActivityUseBG"].toBool() != ui.otherActivityUseBG->isChecked()) return true;
463 if(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color() != ui.errorMessageFG->color()) return true;
464 if(QtUi::style()->format(UiStyle::ErrorMsg).background().color() != ui.errorMessageBG->color()) return true;
465 if(settings["ErrorMessageUseBG"].toBool() != ui.errorMessageUseBG->isChecked()) return true;
466 if(QtUi::style()->format(UiStyle::ErrorMsg).foreground().color() != ui.errorMessageFG->color()) return true;
467 if(QtUi::style()->format(UiStyle::ErrorMsg).background().color() != ui.errorMessageBG->color()) return true;
468 if(settings["NoticeMessageUseBG"].toBool() != ui.noticeMessageUseBG->isChecked()) return true;
469 if(QtUi::style()->format(UiStyle::PlainMsg).foreground().color() != ui.plainMessageFG->color()) return true;
470 if(QtUi::style()->format(UiStyle::PlainMsg).background().color() != ui.plainMessageBG->color()) return true;
471 if(settings["PlainMessageUseBG"].toBool() != ui.plainMessageUseBG->isChecked()) return true;
472 if(QtUi::style()->format(UiStyle::ServerMsg).foreground().color() != ui.serverMessageFG->color()) return true;
473 if(QtUi::style()->format(UiStyle::ServerMsg).background().color() != ui.serverMessageBG->color()) return true;
474 if(settings["ServerMessageUseBG"].toBool() != ui.serverMessageUseBG->isChecked()) return true;
475 if(QtUi::style()->format(UiStyle::ActionMsg).foreground().color() != ui.actionMessageFG->color()) return true;
476 if(QtUi::style()->format(UiStyle::ActionMsg).background().color() != ui.actionMessageBG->color()) return true;
477 if(settings["ActionMessageUseBG"].toBool() != ui.actionMessageUseBG->isChecked()) return true;
478 if(QtUi::style()->format(UiStyle::JoinMsg).foreground().color() != ui.joinMessageFG->color()) return true;
479 if(QtUi::style()->format(UiStyle::JoinMsg).background().color() != ui.joinMessageBG->color()) return true;
480 if(settings["JoinMessageUseBG"].toBool() != ui.joinMessageUseBG->isChecked()) return true;
481 if(QtUi::style()->format(UiStyle::KickMsg).foreground().color() != ui.kickMessageFG->color()) return true;
482 if(QtUi::style()->format(UiStyle::KickMsg).background().color() != ui.joinMessageBG->color()) return true;
483 if(settings["KickMessageUseBG"].toBool() != ui.kickMessageUseBG->isChecked()) return true;
484 if(QtUi::style()->format(UiStyle::ModeMsg).foreground().color() != ui.modeMessageFG->color()) return true;
485 if(QtUi::style()->format(UiStyle::ModeMsg).background().color() != ui.modeMessageBG->color()) return true;
486 if(settings["ModeMessageUseBG"].toBool() != ui.modeMessageUseBG->isChecked()) return true;
487 if(QtUi::style()->format(UiStyle::NoticeMsg).foreground().color() != ui.noticeMessageFG->color()) return true;
488 if(QtUi::style()->format(UiStyle::NoticeMsg).background().color() != ui.noticeMessageBG->color()) return true;
489 if(settings["NoticeMessageUseBG"].toBool() != ui.noticeMessageUseBG->isChecked()) return true;
490 if(QtUi::style()->format(UiStyle::PartMsg).foreground().color() != ui.partMessageFG->color()) return true;
491 if(QtUi::style()->format(UiStyle::PartMsg).background().color() != ui.partMessageBG->color()) return true;
492 if(settings["PartMessageUseBG"].toBool() != ui.partMessageUseBG->isChecked()) return true;
493 if(QtUi::style()->format(UiStyle::QuitMsg).foreground().color() != ui.quitMessageFG->color()) return true;
494 if(QtUi::style()->format(UiStyle::QuitMsg).background().color() != ui.quitMessageBG->color()) return true;
495 if(settings["QuitMessageUseBG"].toBool() != ui.quitMessageUseBG->isChecked()) return true;
496 if(QtUi::style()->format(UiStyle::RenameMsg).foreground().color() != ui.renameMessageFG->color()) return true;
497 if(QtUi::style()->format(UiStyle::RenameMsg).background().color() != ui.renameMessageBG->color()) return true;
498 if(settings["RenameMessageUseBG"].toBool() != ui.renameMessageUseBG->isChecked()) return true;
500 if(QtUi::style()->highlightColor() != ui.highlightColor->color()) return true;
502 if(QtUi::style()->format(UiStyle::Timestamp).foreground().color() != ui.timestampFG->color()) return true;
503 if(QtUi::style()->format(UiStyle::Timestamp).background().color() != ui.timestampBG->color()) return true;
504 if(settings["TimestampUseBG"].toBool() != ui.timestampUseBG->isChecked()) return true;
505 if(QtUi::style()->format(UiStyle::Sender).foreground().color() != ui.senderFG->color()) return true;
506 if(QtUi::style()->format(UiStyle::Sender).background().color() != ui.senderBG->color()) return true;
507 if(settings["SenderUseBG"].toBool() != ui.senderUseBG->isChecked()) return true;
508 if(settings["NewMsgMarkerFG"].value<QColor>() != ui.newMsgMarkerFG->color()) return true;
511 if(QtUi::style()->format(UiStyle::Nick).foreground().color() != ui.nickFG->color()) return true;
512 if(QtUi::style()->format(UiStyle::Nick).background().color() != ui.nickBG->color()) return true;
513 if(settings["nickUseBG"].toBool() != ui.nickUseBG->isChecked()) return true;
514 if(QtUi::style()->format(UiStyle::Hostmask).foreground().color() != ui.hostmaskFG->color()) return true;
515 if(QtUi::style()->format(UiStyle::Hostmask).background().color() != ui.hostmaskBG->color()) return true;
516 if(settings["hostmaskUseBG"].toBool() != ui.hostmaskUseBG->isChecked()) return true;
517 if(QtUi::style()->format(UiStyle::ChannelName).foreground().color() != ui.channelnameFG->color()) return true;
518 if(QtUi::style()->format(UiStyle::ChannelName).background().color() != ui.channelnameBG->color()) return true;
519 if(settings["channelnameUseBG"].toBool() != ui.channelnameUseBG->isChecked()) return true;
520 if(QtUi::style()->format(UiStyle::ModeFlags).foreground().color() != ui.modeFlagsFG->color()) return true;
521 if(QtUi::style()->format(UiStyle::ModeFlags).background().color() != ui.modeFlagsBG->color()) return true;
522 if(settings["modeFlagsUseBG"].toBool() != ui.modeFlagsUseBG->isChecked()) return true;
523 if(QtUi::style()->format(UiStyle::Url).foreground().color() != ui.urlFG->color()) return true;
524 if(QtUi::style()->format(UiStyle::Url).background().color() != ui.urlBG->color()) return true;
525 if(settings["urlUseBG"].toBool() != ui.urlUseBG->isChecked()) return true;
528 if(QtUi::style()->format(UiStyle::FgCol00).foreground().color() != ui.color0->color()) return true;
529 if(QtUi::style()->format(UiStyle::FgCol01).foreground().color() != ui.color1->color()) return true;
530 if(QtUi::style()->format(UiStyle::FgCol02).foreground().color() != ui.color2->color()) return true;
531 if(QtUi::style()->format(UiStyle::FgCol03).foreground().color() != ui.color3->color()) return true;
532 if(QtUi::style()->format(UiStyle::FgCol04).foreground().color() != ui.color4->color()) return true;
533 if(QtUi::style()->format(UiStyle::FgCol05).foreground().color() != ui.color5->color()) return true;
534 if(QtUi::style()->format(UiStyle::FgCol06).foreground().color() != ui.color6->color()) return true;
535 if(QtUi::style()->format(UiStyle::FgCol07).foreground().color() != ui.color7->color()) return true;
536 if(QtUi::style()->format(UiStyle::FgCol08).foreground().color() != ui.color8->color()) return true;
537 if(QtUi::style()->format(UiStyle::FgCol09).foreground().color() != ui.color9->color()) return true;
538 if(QtUi::style()->format(UiStyle::FgCol10).foreground().color() != ui.color10->color()) return true;
539 if(QtUi::style()->format(UiStyle::FgCol11).foreground().color() != ui.color11->color()) return true;
540 if(QtUi::style()->format(UiStyle::FgCol12).foreground().color() != ui.color12->color()) return true;
541 if(QtUi::style()->format(UiStyle::FgCol13).foreground().color() != ui.color13->color()) return true;
542 if(QtUi::style()->format(UiStyle::FgCol14).foreground().color() != ui.color14->color()) return true;
543 if(QtUi::style()->format(UiStyle::FgCol15).foreground().color() != ui.color15->color()) return true;
548 void ColorSettingsPage::chooseColor(QWidget *widget) {
549 ColorButton *button = qobject_cast<ColorButton *>(widget);
551 QColor color = QColorDialog::getColor(button->color(), this);
552 if(color.isValid()) {
553 button->setColor(color);
558 void ColorSettingsPage::chatviewPreview() {
559 //TODO: update chatviewPreview
562 void ColorSettingsPage::bufferviewPreview() {
563 ui.bufferviewPreview->clear();
564 ui.bufferviewPreview->setColumnCount(1);
565 ui.bufferviewPreview->setHeaderLabels(QStringList(tr("Buffers")));
567 QTreeWidgetItem *topLevelItem = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("Network")));
568 ui.bufferviewPreview->insertTopLevelItem(0, topLevelItem);
570 QList<QTreeWidgetItem *> items;
571 QTreeWidgetItem *inactiveActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("#incative")));
572 items.append(inactiveActivity);
573 inactiveActivity->setForeground(0, QPalette().color(QPalette::Dark));
575 QTreeWidgetItem *noActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("#regular")));
576 items.append(noActivity);
578 QTreeWidgetItem *highlightActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("#highlight")));
579 items.append(highlightActivity);
580 highlightActivity->setForeground(0, QBrush(ui.highlightActivityFG->color()));
581 if(ui.highlightActivityUseBG->isChecked())
582 highlightActivity->setBackground(0, QBrush(ui.highlightActivityBG->color()));
584 QTreeWidgetItem *newMessageActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("#new message")));
585 items.append(newMessageActivity);
586 newMessageActivity->setForeground(0, QBrush(ui.newMessageActivityFG->color()));
587 if(ui.newMessageActivityUseBG->isChecked())
588 newMessageActivity->setBackground(0, QBrush(ui.newMessageActivityBG->color()));
590 QTreeWidgetItem *otherActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("#other activity")));
591 items.append(otherActivity);
592 otherActivity->setForeground(0, QBrush(ui.otherActivityFG->color()));
593 if(ui.otherActivityUseBG->isChecked())
594 otherActivity->setBackground(0, QBrush(ui.otherActivityBG->color()));
596 topLevelItem->insertChildren(0, items);
597 ui.bufferviewPreview->expandItem(topLevelItem);