added colorsettingspage
authorAlexander von Renteln <phon@quassel-irc.org>
Fri, 15 Feb 2008 01:49:18 +0000 (01:49 +0000)
committerAlexander von Renteln <phon@quassel-irc.org>
Fri, 15 Feb 2008 01:49:18 +0000 (01:49 +0000)
changed generalpage for mac os x
set kickban inactive in user context menu

13 files changed:
Quassel.kdevelop.filelist
src/qtui/mainwin.cpp
src/qtui/settingspages/colorsettingspage.cpp [new file with mode: 0644]
src/qtui/settingspages/colorsettingspage.h [new file with mode: 0644]
src/qtui/settingspages/colorsettingspage.ui [new file with mode: 0644]
src/qtui/settingspages/generalsettingspage.cpp
src/qtui/settingspages/generalsettingspage.ui
src/qtui/settingspages/settingspages.pri
src/uisupport/colorbutton.cpp [new file with mode: 0644]
src/uisupport/colorbutton.h [new file with mode: 0644]
src/uisupport/nickview.cpp
src/uisupport/uisupport.pri
version.inc

index b3cad7b..b74b808 100644 (file)
@@ -1,4 +1,5 @@
 # KDevelop Custom Project File List
+Makefile
 build
 build/buildconf.pri
 build/contrib
@@ -138,8 +139,6 @@ src/qtopia/ui/editcoreacctdlg.ui
 src/qtopia/ui/mainwidget.ui
 src/qtopia/ui/nicklistwidget.ui
 src/qtui
-src/qtui/aboutdlg.cpp
-src/qtui/aboutdlg.h
 src/qtui/bufferwidget.cpp
 src/qtui/bufferwidget.h
 src/qtui/chatitem.cpp
@@ -156,14 +155,10 @@ src/qtui/chatwidget.cpp
 src/qtui/chatwidget.h
 src/qtui/configwizard.cpp
 src/qtui/configwizard.h
-src/qtui/coreconfigwizard.cpp
-src/qtui/coreconfigwizard.h
 src/qtui/coreconnectdlg.cpp
 src/qtui/coreconnectdlg.h
 src/qtui/debugconsole.cpp
 src/qtui/debugconsole.h
-src/qtui/inputwidget.cpp
-src/qtui/inputwidget.h
 src/qtui/mainwin.cpp
 src/qtui/mainwin.h
 src/qtui/nicklistwidget.cpp
@@ -171,27 +166,28 @@ src/qtui/nicklistwidget.h
 src/qtui/qtui.cpp
 src/qtui/qtui.h
 src/qtui/qtui.pri
+src/qtui/qtuisettings.cpp
+src/qtui/qtuisettings.h
 src/qtui/qtuistyle.cpp
 src/qtui/qtuistyle.h
 src/qtui/settingsdlg.cpp
 src/qtui/settingsdlg.h
-src/qtui/settingspagedlg.cpp
-src/qtui/settingspagedlg.h
 src/qtui/settingspages
+src/qtui/settingspages/colorsettingspage.cpp
+src/qtui/settingspages/colorsettingspage.h
 src/qtui/settingspages/createidentitydlg.ui
 src/qtui/settingspages/fontssettingspage.cpp
 src/qtui/settingspages/fontssettingspage.h
 src/qtui/settingspages/fontssettingspage.ui
+src/qtui/settingspages/generalsettingspage.cpp
+src/qtui/settingspages/generalsettingspage.h
 src/qtui/settingspages/identitiessettingspage.cpp
 src/qtui/settingspages/identitiessettingspage.h
 src/qtui/settingspages/identitiessettingspage.ui
-src/qtui/settingspages/networkeditdlg.ui
 src/qtui/settingspages/networkssettingspage.cpp
 src/qtui/settingspages/networkssettingspage.h
 src/qtui/settingspages/networkssettingspage.ui
-src/qtui/settingspages/nickeditdlg.ui
 src/qtui/settingspages/saveidentitiesdlg.ui
-src/qtui/settingspages/servereditdlg.ui
 src/qtui/settingspages/settingspages.pri
 src/qtui/topicwidget.cpp
 src/qtui/topicwidget.h
@@ -205,23 +201,17 @@ src/qtui/ui/mainwin.ui
 src/qtui/ui/nicklistwidget.ui
 src/qtui/ui/settingsdlg.ui
 src/qtui/ui/topicwidget.ui
-src/qtui/verticaldock.cpp
-src/qtui/verticaldock.h
 src/uisupport
-src/uisupport/action.cpp
-src/uisupport/action.h
-src/uisupport/actioncollection.cpp
-src/uisupport/actioncollection.h
 src/uisupport/bufferview.cpp
 src/uisupport/bufferview.h
 src/uisupport/bufferviewfilter.cpp
 src/uisupport/bufferviewfilter.h
+src/uisupport/colorbutton.cpp
+src/uisupport/colorbutton.h
 src/uisupport/inputline.cpp
 src/uisupport/inputline.h
 src/uisupport/nickview.cpp
 src/uisupport/nickview.h
-src/uisupport/nickviewfilter.cpp
-src/uisupport/nickviewfilter.h
 src/uisupport/settingspage.cpp
 src/uisupport/settingspage.h
 src/uisupport/tabcompleter.cpp
index 81dc224..1b73804 100644 (file)
 #include "selectionmodelsynchronizer.h"
 #include "mappedselectionmodel.h"
 
+#include "settingspages/colorsettingspage.h"
 #include "settingspages/fontssettingspage.h"
+#include "settingspages/generalsettingspage.h"
 #include "settingspages/identitiessettingspage.h"
 #include "settingspages/networkssettingspage.h"
-#include "settingspages/generalsettingspage.h"
+
 
 #include "debugconsole.h"
 
@@ -174,12 +176,16 @@ QDockWidget *MainWin::addBufferView(const QString &viewname, QAbstractItemModel
 }
 
 void MainWin::setupSettingsDlg() {
-
+  //Category: Appearance
+  settingsDlg->registerSettingsPage(new ColorSettingsPage(settingsDlg));
   settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg));
+  //Category: Behaviour
+  settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg));
+  //Category: General
   settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg));
   settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg));
-  settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg));
-  
+
+
 #ifdef SPUTDEV
   connect(settingsDlg, SIGNAL(finished(int)), QApplication::instance(), SLOT(quit()));  // FIXME
 #endif
@@ -368,19 +374,25 @@ void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReas
 }
 
 void MainWin::toggleVisibility() {
-  if(isHidden()) {
+  if(isHidden() || !isActiveWindow()) {
     show();
-    if(isMinimized()) {
-      if(isMaximized()) {
+    if(isMinimized())
+      if (isMaximized())
         showMaximized();
-      } else {
+      else
         showNormal();
-      }
-    }
+
     raise();
     activateWindow();
   } else {
-   hide();
+    if(systray->isSystemTrayAvailable ()) {
+      hide();
+      if(!systray->isVisible()) {
+        systray->show();
+      }
+    } else {
+      lower();
+    }
   }
 }
 
diff --git a/src/qtui/settingspages/colorsettingspage.cpp b/src/qtui/settingspages/colorsettingspage.cpp
new file mode 100644 (file)
index 0000000..475d57c
--- /dev/null
@@ -0,0 +1,550 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "colorsettingspage.h"
+
+#include "qtui.h"
+#include "qtuisettings.h"
+#include "colorbutton.h"
+
+#include <QColorDialog>
+#include <QPainter>
+
+ColorSettingsPage::ColorSettingsPage(QWidget *parent)
+  : SettingsPage(tr("Appearance"), tr("Color settings"), parent) {
+  ui.setupUi(this);
+
+  mapper = new QSignalMapper(this);
+  //Bufferview tab:
+  connect(ui.inactiveActivity, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.noActivity, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.highlightActivity, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.newMessageActivity, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.otherActivity, SIGNAL(clicked()), mapper, SLOT(map()));
+
+  mapper->setMapping(ui.inactiveActivity, ui.inactiveActivity);
+  mapper->setMapping(ui.noActivity, ui.noActivity);
+  mapper->setMapping(ui.highlightActivity, ui.highlightActivity);
+  mapper->setMapping(ui.newMessageActivity, ui.newMessageActivity);
+  mapper->setMapping(ui.otherActivity, ui.otherActivity);
+
+  //Chatview tab:
+  connect(ui.errorMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.errorMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.noticeMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.noticeMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.plainMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.plainMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.serverMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.serverMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.actionMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.actionMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.joinMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.joinMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.kickMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.kickMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.modeMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.modeMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.partMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.partMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.quitMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.quitMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.renameMessageFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.renameMessageBG, SIGNAL(clicked()), mapper, SLOT(map()));
+
+  mapper->setMapping(ui.errorMessageFG, ui.errorMessageFG);
+  mapper->setMapping(ui.errorMessageBG, ui.errorMessageBG);
+  mapper->setMapping(ui.noticeMessageFG, ui.noticeMessageFG);
+  mapper->setMapping(ui.noticeMessageBG, ui.noticeMessageBG);
+  mapper->setMapping(ui.plainMessageFG, ui.plainMessageFG);
+  mapper->setMapping(ui.plainMessageBG, ui.plainMessageBG);
+  mapper->setMapping(ui.serverMessageFG, ui.serverMessageFG);
+  mapper->setMapping(ui.serverMessageBG, ui.serverMessageBG);
+  mapper->setMapping(ui.actionMessageFG, ui.actionMessageFG);
+  mapper->setMapping(ui.actionMessageBG, ui.actionMessageBG);
+  mapper->setMapping(ui.joinMessageFG, ui.joinMessageFG);
+  mapper->setMapping(ui.joinMessageBG, ui.joinMessageBG);
+  mapper->setMapping(ui.kickMessageFG, ui.kickMessageFG);
+  mapper->setMapping(ui.kickMessageBG, ui.kickMessageBG);
+  mapper->setMapping(ui.modeMessageFG, ui.modeMessageFG);
+  mapper->setMapping(ui.modeMessageBG, ui.modeMessageBG);
+  mapper->setMapping(ui.partMessageFG, ui.partMessageFG);
+  mapper->setMapping(ui.partMessageBG, ui.partMessageBG);
+  mapper->setMapping(ui.quitMessageFG, ui.quitMessageFG);
+  mapper->setMapping(ui.quitMessageBG, ui.quitMessageBG);
+  mapper->setMapping(ui.renameMessageFG, ui.renameMessageFG);
+  mapper->setMapping(ui.renameMessageBG, ui.renameMessageBG);
+
+  //Message Layout tab:
+  connect(ui.timestampFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.timestampBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.senderFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.senderBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.nickFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.nickBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.hostmaskFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.hostmaskBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.channelnameFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.channelnameBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.modeFlagsFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.modeFlagsBG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.urlFG, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.urlBG, SIGNAL(clicked()), mapper, SLOT(map()));
+
+  mapper->setMapping(ui.timestampFG, ui.timestampFG);
+  mapper->setMapping(ui.timestampBG, ui.timestampBG);
+  mapper->setMapping(ui.senderFG, ui.senderFG);
+  mapper->setMapping(ui.senderBG, ui.senderBG);
+  mapper->setMapping(ui.nickFG, ui.nickFG);
+  mapper->setMapping(ui.nickBG, ui.nickBG);
+  mapper->setMapping(ui.hostmaskFG, ui.hostmaskFG);
+  mapper->setMapping(ui.hostmaskBG, ui.hostmaskBG);
+  mapper->setMapping(ui.channelnameFG, ui.channelnameFG);
+  mapper->setMapping(ui.channelnameBG, ui.channelnameBG);
+  mapper->setMapping(ui.modeFlagsFG, ui.modeFlagsFG);
+  mapper->setMapping(ui.modeFlagsBG, ui.modeFlagsBG);
+  mapper->setMapping(ui.urlFG, ui.urlFG);
+  mapper->setMapping(ui.urlBG, ui.urlBG);
+
+  //Mirc Color Codes tab:
+  connect(ui.color0, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color1, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color2, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color3, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color4, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color5, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color6, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color7, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color8, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color9, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color10, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color11, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color12, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color13, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color14, SIGNAL(clicked()), mapper, SLOT(map()));
+  connect(ui.color15, SIGNAL(clicked()), mapper, SLOT(map()));
+
+  mapper->setMapping(ui.color0, ui.color0);
+  mapper->setMapping(ui.color1, ui.color1);
+  mapper->setMapping(ui.color2, ui.color2);
+  mapper->setMapping(ui.color3, ui.color3);
+  mapper->setMapping(ui.color4, ui.color4);
+  mapper->setMapping(ui.color5, ui.color5);
+  mapper->setMapping(ui.color6, ui.color6);
+  mapper->setMapping(ui.color7, ui.color7);
+  mapper->setMapping(ui.color8, ui.color8);
+  mapper->setMapping(ui.color9, ui.color9);
+  mapper->setMapping(ui.color10, ui.color10);
+  mapper->setMapping(ui.color11, ui.color11);
+  mapper->setMapping(ui.color12, ui.color12);
+  mapper->setMapping(ui.color13, ui.color13);
+  mapper->setMapping(ui.color14, ui.color14);
+  mapper->setMapping(ui.color15, ui.color15);
+
+  connect(mapper, SIGNAL(mapped(QWidget *)), this, SLOT(chooseColor(QWidget *)));
+}
+
+bool ColorSettingsPage::hasDefaults() const {
+  return true;
+}
+
+void ColorSettingsPage::defaults() {
+  ui.inactiveActivity->setColor(QColor(Qt::gray));
+  ui.noActivity->setColor(QColor(Qt::black));
+  ui.highlightActivity->setColor(QColor(Qt::magenta));
+  ui.newMessageActivity->setColor(QColor(Qt::green));
+  ui.otherActivity->setColor(QColor(Qt::darkGreen));
+
+  ui.errorMessageFG->setColor(QColor("red"));
+  ui.errorMessageBG->setColor(QColor("white"));
+  ui.noticeMessageFG->setColor(QColor("navy"));
+  ui.noticeMessageBG->setColor(QColor("white"));
+  ui.plainMessageFG->setColor(QColor("black"));
+  ui.plainMessageBG->setColor(QColor("white"));
+  ui.serverMessageFG->setColor(QColor("navy"));
+  ui.serverMessageBG->setColor(QColor("white"));
+  ui.actionMessageFG->setColor(QColor("darkmagenta"));
+  ui.actionMessageBG->setColor(QColor("white"));
+  ui.joinMessageFG->setColor(QColor("green"));
+  ui.joinMessageBG->setColor(QColor("white"));
+  ui.kickMessageFG->setColor(QColor("black"));
+  ui.kickMessageBG->setColor(QColor("white"));
+  ui.modeMessageFG->setColor(QColor("steelblue"));
+  ui.modeMessageBG->setColor(QColor("white"));
+  ui.partMessageFG->setColor(QColor("indianred"));
+  ui.partMessageBG->setColor(QColor("white"));
+  ui.quitMessageFG->setColor(QColor("indianred"));
+  ui.quitMessageBG->setColor(QColor("white"));
+  ui.renameMessageFG->setColor(QColor("magenta"));
+  ui.renameMessageBG->setColor(QColor("white"));
+
+  ui.timestampFG->setColor(QColor("grey"));
+  ui.timestampBG->setColor(QColor("white"));
+  ui.senderFG->setColor(QColor("navy"));
+  ui.senderBG->setColor(QColor("white"));
+  ui.nickFG->setColor(QColor("black"));
+  ui.nickBG->setColor(QColor("white"));
+  ui.hostmaskFG->setColor(QColor("black"));
+  ui.hostmaskBG->setColor(QColor("white"));
+  ui.channelnameFG->setColor(QColor("black"));
+  ui.channelnameBG->setColor(QColor("white"));
+  ui.modeFlagsFG->setColor(QColor("black"));
+  ui.modeFlagsBG->setColor(QColor("white"));
+  ui.urlFG->setColor(QColor("black"));
+  ui.urlBG->setColor(QColor("white"));
+
+
+  ui.color0->setColor(QColor("#ffffff"));
+  ui.color1->setColor(QColor("#000000"));
+  ui.color2->setColor(QColor("#000080"));
+  ui.color3->setColor(QColor("#008000"));
+  ui.color4->setColor(QColor("#ff0000"));
+  ui.color5->setColor(QColor("#800000"));
+  ui.color6->setColor(QColor("#800080"));
+  ui.color7->setColor(QColor("#ffa500"));
+  ui.color8->setColor(QColor("#ffff00"));
+  ui.color9->setColor(QColor("#00ff00"));
+  ui.color10->setColor(QColor("#008080"));
+  ui.color11->setColor(QColor("#00ffff"));
+  ui.color12->setColor(QColor("#4169E1"));
+  ui.color13->setColor(QColor("#ff00ff"));
+  ui.color14->setColor(QColor("#808080"));
+  ui.color15->setColor(QColor("#c0c0c0"));
+
+  widgetHasChanged();
+  bufferviewPreview();
+  chatviewPreview();
+}
+
+void ColorSettingsPage::load() {
+  QtUiSettings s("QtUi/Colors");
+  settings["InactiveActivity"] = s.value("inactiveActivity", QVariant(QColor(Qt::gray)));
+  ui.inactiveActivity->setColor(settings["InactiveActivity"].value<QColor>());
+  settings["NoActivity"] = s.value("noActivity", QVariant(QColor(Qt::black)));
+  ui.noActivity->setColor(settings["NoActivity"].value<QColor>());
+  settings["HighlightActivity"] = s.value("highlightActivity", QVariant(QColor(Qt::magenta)));
+  ui.highlightActivity->setColor(settings["HighlightActivity"].value<QColor>());
+  settings["NewMessageActivity"] = s.value("newMessageActivity", QVariant(QColor(Qt::green)));
+  ui.newMessageActivity->setColor(settings["NewMessageActivity"].value<QColor>());
+  settings["OtherActivity"] = s.value("otherActivity", QVariant(QColor(Qt::darkGreen)));
+  ui.otherActivity->setColor(settings["OtherActivity"].value<QColor>());
+
+  settings["ErrorMessageFG"] = s.value("errorMessageFG", QVariant(QColor("red")));
+  ui.errorMessageFG->setColor(settings["ErrorMessageFG"].value<QColor>());
+  settings["ErrorMessageBG"] = s.value("errorMessageBG", QVariant(QColor("white")));
+  ui.errorMessageBG->setColor(settings["ErrorMessageBG"].value<QColor>());
+  settings["NoticeMessageFG"] = s.value("noticeMessageFG", QVariant(QColor("navy")));
+  ui.noticeMessageFG->setColor(settings["NoticeMessageFG"].value<QColor>());
+  settings["NoticeMessageBG"] = s.value("noticeMessageBG", QVariant(QColor("white")));
+  ui.noticeMessageBG->setColor(settings["NoticeMessageBG"].value<QColor>());
+  settings["PlainMessageFG"] = s.value("plainMessageFG", QVariant(QColor("black")));
+  ui.plainMessageFG->setColor(settings["PlainMessageFG"].value<QColor>());
+  settings["PlainMessageBG"] = s.value("plainMessageBG", QVariant(QColor("white")));
+  ui.plainMessageBG->setColor(settings["PlainMessageBG"].value<QColor>());
+  settings["ServerMessageFG"] = s.value("serverMessageFG", QVariant(QColor("navy")));
+  ui.serverMessageFG->setColor(settings["ServerMessageFG"].value<QColor>());
+  settings["ServerMessageBG"] = s.value("serverMessageBG", QVariant(QColor("white")));
+  ui.serverMessageBG->setColor(settings["ServerMessageBG"].value<QColor>());
+  settings["ActionMessageFG"] = s.value("actionMessageFG", QVariant(QColor("darkmagenta")));
+  ui.actionMessageFG->setColor(settings["ActionMessageFG"].value<QColor>());
+  settings["ActionMessageBG"] = s.value("actionMessageBG", QVariant(QColor("white")));
+  ui.actionMessageBG->setColor(settings["ActionMessageBG"].value<QColor>());
+  settings["JoinMessageFG"] = s.value("joinMessageFG", QVariant(QColor("green")));
+  ui.joinMessageFG->setColor(settings["JoinMessageFG"].value<QColor>());
+  settings["JoinMessageBG"] = s.value("joinMessageBG", QVariant(QColor("white")));
+  ui.joinMessageBG->setColor(settings["JoinMessageBG"].value<QColor>());
+  settings["KickMessageFG"] = s.value("kickMessageFG", QVariant(QColor("black")));
+  ui.kickMessageFG->setColor(settings["KickMessageFG"].value<QColor>());
+  settings["KickMessageBG"] = s.value("kickMessageBG", QVariant(QColor("white")));
+  ui.kickMessageBG->setColor(settings["KickMessageBG"].value<QColor>());
+  settings["ModeMessageFG"] = s.value("modeMessageFG", QVariant(QColor("steelblue")));
+  ui.modeMessageFG->setColor(settings["ModeMessageFG"].value<QColor>());
+  settings["ModeMessageBG"] = s.value("modeMessageBG", QVariant(QColor("white")));
+  ui.modeMessageBG->setColor(settings["ModeMessageBG"].value<QColor>());
+  settings["PartMessageFG"] = s.value("partMessageFG", QVariant(QColor("indianred")));
+  ui.partMessageFG->setColor(settings["PartMessageFG"].value<QColor>());
+  settings["PartMessageBG"] = s.value("partMessageBG", QVariant(QColor("white")));
+  ui.partMessageBG->setColor(settings["PartMessageBG"].value<QColor>());
+  settings["QuitMessageFG"] = s.value("quitMessageFG", QVariant(QColor("indianred")));
+  ui.quitMessageFG->setColor(settings["QuitMessageFG"].value<QColor>());
+  settings["QuitMessageBG"] = s.value("quitMessageBG", QVariant(QColor("white")));
+  ui.quitMessageBG->setColor(settings["QuitMessageBG"].value<QColor>());
+  settings["RenameMessageFG"] = s.value("renameMessageFG", QVariant(QColor("magenta")));
+  ui.renameMessageFG->setColor(settings["RenameMessageFG"].value<QColor>());
+  settings["RenameMessageBG"] = s.value("renameMessageBG", QVariant(QColor("white")));
+  ui.renameMessageBG->setColor(settings["RenameMessageBG"].value<QColor>());
+
+  settings["TimestampFG"] = s.value("timestampFG", QVariant(QColor("grey")));
+  ui.timestampFG->setColor(settings["TimestampFG"].value<QColor>());
+  settings["TimestampBG"] = s.value("timestampBG", QVariant(QColor("white")));
+  ui.timestampBG->setColor(settings["TimestampBG"].value<QColor>());
+  settings["SenderFG"] = s.value("senderFG", QVariant(QColor("navy")));
+  ui.senderFG->setColor(settings["SenderFG"].value<QColor>());
+  settings["SenderBG"] = s.value("senderBG", QVariant(QColor("white")));
+  ui.senderBG->setColor(settings["SenderBG"].value<QColor>());
+  settings["NickFG"] = s.value("nickFG", QVariant(QColor("black")));
+  ui.nickFG->setColor(settings["NickFG"].value<QColor>());
+  settings["NickBG"] = s.value("nickBG", QVariant(QColor("white")));
+  ui.nickBG->setColor(settings["NickBG"].value<QColor>());
+  settings["HostmaskFG"] = s.value("hostmaskFG", QVariant(QColor("black")));
+  ui.hostmaskFG->setColor(settings["HostmaskFG"].value<QColor>());
+  settings["HostmaskBG"] = s.value("hostmaskBG", QVariant(QColor("white")));
+  ui.hostmaskBG->setColor(settings["HostmaskBG"].value<QColor>());
+  settings["ChannelnameFG"] = s.value("channelnameFG", QVariant(QColor("black")));
+  ui.channelnameFG->setColor(settings["ChannelnameFG"].value<QColor>());
+  settings["ChannelnameBG"] = s.value("channelnameBG", QVariant(QColor("white")));
+  ui.channelnameBG->setColor(settings["ChannelnameBG"].value<QColor>());
+  settings["ModeFlagsFG"] = s.value("modeFlagsFG", QVariant(QColor("black")));
+  ui.modeFlagsFG->setColor(settings["ModeFlagsFG"].value<QColor>());
+  settings["ModeFlagsBG"] = s.value("modeFlagsBG", QVariant(QColor("white")));
+  ui.modeFlagsBG->setColor(settings["ModeFlagsBG"].value<QColor>());
+  settings["UrlFG"] = s.value("urlFG", QVariant(QColor("black")));
+  ui.urlFG->setColor(settings["UrlFG"].value<QColor>());
+  settings["UrlBG"] = s.value("urlBG", QVariant(QColor("white")));
+  ui.urlBG->setColor(settings["UrlBG"].value<QColor>());
+
+  settings["Color0"] = s.value("color0", QVariant(QColor("#ffffff")));
+  ui.color0->setColor(settings["Color0"].value<QColor>());
+  settings["Color1"] = s.value("color1", QVariant(QColor("#000000")));
+  ui.color1->setColor(settings["Color1"].value<QColor>());
+  settings["Color2"] = s.value("color2", QVariant(QColor("#000080")));
+  ui.color2->setColor(settings["Color2"].value<QColor>());
+  settings["Color3"] = s.value("color3", QVariant(QColor("#008000")));
+  ui.color3->setColor(settings["Color3"].value<QColor>());
+  settings["Color4"] = s.value("color4", QVariant(QColor("#ff0000")));
+  ui.color4->setColor(settings["Color4"].value<QColor>());
+  settings["Color5"] = s.value("color5", QVariant(QColor("#800000")));
+  ui.color5->setColor(settings["Color5"].value<QColor>());
+  settings["Color6"] = s.value("color6", QVariant(QColor("#800080")));
+  ui.color6->setColor(settings["Color6"].value<QColor>());
+  settings["Color7"] = s.value("color7", QVariant(QColor("#ffa500")));
+  ui.color7->setColor(settings["Color7"].value<QColor>());
+  settings["Color8"] = s.value("color8", QVariant(QColor("#ffff00")));
+  ui.color8->setColor(settings["Color8"].value<QColor>());
+  settings["Color9"] = s.value("color9", QVariant(QColor("#00ff00")));
+  ui.color9->setColor(settings["Color9"].value<QColor>());
+  settings["Color10"] = s.value("color10", QVariant(QColor("#008080")));
+  ui.color10->setColor(settings["Color10"].value<QColor>());
+  settings["Color11"] = s.value("color11", QVariant(QColor("#00ffff")));
+  ui.color11->setColor(settings["Color11"].value<QColor>());
+  settings["Color12"] = s.value("color12", QVariant(QColor("#4169E1")));
+  ui.color12->setColor(settings["Color12"].value<QColor>());
+  settings["Color13"] = s.value("color13", QVariant(QColor("#ff00ff")));
+  ui.color13->setColor(settings["Color13"].value<QColor>());
+  settings["Color14"] = s.value("color14", QVariant(QColor("#808080")));
+  ui.color14->setColor(settings["Color14"].value<QColor>());
+  settings["Color15"] = s.value("color15", QVariant(QColor("#c0c0c0")));
+  ui.color15->setColor(settings["Color15"].value<QColor>());
+
+  setChangedState(false);
+
+  bufferviewPreview();
+  chatviewPreview();
+}
+
+void ColorSettingsPage::save() {
+  QtUiSettings s("QtUi/Colors");
+  s.setValue("inactiveActivity", ui.inactiveActivity->color());
+  s.setValue("noActivity", ui.noActivity->color());
+  s.setValue("highlightActivity", ui.highlightActivity->color());
+  s.setValue("newMessageActivity", ui.newMessageActivity->color());
+  s.setValue("otherActivity", ui.otherActivity->color());
+
+  s.setValue("errorMessageFG", ui.errorMessageFG->color());
+  s.setValue("errorMessageBG", ui.errorMessageBG->color());
+  s.setValue("noticeMessageFG", ui.noticeMessageFG->color());
+  s.setValue("noticeMessageBG", ui.noticeMessageBG->color());
+  s.setValue("plainMessageFG", ui.plainMessageFG->color());
+  s.setValue("plainMessageBG", ui.plainMessageBG->color());
+  s.setValue("serverMessageFG", ui.serverMessageFG->color());
+  s.setValue("serverMessageBG", ui.serverMessageBG->color());
+  s.setValue("actionMessageFG", ui.actionMessageFG->color());
+  s.setValue("actionMessageBG", ui.actionMessageBG->color());
+  s.setValue("joinMessageFG", ui.joinMessageFG->color());
+  s.setValue("joinMessageBG", ui.joinMessageBG->color());
+  s.setValue("kickMessageFG", ui.kickMessageFG->color());
+  s.setValue("kickMessageBG", ui.kickMessageBG->color());
+  s.setValue("modeMessageFG", ui.modeMessageFG->color());
+  s.setValue("modeMessageBG", ui.modeMessageBG->color());
+  s.setValue("partMessageFG", ui.partMessageFG->color());
+  s.setValue("partMessageBG", ui.partMessageBG->color());
+  s.setValue("quitMessageFG", ui.quitMessageFG->color());
+  s.setValue("quitMessageBG", ui.quitMessageBG->color());
+  s.setValue("renameMessageFG", ui.renameMessageFG->color());
+  s.setValue("renameMessageBG", ui.renameMessageBG->color());
+
+  s.setValue("timestampFG", ui.timestampFG->color());
+  s.setValue("timestampBG", ui.timestampBG->color());
+  s.setValue("senderFG", ui.senderFG->color());
+  s.setValue("senderBG", ui.senderBG->color());
+  s.setValue("nickFG", ui.nickFG->color());
+  s.setValue("nickBG", ui.nickBG->color());
+  s.setValue("hostmaskFG", ui.hostmaskFG->color());
+  s.setValue("hostmaskBG", ui.hostmaskBG->color());
+  s.setValue("channelnameFG", ui.channelnameFG->color());
+  s.setValue("channelnameBG", ui.channelnameBG->color());
+  s.setValue("modeFlagsFG", ui.modeFlagsFG->color());
+  s.setValue("modeFlagsBG", ui.modeFlagsBG->color());
+  s.setValue("urlFG", ui.urlFG->color());
+  s.setValue("urlBG", ui.urlBG->color());
+
+
+  s.setValue("color0", ui.color0->color());
+  s.setValue("color1", ui.color1->color());
+  s.setValue("color2", ui.color2->color());
+  s.setValue("color3", ui.color3->color());
+  s.setValue("color4", ui.color4->color());
+  s.setValue("color5", ui.color5->color());
+  s.setValue("color6", ui.color6->color());
+  s.setValue("color7", ui.color7->color());
+  s.setValue("color8", ui.color8->color());
+  s.setValue("color9", ui.color9->color());
+  s.setValue("color10", ui.color10->color());
+  s.setValue("color11", ui.color11->color());
+  s.setValue("color12", ui.color12->color());
+  s.setValue("color13", ui.color13->color());
+  s.setValue("color14", ui.color14->color());
+  s.setValue("color15", ui.color15->color());
+
+  load();
+  setChangedState(false);
+}
+
+void ColorSettingsPage::widgetHasChanged() {
+  bool changed = testHasChanged();
+  if(changed != hasChanged()) setChangedState(changed);
+}
+
+bool ColorSettingsPage::testHasChanged() {
+  if(settings["InactiveActivity"].value<QColor>() != ui.inactiveActivity->color()) return true;
+  if(settings["NoActivity"].value<QColor>() != ui.noActivity->color()) return true;
+  if(settings["HighlightActivity"].value<QColor>() != ui.highlightActivity->color()) return true;
+  if(settings["NewMessageActivity"].value<QColor>() != ui.newMessageActivity->color()) return true;
+  if(settings["OtherActivity"].value<QColor>() != ui.otherActivity->color()) return true;
+
+  if(settings["ErrorMessageFG"].value<QColor>() != ui.errorMessageFG->color()) return true;
+  if(settings["ErrorMessageBG"].value<QColor>() != ui.errorMessageBG->color()) return true;
+  if(settings["NoticeMessageFG"].value<QColor>() != ui.noticeMessageFG->color()) return true;
+  if(settings["NoticeMessageBG"].value<QColor>() != ui.noticeMessageBG->color()) return true;
+  if(settings["PlainMessageFG"].value<QColor>() != ui.plainMessageFG->color()) return true;
+  if(settings["PlainMessageBG"].value<QColor>() != ui.plainMessageBG->color()) return true;
+  if(settings["ServerMessageFG"].value<QColor>() != ui.serverMessageFG->color()) return true;
+  if(settings["ServerMessageBG"].value<QColor>() != ui.serverMessageBG->color()) return true;
+  if(settings["ActionMessageFG"].value<QColor>() != ui.actionMessageFG->color()) return true;
+  if(settings["ActionMessageBG"].value<QColor>() != ui.actionMessageBG->color()) return true;
+  if(settings["JoinMessageFG"].value<QColor>() != ui.joinMessageFG->color()) return true;
+  if(settings["JoinMessageBG"].value<QColor>() != ui.joinMessageBG->color()) return true;
+  if(settings["KickMessageFG"].value<QColor>() != ui.kickMessageFG->color()) return true;
+  if(settings["KickMessageBG"].value<QColor>() != ui.kickMessageBG->color()) return true;
+  if(settings["ModeMessageFG"].value<QColor>() != ui.modeMessageFG->color()) return true;
+  if(settings["ModeMessageBG"].value<QColor>() != ui.modeMessageBG->color()) return true;
+  if(settings["PartMessageFG"].value<QColor>() != ui.partMessageFG->color()) return true;
+  if(settings["PartMessageBG"].value<QColor>() != ui.partMessageBG->color()) return true;
+  if(settings["QuitMessageFG"].value<QColor>() != ui.quitMessageFG->color()) return true;
+  if(settings["QuitMessageBG"].value<QColor>() != ui.quitMessageBG->color()) return true;
+  if(settings["RenameMessageFG"].value<QColor>() != ui.renameMessageFG->color()) return true;
+  if(settings["RenameMessageBG"].value<QColor>() != ui.renameMessageBG->color()) return true;
+
+  if(settings["TimestampFG"].value<QColor>() != ui.timestampFG->color()) return true;
+  if(settings["TimestampBG"].value<QColor>() != ui.timestampBG->color()) return true;
+  if(settings["SenderFG"].value<QColor>() != ui.senderFG->color()) return true;
+  if(settings["SenderBG"].value<QColor>() != ui.senderBG->color()) return true;
+  if(settings["NickFG"].value<QColor>() != ui.nickFG->color()) return true;
+  if(settings["NickBG"].value<QColor>() != ui.nickBG->color()) return true;
+  if(settings["HostmaskFG"].value<QColor>() != ui.hostmaskFG->color()) return true;
+  if(settings["HostmaskBG"].value<QColor>() != ui.hostmaskBG->color()) return true;
+  if(settings["ChannelnameFG"].value<QColor>() != ui.channelnameFG->color()) return true;
+  if(settings["ChannelnameBG"].value<QColor>() != ui.channelnameBG->color()) return true;
+  if(settings["ModeFlagsFG"].value<QColor>() != ui.modeFlagsFG->color()) return true;
+  if(settings["ModeFlagsBG"].value<QColor>() != ui.modeFlagsBG->color()) return true;
+  if(settings["UrlFG"].value<QColor>() != ui.urlFG->color()) return true;
+  if(settings["UrlBG"].value<QColor>() != ui.urlBG->color()) return true;
+
+  if(settings["Color0"].value<QColor>() != ui.color0->color()) return true;
+  if(settings["Color1"].value<QColor>() != ui.color1->color()) return true;
+  if(settings["Color2"].value<QColor>() != ui.color2->color()) return true;
+  if(settings["Color3"].value<QColor>() != ui.color3->color()) return true;
+  if(settings["Color4"].value<QColor>() != ui.color4->color()) return true;
+  if(settings["Color5"].value<QColor>() != ui.color5->color()) return true;
+  if(settings["Color6"].value<QColor>() != ui.color6->color()) return true;
+  if(settings["Color7"].value<QColor>() != ui.color7->color()) return true;
+  if(settings["Color8"].value<QColor>() != ui.color8->color()) return true;
+  if(settings["Color9"].value<QColor>() != ui.color9->color()) return true;
+  if(settings["Color10"].value<QColor>() != ui.color10->color()) return true;
+  if(settings["Color11"].value<QColor>() != ui.color11->color()) return true;
+  if(settings["Color12"].value<QColor>() != ui.color12->color()) return true;
+  if(settings["Color13"].value<QColor>() != ui.color13->color()) return true;
+  if(settings["Color14"].value<QColor>() != ui.color14->color()) return true;
+  if(settings["Color15"].value<QColor>() != ui.color15->color()) return true;
+
+  return false;
+}
+
+void ColorSettingsPage::chooseColor(QWidget *widget) {
+  ColorButton *button = qobject_cast<ColorButton *>(widget);
+  Q_ASSERT(button);
+  QColor color = QColorDialog::getColor(button->color(), this);
+  if(color.isValid()) {
+    button->setColor(color);
+  }
+  widgetHasChanged();
+  bufferviewPreview();
+  chatviewPreview();
+}
+
+void ColorSettingsPage::chatviewPreview() {
+  //TODO: update chatviewPreview
+}
+
+void ColorSettingsPage::bufferviewPreview() {
+  ui.bufferviewPreview->clear();
+  ui.bufferviewPreview->setColumnCount(1);
+  ui.bufferviewPreview->setHeaderLabels(QStringList("Buffers"));
+
+  QTreeWidgetItem *topLevelItem = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("network")));
+  ui.bufferviewPreview->insertTopLevelItem(0, topLevelItem);
+
+  QList<QTreeWidgetItem *> items;
+  items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("Status Buffer"))));
+
+  QTreeWidgetItem *inactive = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#inactive channel")));
+  items.append(inactive);
+  inactive->setForeground(0, QBrush(ui.inactiveActivity->color()));
+
+  QTreeWidgetItem *noActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with no activity")));
+  items.append(noActivity);
+  noActivity->setForeground(0, QBrush(ui.noActivity->color()));
+
+  QTreeWidgetItem *highlightActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with highlight")));
+  items.append(highlightActivity);
+  highlightActivity->setForeground(0, QBrush(ui.highlightActivity->color()));
+
+  QTreeWidgetItem *newMessageActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with new message")));
+  items.append(newMessageActivity);
+  newMessageActivity->setForeground(0, QBrush(ui.newMessageActivity->color()));
+
+  QTreeWidgetItem *otherActivity = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("#channel with other activity")));
+  items.append(otherActivity);
+  otherActivity->setForeground(0, QBrush(ui.otherActivity->color()));
+
+  topLevelItem->insertChildren(0, items);
+  ui.bufferviewPreview->expandItem(topLevelItem);
+}
+
diff --git a/src/qtui/settingspages/colorsettingspage.h b/src/qtui/settingspages/colorsettingspage.h
new file mode 100644 (file)
index 0000000..7e7aa42
--- /dev/null
@@ -0,0 +1,59 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef _COLORSETTINGSPAGE_H_
+#define _COLORSETTINGSPAGE_H_
+
+#include <QHash>
+
+#include "settingspage.h"
+#include "ui_colorsettingspage.h"
+
+class QSignalMapper;
+class ColorButton;
+
+class ColorSettingsPage : public SettingsPage {
+  Q_OBJECT
+
+  public:
+    ColorSettingsPage(QWidget *parent = 0);
+
+    bool hasDefaults() const;
+
+  public slots:
+    void save();
+    void load();
+    void defaults();
+
+  private slots:
+    void widgetHasChanged();
+    void chooseColor(QWidget *button);
+
+  private:
+    Ui::ColorSettingsPage ui;
+    QHash<QString, QVariant> settings;
+    QSignalMapper *mapper;
+
+    bool testHasChanged();
+    void chatviewPreview();
+    void bufferviewPreview();
+};
+
+#endif
diff --git a/src/qtui/settingspages/colorsettingspage.ui b/src/qtui/settingspages/colorsettingspage.ui
new file mode 100644 (file)
index 0000000..cec8cd8
--- /dev/null
@@ -0,0 +1,939 @@
+<ui version="4.0" >
+ <class>ColorSettingsPage</class>
+ <widget class="QWidget" name="ColorSettingsPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>448</width>
+    <height>532</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Maximum" hsizetype="Maximum" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <item>
+    <widget class="QTabWidget" name="tabWidget" >
+     <property name="currentIndex" >
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="Seite" >
+      <attribute name="title" >
+       <string>Bufferview</string>
+      </attribute>
+      <layout class="QGridLayout" >
+       <item row="0" column="0" >
+        <widget class="QGroupBox" name="groupBox_6" >
+         <property name="title" >
+          <string>Activities:</string>
+         </property>
+         <layout class="QGridLayout" >
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label_42" >
+            <property name="text" >
+             <string>Inactive:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="ColorButton" name="inactiveActivity" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="label_43" >
+            <property name="text" >
+             <string>No Activity:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="ColorButton" name="noActivity" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" >
+           <widget class="QLabel" name="label_39" >
+            <property name="text" >
+             <string>Highlight:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" >
+           <widget class="ColorButton" name="highlightActivity" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" >
+           <widget class="QLabel" name="label_40" >
+            <property name="text" >
+             <string>New Message:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1" >
+           <widget class="ColorButton" name="newMessageActivity" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0" >
+           <widget class="QLabel" name="label_41" >
+            <property name="text" >
+             <string>Other Activity:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1" >
+           <widget class="ColorButton" name="otherActivity" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0" >
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" >
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+        <widget class="QGroupBox" name="groupBox_7" >
+         <property name="title" >
+          <string>Preview:</string>
+         </property>
+         <layout class="QHBoxLayout" >
+          <item>
+           <widget class="QTreeWidget" name="bufferviewPreview" >
+            <column>
+             <property name="text" >
+              <string>1</string>
+             </property>
+            </column>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="chatview" >
+      <attribute name="title" >
+       <string>Chatview</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QTabWidget" name="tabWidget_2" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Maximum" hsizetype="Expanding" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="currentIndex" >
+          <number>0</number>
+         </property>
+         <widget class="QWidget" name="tab" >
+          <attribute name="title" >
+           <string>Server Activity</string>
+          </attribute>
+          <layout class="QGridLayout" >
+           <item row="1" column="0" >
+            <widget class="QLabel" name="label_20" >
+             <property name="text" >
+              <string>Error Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1" >
+            <widget class="ColorButton" name="errorMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="2" >
+            <widget class="ColorButton" name="errorMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0" >
+            <widget class="QLabel" name="label_18" >
+             <property name="text" >
+              <string>Notice Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="1" >
+            <widget class="ColorButton" name="noticeMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="2" >
+            <widget class="ColorButton" name="noticeMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="0" >
+            <widget class="QLabel" name="label_17" >
+             <property name="text" >
+              <string>Plain Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="1" >
+            <widget class="ColorButton" name="plainMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="2" >
+            <widget class="ColorButton" name="plainMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="0" >
+            <widget class="QLabel" name="label_19" >
+             <property name="text" >
+              <string>Server Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="1" >
+            <widget class="ColorButton" name="serverMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="2" >
+            <widget class="ColorButton" name="serverMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1" >
+            <widget class="QLabel" name="label_44" >
+             <property name="text" >
+              <string>Foreground</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2" >
+            <widget class="QLabel" name="label_45" >
+             <property name="text" >
+              <string>Background</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="1" >
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Vertical</enum>
+             </property>
+             <property name="sizeHint" >
+              <size>
+               <width>20</width>
+               <height>40</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="tab_2" >
+          <attribute name="title" >
+           <string>User Activity</string>
+          </attribute>
+          <layout class="QGridLayout" >
+           <item row="0" column="1" >
+            <widget class="QLabel" name="label_35" >
+             <property name="text" >
+              <string>Foreground</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2" >
+            <widget class="QLabel" name="label_36" >
+             <property name="text" >
+              <string>Background</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+            <widget class="QLabel" name="label_27" >
+             <property name="text" >
+              <string>Action Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1" >
+            <widget class="ColorButton" name="actionMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="2" >
+            <widget class="ColorButton" name="actionMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0" >
+            <widget class="QLabel" name="label_21" >
+             <property name="text" >
+              <string>Join Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="1" >
+            <widget class="ColorButton" name="joinMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="2" >
+            <widget class="ColorButton" name="joinMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="0" >
+            <widget class="QLabel" name="label_25" >
+             <property name="text" >
+              <string>Kick Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="1" >
+            <widget class="ColorButton" name="kickMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="2" >
+            <widget class="ColorButton" name="kickMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="0" >
+            <widget class="QLabel" name="label_26" >
+             <property name="text" >
+              <string>Mode Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="1" >
+            <widget class="ColorButton" name="modeMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="2" >
+            <widget class="ColorButton" name="modeMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="0" >
+            <widget class="QLabel" name="label_22" >
+             <property name="text" >
+              <string>Part Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="1" >
+            <widget class="ColorButton" name="partMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="2" >
+            <widget class="ColorButton" name="partMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="0" >
+            <widget class="QLabel" name="label_23" >
+             <property name="text" >
+              <string>Quit Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="1" >
+            <widget class="ColorButton" name="quitMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="2" >
+            <widget class="ColorButton" name="quitMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="0" >
+            <widget class="QLabel" name="label_24" >
+             <property name="text" >
+              <string>Rename Message:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="1" >
+            <widget class="ColorButton" name="renameMessageFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="2" >
+            <widget class="ColorButton" name="renameMessageBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="Seite_2" >
+          <attribute name="title" >
+           <string>Message</string>
+          </attribute>
+          <layout class="QGridLayout" >
+           <item row="0" column="1" >
+            <widget class="QLabel" name="label_37" >
+             <property name="text" >
+              <string>Foreground</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2" >
+            <widget class="QLabel" name="label_38" >
+             <property name="text" >
+              <string>Background</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+            <widget class="QLabel" name="label_29" >
+             <property name="text" >
+              <string>Timestamp:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1" >
+            <widget class="ColorButton" name="timestampFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="2" >
+            <widget class="ColorButton" name="timestampBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0" >
+            <widget class="QLabel" name="label_28" >
+             <property name="text" >
+              <string>Sender:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="1" >
+            <widget class="ColorButton" name="senderFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="2" >
+            <widget class="ColorButton" name="senderBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="0" >
+            <widget class="QLabel" name="label_30" >
+             <property name="text" >
+              <string>Nick:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="1" >
+            <widget class="ColorButton" name="nickFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="2" >
+            <widget class="ColorButton" name="nickBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="0" >
+            <widget class="QLabel" name="label_31" >
+             <property name="text" >
+              <string>Hostmask:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="1" >
+            <widget class="ColorButton" name="hostmaskFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="2" >
+            <widget class="ColorButton" name="hostmaskBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="0" >
+            <widget class="QLabel" name="label_32" >
+             <property name="text" >
+              <string>Channelname:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="1" >
+            <widget class="ColorButton" name="channelnameFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="5" column="2" >
+            <widget class="ColorButton" name="channelnameBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="0" >
+            <widget class="QLabel" name="label_33" >
+             <property name="text" >
+              <string>Mode flags:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="1" >
+            <widget class="ColorButton" name="modeFlagsFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="2" >
+            <widget class="ColorButton" name="modeFlagsBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="0" >
+            <widget class="QLabel" name="label_34" >
+             <property name="text" >
+              <string>Url:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="1" >
+            <widget class="ColorButton" name="urlFG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="7" column="2" >
+            <widget class="ColorButton" name="urlBG" >
+             <property name="text" >
+              <string/>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="groupBox_5" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="title" >
+          <string>Preview:</string>
+         </property>
+         <layout class="QHBoxLayout" >
+          <item>
+           <widget class="QWidget" native="1" name="chatviewPreview" />
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="Mirc" >
+      <attribute name="title" >
+       <string>Mirc Color Codes</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QGroupBox" name="groupBox_3" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Maximum" hsizetype="Expanding" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="title" >
+          <string>Color Codes</string>
+         </property>
+         <layout class="QGridLayout" >
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label_46" >
+            <property name="text" >
+             <string>Color 0:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="ColorButton" name="color0" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4" >
+           <widget class="ColorButton" name="color8" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="label_47" >
+            <property name="text" >
+             <string>Color 1:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="ColorButton" name="color1" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4" >
+           <widget class="ColorButton" name="color9" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" >
+           <widget class="QLabel" name="label_49" >
+            <property name="text" >
+             <string>Color 2:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" >
+           <widget class="ColorButton" name="color2" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="4" >
+           <widget class="ColorButton" name="color10" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" >
+           <widget class="QLabel" name="label_48" >
+            <property name="text" >
+             <string>Color 3:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1" >
+           <widget class="ColorButton" name="color3" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4" >
+           <widget class="ColorButton" name="color11" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0" >
+           <widget class="QLabel" name="label_50" >
+            <property name="text" >
+             <string>Color 4:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1" >
+           <widget class="ColorButton" name="color4" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="4" >
+           <widget class="ColorButton" name="color12" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0" >
+           <widget class="QLabel" name="label_53" >
+            <property name="text" >
+             <string>Color 5:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1" >
+           <widget class="ColorButton" name="color5" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="4" >
+           <widget class="ColorButton" name="color13" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="0" >
+           <widget class="QLabel" name="label_51" >
+            <property name="text" >
+             <string>Color 6:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="1" >
+           <widget class="ColorButton" name="color6" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="4" >
+           <widget class="ColorButton" name="color14" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="0" >
+           <widget class="QLabel" name="label_52" >
+            <property name="text" >
+             <string>Color 7:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="1" >
+           <widget class="ColorButton" name="color7" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="4" >
+           <widget class="ColorButton" name="color15" >
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3" >
+           <widget class="QLabel" name="label_54" >
+            <property name="text" >
+             <string>Color 8:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="3" >
+           <widget class="QLabel" name="label_55" >
+            <property name="text" >
+             <string>Color 14:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="3" >
+           <widget class="QLabel" name="label_56" >
+            <property name="text" >
+             <string>Color 15:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="3" >
+           <widget class="QLabel" name="label_57" >
+            <property name="text" >
+             <string>Color 13:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="3" >
+           <widget class="QLabel" name="label_58" >
+            <property name="text" >
+             <string>Color 12:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="3" >
+           <widget class="QLabel" name="label_59" >
+            <property name="text" >
+             <string>Color 11:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3" >
+           <widget class="QLabel" name="label_60" >
+            <property name="text" >
+             <string>Color 10:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3" >
+           <widget class="QLabel" name="label_61" >
+            <property name="text" >
+             <string>Color 9:</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>140</width>
+           <height>291</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ColorButton</class>
+   <extends>QPushButton</extends>
+   <header>colorbutton.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index 5341511..aa793d7 100644 (file)
@@ -27,7 +27,14 @@ GeneralSettingsPage::GeneralSettingsPage(QWidget *parent)
   : SettingsPage(tr("Behaviour"), tr("General"), parent) {
   ui.setupUi(this);
 
+#ifdef Q_WS_MAC
+  ui.useSystemTrayIcon->hide();
+#else
+  ui.macOnly->hide();
+#endif
+
   connect(ui.useSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+  connect(ui.showSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.minimizeOnMinimize, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
 
@@ -43,6 +50,7 @@ bool GeneralSettingsPage::hasDefaults() const {
 void GeneralSettingsPage::defaults() {
   qDebug() << "defaults in generalsettingspage";
   ui.useSystemTrayIcon->setChecked(true);
+  ui.showSystemTrayIcon->setChecked(true);
   ui.minimizeOnMinimize->setChecked(false);
   ui.minimizeOnClose->setChecked(false);
 
@@ -55,22 +63,23 @@ void GeneralSettingsPage::defaults() {
 
 void GeneralSettingsPage::load() {
   QtUiSettings s;
-  settings["UseSystemTrayIcon"] = s.value("UseSystemTrayIcon");
+  settings["UseSystemTrayIcon"] = s.value("UseSystemTrayIcon", QVariant(true));
   ui.useSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool());
+  ui.showSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool());
 
-  settings["MinimizeOnMinimize"] = s.value("MinimizeOnMinimize");
+  settings["MinimizeOnMinimize"] = s.value("MinimizeOnMinimize", QVariant(false));
   ui.minimizeOnMinimize->setChecked(settings["MinimizeOnMinimize"].toBool());
 
-  settings["MinimizeOnClose"] = s.value("MinimizeOnClose");
+  settings["MinimizeOnClose"] = s.value("MinimizeOnClose", QVariant(false));
   ui.minimizeOnClose->setChecked(settings["MinimizeOnClose"].toBool());
 
-  settings["UserMessagesInStatusBuffer"] = s.value("UserMessagesInStatusBuffer");
+  settings["UserMessagesInStatusBuffer"] = s.value("UserMessagesInStatusBuffer", QVariant(true));
   ui.userMessagesInStatusBuffer->setChecked(settings["UserMessagesInStatusBuffer"].toBool());
 
-  settings["UserMessagesInQueryBuffer"] = s.value("UserMessagesInQueryBuffer");
+  settings["UserMessagesInQueryBuffer"] = s.value("UserMessagesInQueryBuffer", QVariant(false));
   ui.userMessagesInQueryBuffer->setChecked(settings["UserMessagesInQueryBuffer"].toBool());
 
-  settings["UserMessagesInCurrentBuffer"] = s.value("UserMessagesInCurrentBuffer");
+  settings["UserMessagesInCurrentBuffer"] = s.value("UserMessagesInCurrentBuffer", QVariant(false));
   ui.userMessagesInCurrentBuffer->setChecked(settings["UserMessagesInCurrentBuffer"].toBool());
 
   setChangedState(false);
@@ -86,6 +95,7 @@ void GeneralSettingsPage::save() {
   s.setValue("UserMessagesInQueryBuffer", ui.userMessagesInQueryBuffer->isChecked());
   s.setValue("UserMessagesInCurrentBuffer", ui.userMessagesInCurrentBuffer->isChecked());
 
+  load();
   setChangedState(false);
 }
 
@@ -95,12 +105,12 @@ void GeneralSettingsPage::widgetHasChanged() {
 }
 
 bool GeneralSettingsPage::testHasChanged() {
-  if(settings["UseSystemTrayIcon"] != ui.useSystemTrayIcon->isChecked()) return true; 
-  if(settings["MinimizeOnMinimize"] != ui.minimizeOnMinimize->isChecked()) return true;
-  if(settings["MinimizeOnClose"] != ui.minimizeOnClose->isChecked()) return true;
-  if(settings["UserMessagesInStatusBuffer"] != ui.userMessagesInStatusBuffer->isChecked()) return true;
-  if(settings["UserMessagesInQueryBuffer"] != ui.userMessagesInQueryBuffer->isChecked()) return true;
-  if(settings["UserMessagesInCurrentBuffer"] != ui.userMessagesInCurrentBuffer->isChecked()) return true;
+  if(settings["UseSystemTrayIcon"].toBool() != ui.useSystemTrayIcon->isChecked()) return true;
+  if(settings["MinimizeOnMinimize"].toBool() != ui.minimizeOnMinimize->isChecked()) return true;
+  if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true;
+  if(settings["UserMessagesInStatusBuffer"].toBool() != ui.userMessagesInStatusBuffer->isChecked()) return true;
+  if(settings["UserMessagesInQueryBuffer"].toBool() != ui.userMessagesInQueryBuffer->isChecked()) return true;
+  if(settings["UserMessagesInCurrentBuffer"].toBool() != ui.userMessagesInCurrentBuffer->isChecked()) return true;
 
   return false;
 }
index 340faaf..359401c 100644 (file)
      </layout>
     </widget>
    </item>
+   <item>
+    <widget class="QGroupBox" name="macOnly" >
+     <property name="title" >
+      <string>Tray icon:</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <item>
+       <widget class="QCheckBox" name="showSystemTrayIcon" >
+        <property name="text" >
+         <string>Show system tray icon</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
    <item>
     <widget class="QGroupBox" name="groupBox" >
      <property name="title" >
@@ -47,6 +66,9 @@
      <layout class="QVBoxLayout" >
       <item>
        <widget class="QCheckBox" name="userMessagesInStatusBuffer" >
+        <property name="enabled" >
+         <bool>false</bool>
+        </property>
         <property name="text" >
          <string>in status buffer</string>
         </property>
@@ -57,6 +79,9 @@
       </item>
       <item>
        <widget class="QCheckBox" name="userMessagesInQueryBuffer" >
+        <property name="enabled" >
+         <bool>false</bool>
+        </property>
         <property name="text" >
          <string> in query buffer (if exists)</string>
         </property>
@@ -64,6 +89,9 @@
       </item>
       <item>
        <widget class="QCheckBox" name="userMessagesInCurrentBuffer" >
+        <property name="enabled" >
+         <bool>false</bool>
+        </property>
         <property name="text" >
          <string>in current buffer</string>
         </property>
      </property>
      <property name="sizeHint" >
       <size>
-       <width>20</width>
-       <height>40</height>
+       <width>457</width>
+       <height>51</height>
       </size>
      </property>
     </spacer>
   </layout>
  </widget>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>showSystemTrayIcon</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>useSystemTrayIcon</receiver>
+   <slot>setChecked(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>237</x>
+     <y>139</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>237</x>
+     <y>49</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useSystemTrayIcon</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>showSystemTrayIcon</receiver>
+   <slot>setChecked(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>237</x>
+     <y>49</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>237</x>
+     <y>139</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
index 84cec57..82256f9 100644 (file)
@@ -1,6 +1,6 @@
 # Putting $FOO in SETTINGSPAGES automatically includes
 # $FOOsettingspage.cpp, $FOOsettingspage.h and $FOOsettingspage.ui
-SETTINGSPAGES = fonts identities networks general
+SETTINGSPAGES = color fonts general identities networks 
 
 # Specify additional files (e.g. for subdialogs) here!
 SP_SRCS =
diff --git a/src/uisupport/colorbutton.cpp b/src/uisupport/colorbutton.cpp
new file mode 100644 (file)
index 0000000..61e6c14
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "colorbutton.h"
+
+#include <QPainter>
+#include <QDebug>
+#include <QPaintEvent>
+#include <QApplication>
+#include <QStyle>
+#include <QStyleOptionFrame>
+
+ColorButton::ColorButton(QWidget *parent) :
+    QPushButton(parent),
+    _color(QColor()) //default is white; 
+    {
+
+}
+
+void ColorButton::setColor(const QColor &color) {
+  _color = color;
+  update();
+}
+
+QColor ColorButton::color() const {
+  return _color;
+}
+
+void ColorButton::paintEvent(QPaintEvent *event) {
+  QPushButton::paintEvent(event);
+  QPainter painter(this);
+  int border = QApplication::style()->pixelMetric(QStyle::PM_ButtonMargin);
+  painter.fillRect(rect().adjusted(border+1, border+1, -border-1, -border-1), QBrush(_color));
+  QStyleOptionFrame option;
+  option.state = QStyle::State_Sunken;
+  option.rect = rect().adjusted(border, border, -border, -border);
+  //TODO: setBackground instead of the fillRect()
+  //painter.setBackground(_color);
+  //painter.setBackgroundMode(Qt::OpaqueMode);
+  //painter.fillRect(QApplication::style()->subElementRect(QStyle::SE_FrameContents, &option), QBrush(_color));
+  //qDebug() << option << QApplication::style()->subElementRect(QStyle::SE_PushButtonContents, &option);
+  QApplication::style()->drawPrimitive(QStyle::PE_Frame, &option, &painter);
+  //painter.fillRect(QApplication::style()->subElementRect(QStyle::SE_FrameContents, &option), QBrush(_color));
+  //border += QStyle::PM_DefaultFrameWidth;
+  //painter.fillRect(rect().adjusted(border, border, -border, -border), QBrush(_color));
+}
diff --git a/src/uisupport/colorbutton.h b/src/uisupport/colorbutton.h
new file mode 100644 (file)
index 0000000..8375858
--- /dev/null
@@ -0,0 +1,41 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef _COLORBUTTON_H_
+#define _COLORBUTTON_H_
+
+#include <QPushButton>
+
+class ColorButton : public QPushButton {
+  Q_OBJECT
+
+  public:
+    ColorButton(QWidget *parent = 0);
+    void setColor(const QColor &color);
+    QColor color() const;
+
+  protected:
+    void paintEvent(QPaintEvent *event);
+
+  private:
+    QColor _color;
+};
+
+#endif
index 1a97514..3153ba8 100644 (file)
@@ -81,6 +81,8 @@ BufferInfo NickView::bufferInfoFromModelIndex(const QModelIndex & index) {
 
 void NickView::showContextMenu(const QPoint & pos ) {
   QModelIndex index = indexAt(pos);
+  if(index.data(NetworkModel::ItemTypeRole) != NetworkModel::IrcUserItemType) return;
+
   QString nick = nickFromModelIndex(index);
 
   QMenu nickContextMenu(this);
@@ -98,8 +100,10 @@ void NickView::showContextMenu(const QPoint & pos ) {
   QAction *deVoiceAction = modeMenu->addAction(tr("Devoice %1").arg(nick));
 
   QMenu *kickBanMenu = nickContextMenu.addMenu(tr("Kick/Ban"));
+  //TODO: add kick message from network identity (kick reason)
   QAction *kickAction = kickBanMenu->addAction(tr("Kick %1").arg(nick));
   QAction *kickBanAction = kickBanMenu->addAction(tr("Kickban %1").arg(nick));
+  kickBanMenu->setEnabled(false);
   QAction *ignoreAction = nickContextMenu.addAction(tr("Ignore"));
   ignoreAction->setEnabled(false);
 
index 984822e..6e68378 100644 (file)
@@ -1,8 +1,8 @@
 DEPMOD = common client
 QT_MOD = core gui network
 
-SRCS += bufferview.cpp bufferviewfilter.cpp nickviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
-HDRS += bufferview.h bufferviewfilter.h nickviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
+SRCS += bufferview.cpp bufferviewfilter.cpp colorbutton.cpp nickviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
+HDRS += bufferview.h bufferviewfilter.h colorbutton.h nickviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
 
 FORMNAMES = 
 
index 2a71fa9..a7cabe9 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-14";
-  quasselBuild = 520;
+  quasselBuild = 522;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 519;