Style NickView via UiStyle
[quassel.git] / src / uisupport / nickview.cpp
index 1a1c4bb..e365474 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "nickview.h"
 
+#include <QApplication>
 #include <QHeaderView>
 #include <QScrollBar>
 #include <QDebug>
@@ -43,11 +44,6 @@ public:
 NickView::NickView(QWidget *parent)
   : QTreeView(parent)
 {
-  QAbstractItemDelegate *oldDelegate = itemDelegate();
-  NickViewDelegate *newDelegate = new NickViewDelegate(this);
-  setItemDelegate(newDelegate);
-  delete oldDelegate;
-
   setIndentation(10);
   setAnimated(true);
   header()->hide();
@@ -66,6 +62,10 @@ NickView::NickView(QWidget *parent)
   // afaik this is better on Mac and Windows
   connect(this, SIGNAL(activated(QModelIndex)), SLOT(startQuery(QModelIndex)));
 #endif
+
+  UiStyleSettings s("QtUiStyle/Fonts"); // li'l dirty here, but fonts are stored in QtUiStyle :/
+  s.notify("BufferView", this, SLOT(setCustomFont(QVariant))); // yes, we share the BufferView settings
+  setCustomFont(s.value("BufferView", QFont()));
 }
 
 void NickView::init() {
@@ -87,6 +87,13 @@ void NickView::setModel(QAbstractItemModel *model_) {
   init();
 }
 
+void NickView::setCustomFont(const QVariant &v) {
+  QFont font = v.value<QFont>();
+  if(font.family().isEmpty())
+    font = QApplication::font();
+  setFont(font);
+}
+
 void NickView::rowsInserted(const QModelIndex &parent, int start, int end) {
   QTreeView::rowsInserted(parent, start, end);
   if(model()->data(parent, NetworkModel::ItemTypeRole) == NetworkModel::UserCategoryItemType && !isExpanded(parent)) {
@@ -104,9 +111,10 @@ QModelIndexList NickView::selectedIndexes() const {
   QModelIndexList indexList = QTreeView::selectedIndexes();
 
   // make sure the item we clicked on is first
-  Q_ASSERT(indexList.contains(currentIndex()));
-  indexList.removeAll(currentIndex());
-  indexList.prepend(currentIndex());
+  if(indexList.contains(currentIndex())) {
+    indexList.removeAll(currentIndex());
+    indexList.prepend(currentIndex());
+  }
 
   return indexList;
 }
@@ -162,28 +170,3 @@ void NickView::customEvent(QEvent *event) {
   }
   event->accept();
 }
-
-
-// ****************************************
-//  NickViewDelgate
-// ****************************************
-NickViewDelegate::NickViewDelegate(QObject *parent)
-  : QStyledItemDelegate(parent)
-{
-  UiSettings s("QtUiStyle/Colors");
-  _FgOnlineStatus = s.value("onlineStatusFG", QVariant(QColor(Qt::black))).value<QColor>();
-  _FgAwayStatus = s.value("awayStatusFG", QVariant(QColor(Qt::gray))).value<QColor>();
-}
-
-void NickViewDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const {
-  QStyledItemDelegate::initStyleOption(option, index);
-
-  if(!index.isValid())
-    return;
-
-  QColor fgColor = _FgOnlineStatus;
-  if(!index.data(NetworkModel::ItemActiveRole).toBool())
-    fgColor = _FgAwayStatus;
-
-  option->palette.setColor(QPalette::Text, fgColor);
-}