From: Manuel Nickschas Date: Mon, 18 Aug 2008 06:43:30 +0000 (+0200) Subject: Improve ChatMonitorFilter to use Message::Backlog rather than the timestamp X-Git-Tag: 0.3.0~27 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=cb1b16fce88b240c735b942aad44a61a1dd3f28d Improve ChatMonitorFilter to use Message::Backlog rather than the timestamp Also makes the ChatMonitor work correctly after reconnect. --- diff --git a/src/qtui/chatmonitorfilter.cpp b/src/qtui/chatmonitorfilter.cpp index ef68a9cd..1fbab84f 100644 --- a/src/qtui/chatmonitorfilter.cpp +++ b/src/qtui/chatmonitorfilter.cpp @@ -26,20 +26,22 @@ #include "networkmodel.h" ChatMonitorFilter::ChatMonitorFilter(MessageModel *model, QObject *parent) - : MessageFilter(model, QList(), parent), - _initTime(QDateTime::currentDateTime()) + : MessageFilter(model, QList(), parent) { } bool ChatMonitorFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { Q_UNUSED(sourceParent) - Message::Type type = (Message::Type)sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageModel::TypeRole).toInt(); + Message::Flags flags = (Message::Flags)sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageModel::FlagsRole).toInt(); - if(!((type & (Message::Plain | Message::Notice | Message::Action)) || flags & Message::Self)) + if(flags & Message::Backlog || flags & Message::Self) return false; - QDateTime msgTime = sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageModel::TimestampRole).toDateTime(); - return msgTime > _initTime; + Message::Type type = (Message::Type)sourceModel()->data(sourceModel()->index(sourceRow, 0), MessageModel::TypeRole).toInt(); + if(!(type & (Message::Plain | Message::Notice | Message::Action))) + return false; + + return true; } // override this to inject display of network and channel @@ -48,7 +50,7 @@ QVariant ChatMonitorFilter::data(const QModelIndex &index, int role) const { return MessageFilter::data(index, role); int showFields_ = showFields(); - + BufferId bufid = data(index, ChatLineModel::BufferIdRole).value(); if(!bufid.isValid()) { qDebug() << "ChatMonitorFilter::data(): chatline belongs to an invalid buffer!"; @@ -56,7 +58,7 @@ QVariant ChatMonitorFilter::data(const QModelIndex &index, int role) const { } QModelIndex source_index = mapToSource(index); - + QStringList fields; if(showFields_ & NetworkField) { fields << Client::networkModel()->networkName(bufid); diff --git a/src/qtui/chatmonitorfilter.h b/src/qtui/chatmonitorfilter.h index a27d3e5d..c1258b67 100644 --- a/src/qtui/chatmonitorfilter.h +++ b/src/qtui/chatmonitorfilter.h @@ -50,7 +50,6 @@ public: void removeShowField(int field); private: - QDateTime _initTime; void showFieldSettingsChanged(); };