X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=bae2522d88a1bee5518f801747bd3e2505fc2231;hp=4e7af886749a750f1454e73f95fded3594947da7;hb=6f78f2dd9544e3677307152ae93dbca5322ff0fd;hpb=d28b9ec38b6ea0bc473200fc2f1e65abd1b56bd6 diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 4e7af886..bae2522d 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -24,28 +24,18 @@ #include "networkmodel.h" +#include "uisettings.h" + /***************************************** * The Filter for the Tree View *****************************************/ -BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, const Modes &filtermode, const QList &nets) +BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, const Modes &filtermode, const QList &nets) : QSortFilterProxyModel(model), mode(filtermode), - networks(QSet::fromList(nets)) + networks(QSet::fromList(nets)) { setSourceModel(model); setSortCaseSensitivity(Qt::CaseInsensitive); - - // FIXME - // ok the following basically sucks. therfore it's commented out. Justice served. - // a better solution would use dataChanged() - - // I have this feeling that this resulted in a fuckup once... no clue though right now and invalidateFilter isn't a slot -.- - //connect(model, SIGNAL(invalidateFilter()), this, SLOT(invalidate())); - // connect(model, SIGNAL(invalidateFilter()), this, SLOT(invalidateFilter_())); -} - -void BufferViewFilter::invalidateFilter_() { - QSortFilterProxyModel::invalidateFilter(); } Qt::ItemFlags BufferViewFilter::flags(const QModelIndex &index) const { @@ -113,13 +103,13 @@ void BufferViewFilter::removeBuffer(const QModelIndex &index) { bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) const { - BufferItem::Type bufferType = (BufferItem::Type) source_bufferIndex.data(NetworkModel::BufferTypeRole).toInt(); + BufferInfo::Type bufferType = (BufferInfo::Type) source_bufferIndex.data(NetworkModel::BufferTypeRole).toInt(); - if((mode & NoChannels) && bufferType == BufferItem::ChannelType) + if((mode & NoChannels) && bufferType == BufferInfo::ChannelBuffer) return false; - if((mode & NoQueries) && bufferType == BufferItem::QueryType) + if((mode & NoQueries) && bufferType == BufferInfo::QueryBuffer) return false; - if((mode & NoServers) && bufferType == BufferItem::StatusType) + if((mode & NoServers) && bufferType == BufferInfo::StatusBuffer) return false; // bool isActive = source_bufferIndex.data(NetworkModel::BufferActiveRole).toBool(); @@ -173,9 +163,27 @@ QVariant BufferViewFilter::data(const QModelIndex &index, int role) const { } QVariant BufferViewFilter::foreground(const QModelIndex &index) const { + UiSettings s("QtUi/Colors"); + QVariant inactiveActivity = s.value("inactiveActivity", QVariant(QColor(Qt::gray))); + QVariant noActivity = s.value("noActivity", QVariant(QColor(Qt::black))); + QVariant highlightActivity = s.value("highlightActivity", QVariant(QColor(Qt::magenta))); + QVariant newMessageActivity = s.value("newMessageActivity", QVariant(QColor(Qt::green))); + QVariant otherActivity = s.value("otherActivity", QVariant(QColor(Qt::darkGreen))); + if(!index.data(NetworkModel::ItemActiveRole).toBool()) - return QColor(Qt::gray); + return inactiveActivity.value(); + + Buffer::ActivityLevel activity = (Buffer::ActivityLevel)index.data(NetworkModel::BufferActivityRole).toInt(); + + if(activity & Buffer::Highlight) + return highlightActivity.value(); + if(activity & Buffer::NewMessage) + return newMessageActivity.value(); + if(activity & Buffer::OtherActivity) + return otherActivity.value(); + + return noActivity.value(); + + // FIXME:: make colors configurable; - // FIXME:: show colors depending on activity level - return QColor(Qt::black); }