1
1
/***************************************************************************
2
* Copyright (C) 2005-08 by the Quassel Project *
2
* Copyright (C) 2005-09 by the Quassel Project *
3
3
* devel@quassel-irc.org *
5
5
* This program is free software; you can redistribute it and/or modify *
47
47
setDynamicSortFilter(true);
49
49
BufferSettings defaultSettings;
50
defaultSettings.notify("UserNoticesTarget", this, SLOT(messageRedirectionChanged()));
51
defaultSettings.notify("ServerNoticesTarget", this, SLOT(messageRedirectionChanged()));
52
defaultSettings.notify("ErrorMsgsTarget", this, SLOT(messageRedirectionChanged()));
53
messageRedirectionChanged();
50
55
_messageTypeFilter = defaultSettings.messageFilter();
51
56
defaultSettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged()));
52
defaultSettings.notify("UserNoticesInDefaultBuffer", this, SLOT(messageRedirectionChanged()));
53
defaultSettings.notify("UserNoticesInStatusBuffer", this, SLOT(messageRedirectionChanged()));
54
defaultSettings.notify("UserNoticesInCurrentBuffer", this, SLOT(messageRedirectionChanged()));
56
defaultSettings.notify("serverNoticesInDefaultBuffer", this, SLOT(messageRedirectionChanged()));
57
defaultSettings.notify("serverNoticesInStatusBuffer", this, SLOT(messageRedirectionChanged()));
58
defaultSettings.notify("serverNoticesInCurrentBuffer", this, SLOT(messageRedirectionChanged()));
60
defaultSettings.notify("ErrorMsgsInDefaultBuffer", this, SLOT(messageRedirectionChanged()));
61
defaultSettings.notify("ErrorMsgsInStatusBuffer", this, SLOT(messageRedirectionChanged()));
62
defaultSettings.notify("ErrorMsgsInCurrentBuffer", this, SLOT(messageRedirectionChanged()));
63
messageRedirectionChanged();
65
58
BufferSettings mySettings(idString());
66
59
if(mySettings.hasFilter())
67
60
_messageTypeFilter = mySettings.messageFilter();
68
61
mySettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged()));
62
mySettings.notify("hasMessageTypeFilter", this, SLOT(messageTypeFilterChanged()));
71
65
void MessageFilter::messageTypeFilterChanged() {
87
81
void MessageFilter::messageRedirectionChanged() {
88
82
BufferSettings bufferSettings;
89
_userNoticesInDefaultBuffer = bufferSettings.value("UserNoticesInDefaultBuffer", QVariant(true)).toBool();
90
_userNoticesInStatusBuffer = bufferSettings.value("UserNoticesInStatusBuffer", QVariant(false)).toBool();
91
_userNoticesInCurrentBuffer = bufferSettings.value("UserNoticesInCurrentBuffer", QVariant(false)).toBool();
93
_serverNoticesInDefaultBuffer = bufferSettings.value("ServerNoticesInDefaultBuffer", QVariant(false)).toBool();
94
_serverNoticesInStatusBuffer = bufferSettings.value("ServerNoticesInStatusBuffer", QVariant(true)).toBool();
95
_serverNoticesInCurrentBuffer = bufferSettings.value("ServerNoticesInCurrentBuffer", QVariant(false)).toBool();
97
_errorMsgsInDefaultBuffer = bufferSettings.value("ErrorMsgsInDefaultBuffer", QVariant(true)).toBool();
98
_errorMsgsInStatusBuffer = bufferSettings.value("ErrorMsgsInStatusBuffer", QVariant(false)).toBool();
99
_errorMsgsInCurrentBuffer = bufferSettings.value("ErrorMsgsInCurrentBuffer", QVariant(false)).toBool();
85
if(_userNoticesTarget != bufferSettings.userNoticesTarget()) {
86
_userNoticesTarget = bufferSettings.userNoticesTarget();
90
if(_serverNoticesTarget != bufferSettings.serverNoticesTarget()) {
91
_serverNoticesTarget = bufferSettings.serverNoticesTarget();
95
if(_errorMsgsTarget != bufferSettings.errorMsgsTarget()) {
96
_errorMsgsTarget = bufferSettings.errorMsgsTarget();
104
104
QString MessageFilter::idString() const {
143
143
bool redirect = false;
144
bool inDefaultBuffer;
146
bool inCurrentBuffer;
144
int redirectionTarget = 0;
148
145
switch(messageType) {
149
146
case Message::Notice:
150
147
if(Client::networkModel()->bufferType(bufferId) != BufferInfo::ChannelBuffer) {
152
149
if(flags & Message::ServerMsg) {
154
inDefaultBuffer = _serverNoticesInDefaultBuffer;
155
inStatusBuffer = _serverNoticesInStatusBuffer;
156
inCurrentBuffer = _serverNoticesInCurrentBuffer;
151
redirectionTarget = _serverNoticesTarget;
158
inDefaultBuffer = _userNoticesInDefaultBuffer;
159
inStatusBuffer = _userNoticesInStatusBuffer;
160
inCurrentBuffer = _userNoticesInCurrentBuffer;
153
redirectionTarget = _userNoticesTarget;
164
157
case Message::Error:
166
inDefaultBuffer = _errorMsgsInDefaultBuffer;
167
inStatusBuffer = _errorMsgsInStatusBuffer;
168
inCurrentBuffer = _errorMsgsInCurrentBuffer;
159
redirectionTarget = _errorMsgsTarget;
175
if(_redirectedMsgs.contains(msgId))
178
if(inDefaultBuffer && _validBuffers.contains(bufferId))
181
if(inCurrentBuffer && !(flags & Message::Backlog) && _validBuffers.contains(Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>())) {
167
if(redirectionTarget & BufferSettings::DefaultBuffer && _validBuffers.contains(bufferId))
170
if(redirectionTarget & BufferSettings::CurrentBuffer && !(flags & Message::Backlog)) {
182
171
BufferId redirectedTo = sourceModel()->data(sourceIdx, MessageModel::RedirectedToRole).value<BufferId>();
183
172
if(!redirectedTo.isValid()) {
184
sourceModel()->setData(sourceIdx, QVariant::fromValue<BufferId>(singleBufferId()), MessageModel::RedirectedToRole);
185
_redirectedMsgs << msgId;
187
} else if(_validBuffers.contains(redirectedTo)) {
173
BufferId redirectedTo = Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>();
174
if(redirectedTo.isValid())
175
sourceModel()->setData(sourceIdx, QVariant::fromValue<BufferId>(redirectedTo), MessageModel::RedirectedToRole);
178
if(_validBuffers.contains(redirectedTo))
192
QSet<BufferId>::const_iterator idIter = _validBuffers.constBegin();
193
while(idIter != _validBuffers.constEnd()) {
194
if(inStatusBuffer && Client::networkModel()->bufferType(*idIter) == BufferInfo::StatusBuffer)
182
if(redirectionTarget & BufferSettings::StatusBuffer) {
183
QSet<BufferId>::const_iterator idIter = _validBuffers.constBegin();
184
while(idIter != _validBuffers.constEnd()) {
185
if(Client::networkModel()->bufferType(*idIter) == BufferInfo::StatusBuffer)