X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fmessagefilter.cpp;h=170067205738be7e932bd262f7a1e6a8db6bfb1d;hb=f091c08e33f4cc2ed63afebab0ae90f2dad55139;hp=e375b2e7a192d4b78235a370666b21555e9bb14b;hpb=e528271e366acaa788b420bdfab8e1dd03b43e12;p=quassel.git diff --git a/src/client/messagefilter.cpp b/src/client/messagefilter.cpp index e375b2e7..17006720 100644 --- a/src/client/messagefilter.cpp +++ b/src/client/messagefilter.cpp @@ -20,32 +20,38 @@ #include "messagefilter.h" -MessageFilter::MessageFilter(QAbstractItemModel *source, QObject *parent) : QSortFilterProxyModel(parent) { +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(_bufferList.isEmpty()) return "*"; - QString idstr; - QStringList bufids; - foreach(BufferId id, _bufferList) bufids << QString::number(id.toInt()); - bufids.sort(); - foreach(QString id, bufids) idstr += id + '|'; - idstr.chop(1); - return idstr; + 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); + return _validBuffers.contains(id); }