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)
if(_validBuffers.isEmpty())
return true;
- BufferId bufferId = sourceModel()->data(sourceIdx, MessageModel::BufferIdRole).value<BufferId>();
+ BufferId bufferId = sourceIdx.data(MessageModel::BufferIdRole).value<BufferId>();
if(!bufferId.isValid()) {
return true;
}
- MsgId msgId = sourceModel()->data(sourceIdx, MessageModel::MsgIdRole).value<MsgId>();
- Message::Flags flags = (Message::Flags)sourceModel()->data(sourceIdx, MessageModel::FlagsRole).toInt();
+ MsgId msgId = sourceIdx.data(MessageModel::MsgIdRole).value<MsgId>();
+ Message::Flags flags = (Message::Flags)sourceIdx.data(MessageModel::FlagsRole).toInt();
NetworkId myNetworkId = networkId();
NetworkId msgNetworkId = Client::networkModel()->networkId(bufferId);
return false;
// ignorelist handling
- const MessageModelItem *item = const_cast<const MessageModel*>(static_cast<MessageModel*>(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<Message>(), Client::networkModel()->networkName(bufferId)))
+ return false;
if(flags & Message::Redirected) {
int redirectionTarget = 0;
return QVariant();
switch(role) {
- case MessageModel::MsgIdRole: return QVariant::fromValue<MsgId>(msgId());
- case MessageModel::BufferIdRole: return QVariant::fromValue<BufferId>(bufferId());
- case MessageModel::TypeRole: return msgType();
- case MessageModel::FlagsRole: return (int)msgFlags();
- case MessageModel::TimestampRole: return timestamp();
- case MessageModel::RedirectedToRole: return qVariantFromValue<BufferId>(_redirectedTo);
- default: return QVariant();
+ case MessageModel::MessageRole: return QVariant::fromValue<Message>(_msg);
+ case MessageModel::MsgIdRole: return QVariant::fromValue<MsgId>(msgId());
+ case MessageModel::BufferIdRole: return QVariant::fromValue<BufferId>(bufferId());
+ case MessageModel::TypeRole: return msgType();
+ case MessageModel::FlagsRole: return (int)msgFlags();
+ case MessageModel::TimestampRole: return timestamp();
+ case MessageModel::RedirectedToRole: return qVariantFromValue<BufferId>(_redirectedTo);
+ default: return QVariant();
}
}
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,
void clear();
- virtual const MessageModelItem *messageItemAt(int i) const = 0;
-
public slots:
void requestBacklog(BufferId bufferId);
void messagesReceived(BufferId bufferId, int count);
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;
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) {
if(!(type & (Message::Plain | Message::Notice | Message::Action)))
return false;
+ BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value<BufferId>();
+
// ChatMonitorSettingsPage
if(_operationMode == ChatViewSettings::OptOut
&& !(_showHighlights && flags & Message::Highlight)
- && _bufferIds.contains(source_index.data(MessageModel::BufferIdRole).value<BufferId>()))
+ && _bufferIds.contains(bufferId))
return false;
if(_operationMode == ChatViewSettings::OptIn
&& !(_showHighlights && flags & Message::Highlight)
- && !_bufferIds.contains(source_index.data(MessageModel::BufferIdRole).value<BufferId>()))
+ && !_bufferIds.contains(bufferId))
return false;
// ignorelist handling
- const MessageModelItem *item = const_cast<const MessageModel*>(static_cast<MessageModel*>(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<Message>(), Client::networkModel()->networkName(bufferId)))
return false;
return true;
}
if(hasFocus && bufId == _bufferWidget->currentBuffer())
continue;
- const MessageModelItem *item = const_cast<const MessageModel*>(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<Message>(), 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();
Q_UNUSED(parent);
return isReady() ? 3 : 0;
}
-
#endif //IGNORELISTMODEL_H