Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
bufferviewconfig.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 by the Quassel Project *
3  * devel@quassel-irc.org *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) version 3. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 
21 #include "bufferviewconfig.h"
22 
23 #include "bufferinfo.h"
24 
26 BufferViewConfig::BufferViewConfig(int bufferViewId, QObject *parent)
27  : SyncableObject(parent),
28  _bufferViewId(bufferViewId),
29  _addNewBuffersAutomatically(true),
30  _sortAlphabetically(true),
31  _hideInactiveBuffers(false),
32  _hideInactiveNetworks(false),
33  _disableDecoration(false),
34  _allowedBufferTypes(BufferInfo::StatusBuffer | BufferInfo::ChannelBuffer | BufferInfo::QueryBuffer | BufferInfo::GroupBuffer),
35  _minimumActivity(0)
36 {
37  setObjectName(QString::number(bufferViewId));
38 }
39 
40 
41 BufferViewConfig::BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent)
42  : SyncableObject(parent),
43  _bufferViewId(bufferViewId)
44 {
45  fromVariantMap(properties);
46  setObjectName(QString::number(bufferViewId));
47 }
48 
49 
50 void BufferViewConfig::setBufferViewName(const QString &bufferViewName)
51 {
52  if (_bufferViewName == bufferViewName)
53  return;
54 
56  SYNC(ARG(bufferViewName))
57  emit bufferViewNameSet(bufferViewName);
58 }
59 
60 
62 {
63  if (_networkId == networkId)
64  return;
65 
67  SYNC(ARG(networkId))
68  emit networkIdSet(networkId);
69  emit configChanged();
70 }
71 
72 
73 void BufferViewConfig::setAddNewBuffersAutomatically(bool addNewBuffersAutomatically)
74 {
75  if (_addNewBuffersAutomatically == addNewBuffersAutomatically)
76  return;
77 
79  SYNC(ARG(addNewBuffersAutomatically))
80  emit configChanged();
81 }
82 
83 
84 void BufferViewConfig::setSortAlphabetically(bool sortAlphabetically)
85 {
86  if (_sortAlphabetically == sortAlphabetically)
87  return;
88 
90  SYNC(ARG(sortAlphabetically))
91  emit configChanged();
92 }
93 
94 
95 void BufferViewConfig::setDisableDecoration(bool disableDecoration)
96 {
97  if (_disableDecoration == disableDecoration)
98  return;
99 
101  SYNC(ARG(disableDecoration))
102 }
103 
104 
106 {
107  if (_allowedBufferTypes == bufferTypes)
108  return;
109 
110  _allowedBufferTypes = bufferTypes;
111  SYNC(ARG(bufferTypes))
112  emit configChanged();
113 }
114 
115 
117 {
118  if (_minimumActivity == activity)
119  return;
120 
121  _minimumActivity = activity;
122  SYNC(ARG(activity))
123  emit configChanged();
124 }
125 
126 
127 void BufferViewConfig::setHideInactiveBuffers(bool hideInactiveBuffers)
128 {
129  if (_hideInactiveBuffers == hideInactiveBuffers)
130  return;
131 
133  SYNC(ARG(hideInactiveBuffers))
134  emit configChanged();
135 }
136 
137 void BufferViewConfig::setHideInactiveNetworks(bool hideInactiveNetworks)
138 {
139  if (_hideInactiveNetworks == hideInactiveNetworks)
140  return;
141 
143  SYNC(ARG(hideInactiveNetworks))
144  emit configChanged();
145 }
146 
147 
149 {
150  QVariantList buffers;
151 
152  foreach(BufferId bufferId, _buffers) {
153  buffers << qVariantFromValue(bufferId);
154  }
155 
156  return buffers;
157 }
158 
159 
160 void BufferViewConfig::initSetBufferList(const QVariantList &buffers)
161 {
162  _buffers.clear();
163 
164  foreach(QVariant buffer, buffers) {
165  _buffers << buffer.value<BufferId>();
166  }
167 
168  emit configChanged(); // used to track changes in the settingspage
169 }
170 
171 
172 void BufferViewConfig::initSetBufferList(const QList<BufferId> &buffers)
173 {
174  _buffers.clear();
175 
176  foreach(BufferId bufferId, buffers) {
177  _buffers << bufferId;
178  }
179 
180  emit configChanged(); // used to track changes in the settingspage
181 }
182 
183 
185 {
186  QVariantList removedBuffers;
187 
188  foreach(BufferId bufferId, _removedBuffers) {
189  removedBuffers << qVariantFromValue(bufferId);
190  }
191 
192  return removedBuffers;
193 }
194 
195 
196 void BufferViewConfig::initSetRemovedBuffers(const QVariantList &buffers)
197 {
198  _removedBuffers.clear();
199 
200  foreach(QVariant buffer, buffers) {
201  _removedBuffers << buffer.value<BufferId>();
202  }
203 }
204 
205 
207 {
208  QVariantList temporarilyRemovedBuffers;
209 
210  foreach(BufferId bufferId, _temporarilyRemovedBuffers) {
211  temporarilyRemovedBuffers << qVariantFromValue(bufferId);
212  }
213 
215 }
216 
217 
218 void BufferViewConfig::initSetTemporarilyRemovedBuffers(const QVariantList &buffers)
219 {
221 
222  foreach(QVariant buffer, buffers) {
223  _temporarilyRemovedBuffers << buffer.value<BufferId>();
224  }
225 }
226 
227 
228 void BufferViewConfig::addBuffer(const BufferId &bufferId, int pos)
229 {
230  if (_buffers.contains(bufferId))
231  return;
232 
233  if (pos < 0)
234  pos = 0;
235  if (pos > _buffers.count())
236  pos = _buffers.count();
237 
238  if (_removedBuffers.contains(bufferId))
239  _removedBuffers.remove(bufferId);
240 
241  if (_temporarilyRemovedBuffers.contains(bufferId))
242  _temporarilyRemovedBuffers.remove(bufferId);
243 
244  _buffers.insert(pos, bufferId);
245  SYNC(ARG(bufferId), ARG(pos))
246  emit bufferAdded(bufferId, pos);
247  emit configChanged();
248 }
249 
250 
251 void BufferViewConfig::moveBuffer(const BufferId &bufferId, int pos)
252 {
253  if (!_buffers.contains(bufferId))
254  return;
255 
256  if (pos < 0)
257  pos = 0;
258  if (pos >= _buffers.count())
259  pos = _buffers.count() - 1;
260 
261  _buffers.move(_buffers.indexOf(bufferId), pos);
262  SYNC(ARG(bufferId), ARG(pos))
263  emit bufferMoved(bufferId, pos);
264  emit configChanged();
265 }
266 
267 
269 {
270  if (_buffers.contains(bufferId))
271  _buffers.removeAt(_buffers.indexOf(bufferId));
272 
273  if (_removedBuffers.contains(bufferId))
274  _removedBuffers.remove(bufferId);
275 
276  _temporarilyRemovedBuffers << bufferId;
277  SYNC(ARG(bufferId))
278  emit bufferRemoved(bufferId);
279  emit configChanged();
280 }
281 
282 
284 {
285  if (_buffers.contains(bufferId))
286  _buffers.removeAt(_buffers.indexOf(bufferId));
287 
288  if (_temporarilyRemovedBuffers.contains(bufferId))
289  _temporarilyRemovedBuffers.remove(bufferId);
290 
291  _removedBuffers << bufferId;
292 
293  SYNC(ARG(bufferId))
294  emit bufferPermanentlyRemoved(bufferId);
295  emit configChanged();
296 }