From: Manuel Nickschas Date: Mon, 24 Aug 2009 22:03:58 +0000 (+0200) Subject: Decomplexify & reencapsulate X-Git-Tag: 0.5-rc1~26 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=934ff82a6554ea72ea449c561f53804dbafc20f0 Decomplexify & reencapsulate --- diff --git a/src/client/messagefilter.cpp b/src/client/messagefilter.cpp index 53ac5e1b..2044b745 100644 --- a/src/client/messagefilter.cpp +++ b/src/client/messagefilter.cpp @@ -121,7 +121,7 @@ QString MessageFilter::idString() const { bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { Q_UNUSED(sourceParent); QModelIndex sourceIdx = sourceModel()->index(sourceRow, 2); - Message::Type messageType = (Message::Type)sourceModel()->data(sourceIdx, MessageModel::TypeRole).toInt(); + Message::Type messageType = (Message::Type)sourceIdx.data(MessageModel::TypeRole).toInt(); // apply message type filter if(_messageTypeFilter & messageType) @@ -130,13 +130,13 @@ bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar if(_validBuffers.isEmpty()) return true; - BufferId bufferId = sourceModel()->data(sourceIdx, MessageModel::BufferIdRole).value(); + BufferId bufferId = sourceIdx.data(MessageModel::BufferIdRole).value(); if(!bufferId.isValid()) { return true; } - MsgId msgId = sourceModel()->data(sourceIdx, MessageModel::MsgIdRole).value(); - Message::Flags flags = (Message::Flags)sourceModel()->data(sourceIdx, MessageModel::FlagsRole).toInt(); + MsgId msgId = sourceIdx.data(MessageModel::MsgIdRole).value(); + Message::Flags flags = (Message::Flags)sourceIdx.data(MessageModel::FlagsRole).toInt(); NetworkId myNetworkId = networkId(); NetworkId msgNetworkId = Client::networkModel()->networkId(bufferId); @@ -144,11 +144,10 @@ bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar return false; // ignorelist handling - const MessageModelItem *item = const_cast(static_cast(sourceModel()))->messageItemAt(sourceRow); // only match if message is not flagged as server msg - if(!(item->message().flags() & Message::ServerMsg) && - Client::ignoreListManager()->match(item->message(), Client::networkModel()->networkName(item->bufferId()))) - return false; + if(!(flags & Message::ServerMsg) && + Client::ignoreListManager()->match(sourceIdx.data(MessageModel::MessageRole).value(), Client::networkModel()->networkName(bufferId))) + return false; if(flags & Message::Redirected) { int redirectionTarget = 0; diff --git a/src/client/messagemodel.cpp b/src/client/messagemodel.cpp index 6bcff7b8..ab81fe26 100644 --- a/src/client/messagemodel.cpp +++ b/src/client/messagemodel.cpp @@ -407,13 +407,14 @@ QVariant MessageModelItem::data(int column, int role) const { return QVariant(); switch(role) { - case MessageModel::MsgIdRole: return QVariant::fromValue(msgId()); - case MessageModel::BufferIdRole: return QVariant::fromValue(bufferId()); - case MessageModel::TypeRole: return msgType(); - case MessageModel::FlagsRole: return (int)msgFlags(); - case MessageModel::TimestampRole: return timestamp(); - case MessageModel::RedirectedToRole: return qVariantFromValue(_redirectedTo); - default: return QVariant(); + case MessageModel::MessageRole: return QVariant::fromValue(_msg); + case MessageModel::MsgIdRole: return QVariant::fromValue(msgId()); + case MessageModel::BufferIdRole: return QVariant::fromValue(bufferId()); + case MessageModel::TypeRole: return msgType(); + case MessageModel::FlagsRole: return (int)msgFlags(); + case MessageModel::TimestampRole: return timestamp(); + case MessageModel::RedirectedToRole: return qVariantFromValue(_redirectedTo); + default: return QVariant(); } } diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index afb8ec30..851509b1 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -34,11 +34,12 @@ class MessageModel : public QAbstractItemModel { Q_OBJECT public: - enum MessageRole { + enum MessageModelRole { DisplayRole = Qt::DisplayRole, EditRole = Qt::EditRole, BackgroundRole = Qt::BackgroundRole, - MsgIdRole = Qt::UserRole, + MessageRole = Qt::UserRole, + MsgIdRole, BufferIdRole, TypeRole, FlagsRole, @@ -70,8 +71,6 @@ public: void clear(); - virtual const MessageModelItem *messageItemAt(int i) const = 0; - public slots: void requestBacklog(BufferId bufferId); void messagesReceived(BufferId bufferId, int count); @@ -83,6 +82,7 @@ protected: virtual int messageCount() const = 0; virtual bool messagesIsEmpty() const = 0; + virtual const MessageModelItem *messageItemAt(int i) const = 0; virtual MessageModelItem *messageItemAt(int i) = 0; virtual const MessageModelItem *firstMessageItem() const= 0; virtual MessageModelItem *firstMessageItem() = 0; diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index d81f9c00..371d7add 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -248,7 +248,7 @@ void CoreSession::processMessages() { const RawMessage &rawMsg = _messageQueue.first(); BufferInfo bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, rawMsg.bufferType, rawMsg.target); Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); - + networkName = _networks.value(bufferInfo.networkId())->networkName(); // if message is ignored with "HardStrictness" we discard it here if(_ignoreListManager.match(msg, networkName) != IgnoreListManager::HardStrictness) { diff --git a/src/qtui/chatmonitorfilter.cpp b/src/qtui/chatmonitorfilter.cpp index 055ed933..9bbed8c0 100644 --- a/src/qtui/chatmonitorfilter.cpp +++ b/src/qtui/chatmonitorfilter.cpp @@ -64,21 +64,22 @@ bool ChatMonitorFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourc if(!(type & (Message::Plain | Message::Notice | Message::Action))) return false; + BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value(); + // ChatMonitorSettingsPage if(_operationMode == ChatViewSettings::OptOut && !(_showHighlights && flags & Message::Highlight) - && _bufferIds.contains(source_index.data(MessageModel::BufferIdRole).value())) + && _bufferIds.contains(bufferId)) return false; if(_operationMode == ChatViewSettings::OptIn && !(_showHighlights && flags & Message::Highlight) - && !_bufferIds.contains(source_index.data(MessageModel::BufferIdRole).value())) + && !_bufferIds.contains(bufferId)) return false; // ignorelist handling - const MessageModelItem *item = const_cast(static_cast(sourceModel()))->messageItemAt(sourceRow); // only match if message is not flagged as server msg - if(!(item->message().flags() & Message::ServerMsg) && - Client::ignoreListManager()->match(item->message(), Client::networkModel()->networkName(item->bufferId()))) + if(!(flags & Message::ServerMsg) && + Client::ignoreListManager()->match(source_index.data(MessageModel::MessageRole).value(), Client::networkModel()->networkName(bufferId))) return false; return true; } diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 2a5bad4c..36e9825a 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -957,9 +957,8 @@ void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { if(hasFocus && bufId == _bufferWidget->currentBuffer()) continue; - const MessageModelItem *item = const_cast(Client::messageModel())->messageItemAt(i); if((flags & Message::Highlight || bufType == BufferInfo::QueryBuffer) && - !Client::ignoreListManager()->match(item->message(), Client::networkModel()->networkName(bufId))) { + !Client::ignoreListManager()->match(idx.data(MessageModel::MessageRole).value(), Client::networkModel()->networkName(bufId))) { QModelIndex senderIdx = Client::messageModel()->index(i, ChatLineModel::SenderColumn); QString sender = senderIdx.data(ChatLineModel::EditRole).toString(); QString contents = idx.data(ChatLineModel::DisplayRole).toString(); diff --git a/src/qtui/settingspages/ignorelistmodel.h b/src/qtui/settingspages/ignorelistmodel.h index 87b242a3..de3eb061 100644 --- a/src/qtui/settingspages/ignorelistmodel.h +++ b/src/qtui/settingspages/ignorelistmodel.h @@ -88,6 +88,5 @@ int IgnoreListModel::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent); return isReady() ? 3 : 0; } - #endif //IGNORELISTMODEL_H