From: Marcus Eggenberger Date: Sun, 1 Feb 2009 16:42:23 +0000 (+0100) Subject: NickView gets it's own Delegate too and uses only QPalette for coloring X-Git-Tag: 0.4.0~154 X-Git-Url: https://git.quassel-irc.org/?a=commitdiff_plain;h=a5aa42bfbd30790c2063cc88b5949519b5b0c4a4;p=quassel.git NickView gets it's own Delegate too and uses only QPalette for coloring --- diff --git a/src/uisupport/nickview.cpp b/src/uisupport/nickview.cpp index d785f921..dd7d1af5 100644 --- a/src/uisupport/nickview.cpp +++ b/src/uisupport/nickview.cpp @@ -18,6 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "nickview.h" + #include #include #include @@ -25,7 +27,6 @@ #include "buffermodel.h" #include "client.h" -#include "nickview.h" #include "nickviewfilter.h" #include "networkmodel.h" #include "quasselui.h" @@ -39,6 +40,12 @@ 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(); @@ -143,3 +150,19 @@ void NickView::customEvent(QEvent *event) { } event->accept(); } + + +// **************************************** +// NickViewDelgate +// **************************************** +NickViewDelegate::NickViewDelegate(QObject *parent) + : QStyledItemDelegate(parent) +{ +} + +void NickViewDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const { + QStyledItemDelegate::initStyleOption(option, index); + + if(!index.data(NetworkModel::ItemActiveRole).toBool()) + option->palette.setColor(QPalette::Text, option->palette.color(QPalette::Dark)); +} diff --git a/src/uisupport/nickview.h b/src/uisupport/nickview.h index c88a9ccd..a40b6d74 100644 --- a/src/uisupport/nickview.h +++ b/src/uisupport/nickview.h @@ -48,4 +48,19 @@ private: void executeCommand(const BufferInfo & bufferInfo, const QString & command); }; +// ****************************** +// NickViewDelgate +// ****************************** +#include + +class NickViewDelegate : public QStyledItemDelegate { + Q_OBJECT + +public: + NickViewDelegate(QObject *parent = 0); + +protected: + virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const; +}; + #endif diff --git a/src/uisupport/nickviewfilter.cpp b/src/uisupport/nickviewfilter.cpp index d7dc6fd3..5fa8e1fa 100644 --- a/src/uisupport/nickviewfilter.cpp +++ b/src/uisupport/nickviewfilter.cpp @@ -19,8 +19,8 @@ ***************************************************************************/ #include "nickviewfilter.h" + #include "networkmodel.h" -#include "uisettings.h" /****************************************************************************************** * NickViewFilter @@ -33,30 +33,8 @@ NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent) setDynamicSortFilter(true); setSortCaseSensitivity(Qt::CaseInsensitive); setSortRole(TreeModel::SortRole); - loadColors(); -} - -void NickViewFilter::loadColors() { - UiSettings s("QtUiStyle/Colors"); - _FgOnlineStatus = s.value("onlineStatusFG", QVariant(QColor(Qt::black))).value(); - _FgAwayStatus = s.value("awayStatusFG", QVariant(QColor(Qt::gray))).value(); - // FIXME: use the style interface instead of qsettings -} - -QVariant NickViewFilter::data(const QModelIndex &index, int role) const { - if(role == Qt::ForegroundRole) - return foreground(index); - else - return QSortFilterProxyModel::data(index, role); -} - -QVariant NickViewFilter::foreground(const QModelIndex &index) const { - if(!index.data(NetworkModel::ItemActiveRole).toBool()) - return _FgAwayStatus; - return _FgOnlineStatus; } - bool NickViewFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { // root node, networkindexes, the bufferindex of the buffer this filter is active for and it's childs are accepted if(!source_parent.isValid()) diff --git a/src/uisupport/nickviewfilter.h b/src/uisupport/nickviewfilter.h index 5868c739..70809d3b 100644 --- a/src/uisupport/nickviewfilter.h +++ b/src/uisupport/nickviewfilter.h @@ -21,8 +21,8 @@ #ifndef NICKVIEWFILTER_H #define NICKVIEWFILTER_H -#include #include + #include "types.h" class NetworkModel; @@ -33,16 +33,12 @@ class NickViewFilter : public QSortFilterProxyModel { public: NickViewFilter(const BufferId &bufferId, NetworkModel *parent = 0); - QVariant data(const QModelIndex &index, int role) const; - QVariant foreground(const QModelIndex &index) const; protected: virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; private: BufferId _bufferId; - QColor _FgOnlineStatus; - QColor _FgAwayStatus; void loadColors(); };