~ubuntu-branches/ubuntu/jaunty/quassel/jaunty

« back to all changes in this revision

Viewing changes to src/client/messagefilter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2009-01-14 01:28:49 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090114012849-38celzez3y3wpai9
Tags: 0.4.0~git090113-0ubuntu1
* New upstream git snapshot
  - Use networks.ini to provide default network/channel
  - Provide presets for common IRC networks
* Add kubuntu_01_default_network_channel.patch to set Freenode, port
  8001, and #kubuntu as defaults
* Add build-dep on quilt

Show diffs side-by-side

added added

removed removed

Lines of Context:
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                                                 *
4
4
 *                                                                         *
5
5
 *   This program is free software; you can redistribute it and/or modify  *
47
47
  setDynamicSortFilter(true);
48
48
 
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();
 
54
 
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()));
55
 
 
56
 
  defaultSettings.notify("serverNoticesInDefaultBuffer", this, SLOT(messageRedirectionChanged()));
57
 
  defaultSettings.notify("serverNoticesInStatusBuffer", this, SLOT(messageRedirectionChanged()));
58
 
  defaultSettings.notify("serverNoticesInCurrentBuffer", this, SLOT(messageRedirectionChanged()));
59
 
 
60
 
  defaultSettings.notify("ErrorMsgsInDefaultBuffer", this, SLOT(messageRedirectionChanged()));
61
 
  defaultSettings.notify("ErrorMsgsInStatusBuffer", this, SLOT(messageRedirectionChanged()));
62
 
  defaultSettings.notify("ErrorMsgsInCurrentBuffer", this, SLOT(messageRedirectionChanged()));
63
 
  messageRedirectionChanged();
64
57
 
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()));
69
63
}
70
64
 
71
65
void MessageFilter::messageTypeFilterChanged() {
86
80
 
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();
92
 
 
93
 
  _serverNoticesInDefaultBuffer = bufferSettings.value("ServerNoticesInDefaultBuffer", QVariant(false)).toBool();
94
 
  _serverNoticesInStatusBuffer = bufferSettings.value("ServerNoticesInStatusBuffer", QVariant(true)).toBool();
95
 
  _serverNoticesInCurrentBuffer = bufferSettings.value("ServerNoticesInCurrentBuffer", QVariant(false)).toBool();
96
 
 
97
 
  _errorMsgsInDefaultBuffer = bufferSettings.value("ErrorMsgsInDefaultBuffer", QVariant(true)).toBool();
98
 
  _errorMsgsInStatusBuffer = bufferSettings.value("ErrorMsgsInStatusBuffer", QVariant(false)).toBool();
99
 
  _errorMsgsInCurrentBuffer = bufferSettings.value("ErrorMsgsInCurrentBuffer", QVariant(false)).toBool();
100
 
 
101
 
  invalidateFilter();
 
83
  bool changed = false;
 
84
 
 
85
  if(_userNoticesTarget != bufferSettings.userNoticesTarget()) {
 
86
    _userNoticesTarget = bufferSettings.userNoticesTarget();
 
87
    changed = true;
 
88
  }
 
89
 
 
90
  if(_serverNoticesTarget != bufferSettings.serverNoticesTarget()) {
 
91
    _serverNoticesTarget = bufferSettings.serverNoticesTarget();
 
92
    changed = true;
 
93
  }
 
94
 
 
95
  if(_errorMsgsTarget != bufferSettings.errorMsgsTarget()) {
 
96
    _errorMsgsTarget = bufferSettings.errorMsgsTarget();
 
97
    changed = true;
 
98
  }
 
99
 
 
100
  if(changed)
 
101
    invalidateFilter();
102
102
}
103
103
 
104
104
QString MessageFilter::idString() const {
141
141
    return false;
142
142
 
143
143
  bool redirect = false;
144
 
  bool inDefaultBuffer;
145
 
  bool inStatusBuffer;
146
 
  bool inCurrentBuffer;
147
 
 
 
144
  int redirectionTarget = 0;
148
145
  switch(messageType) {
149
146
  case Message::Notice:
150
147
    if(Client::networkModel()->bufferType(bufferId) != BufferInfo::ChannelBuffer) {
151
148
      redirect = true;
152
149
      if(flags & Message::ServerMsg) {
153
150
        // server notice
154
 
        inDefaultBuffer = _serverNoticesInDefaultBuffer;
155
 
        inStatusBuffer = _serverNoticesInStatusBuffer;
156
 
        inCurrentBuffer = _serverNoticesInCurrentBuffer;
 
151
        redirectionTarget = _serverNoticesTarget;
157
152
      } else {
158
 
        inDefaultBuffer = _userNoticesInDefaultBuffer;
159
 
        inStatusBuffer = _userNoticesInStatusBuffer;
160
 
        inCurrentBuffer = _userNoticesInCurrentBuffer;
 
153
        redirectionTarget = _userNoticesTarget;
161
154
      }
162
155
    }
163
156
    break;
164
157
  case Message::Error:
165
158
    redirect = true;
166
 
    inDefaultBuffer = _errorMsgsInDefaultBuffer;
167
 
    inStatusBuffer = _errorMsgsInStatusBuffer;
168
 
    inCurrentBuffer = _errorMsgsInCurrentBuffer;
 
159
    redirectionTarget = _errorMsgsTarget;
169
160
    break;
170
161
  default:
171
162
    break;
172
163
  }
173
164
 
174
165
  if(redirect) {
175
 
    if(_redirectedMsgs.contains(msgId))
176
 
      return true;
177
 
 
178
 
    if(inDefaultBuffer && _validBuffers.contains(bufferId))
179
 
      return true;
180
 
 
181
 
    if(inCurrentBuffer && !(flags & Message::Backlog) && _validBuffers.contains(Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>())) {
 
166
 
 
167
    if(redirectionTarget & BufferSettings::DefaultBuffer && _validBuffers.contains(bufferId))
 
168
      return true;
 
169
 
 
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;
186
 
        return true;
187
 
      } else if(_validBuffers.contains(redirectedTo)) {
188
 
        return true;
 
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);
189
176
      }
 
177
 
 
178
      if(_validBuffers.contains(redirectedTo))
 
179
        return true;
190
180
    }
191
181
 
192
 
    QSet<BufferId>::const_iterator idIter = _validBuffers.constBegin();
193
 
    while(idIter != _validBuffers.constEnd()) {
194
 
      if(inStatusBuffer && Client::networkModel()->bufferType(*idIter) == BufferInfo::StatusBuffer)
195
 
        return true;
196
 
      idIter++;
 
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)
 
186
          return true;
 
187
        idIter++;
 
188
      }
197
189
    }
198
190
 
199
191
    return false;