-bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
- Q_UNUSED(sourceParent);
- QModelIndex sourceIdx = sourceModel()->index(sourceRow, 2);
- Message::Type messageType = (Message::Type)sourceIdx.data(MessageModel::TypeRole).toInt();
-
- // apply message type filter
- if(_messageTypeFilter & messageType)
- return false;
-
- if(_validBuffers.isEmpty())
- return true;
-
- BufferId bufferId = sourceIdx.data(MessageModel::BufferIdRole).value<BufferId>();
- if(!bufferId.isValid()) {
- return true;
- }
-
- // 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);
- if(myNetworkId != msgNetworkId)
- return false;
-
- // ignorelist handling
- // only match if message is not flagged as server msg
- if(!(flags & Message::ServerMsg) && Client::ignoreListManager()
- && Client::ignoreListManager()->match(sourceIdx.data(MessageModel::MessageRole).value<Message>(), Client::networkModel()->networkName(bufferId)))
- return false;
-
- if(flags & Message::Redirected) {
- int redirectionTarget = 0;
- switch(messageType) {
- case Message::Notice:
- if(Client::networkModel()->bufferType(bufferId) != BufferInfo::ChannelBuffer) {
- if(flags & Message::ServerMsg) {
- // server notice
- redirectionTarget = _serverNoticesTarget;
- } else {
- redirectionTarget = _userNoticesTarget;
- }
- }
- break;
- case Message::Error:
- redirectionTarget = _errorMsgsTarget;
- break;
- default:
- break;
- }