X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fmessagefilter.cpp;h=c1253da8694da354308e7650247011fd0b8d2d0d;hp=0c35ee9ffff93ffd913276fecdc937eb0ec9699d;hb=0d49f7e83bd1055711e66aa880f3a0d62f7eefc9;hpb=fadb23192f41a04c6a8e16e69576c675a8c40c0a diff --git a/src/client/messagefilter.cpp b/src/client/messagefilter.cpp index 0c35ee9f..c1253da8 100644 --- a/src/client/messagefilter.cpp +++ b/src/client/messagefilter.cpp @@ -20,17 +20,41 @@ #include "messagefilter.h" +MessageFilter::MessageFilter(QAbstractItemModel *source, QObject *parent) + : QSortFilterProxyModel(parent) +{ + setSourceModel(source); +} + MessageFilter::MessageFilter(MessageModel *source, const QList &buffers, QObject *parent) : QSortFilterProxyModel(parent), - _bufferList(buffers) + _validBuffers(buffers.toSet()) { setSourceModel(source); +} + +QString MessageFilter::idString() const { + if(_validBuffers.isEmpty()) + return "*"; + QList bufferIds = _validBuffers.toList();; + qSort(bufferIds); + + QStringList bufferIdStrings; + foreach(BufferId id, bufferIds) + bufferIdStrings << QString::number(id.toInt()); + + return bufferIdStrings.join("|"); } bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { Q_UNUSED(sourceParent); - if(_bufferList.isEmpty()) return true; + if(_validBuffers.isEmpty()) + return true; + BufferId id = sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageModel::BufferIdRole).value(); - return _bufferList.contains(id); + if(!id.isValid()) { + return true; + } + return _validBuffers.contains(id); }