1/***************************************************************************
2 * Copyright (C) 2005-2014 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
25INIT_SYNCABLE_OBJECT(BufferViewConfig)
26BufferViewConfig::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
41BufferViewConfig::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
50void BufferViewConfig::setBufferViewName(const QString &bufferViewName)
51{
52 if (_bufferViewName == bufferViewName)
53 return;
54
55 _bufferViewName = bufferViewName;
56 SYNC(ARG(bufferViewName))
57 emit bufferViewNameSet(bufferViewName);
58}
59
60
61void BufferViewConfig::setNetworkId(const NetworkId &networkId)
62{
63 if (_networkId == networkId)
64 return;
65
66 _networkId = networkId;
67 SYNC(ARG(networkId))
68 emit networkIdSet(networkId);
69 emit configChanged();
70}
71
72
73void BufferViewConfig::setAddNewBuffersAutomatically(bool addNewBuffersAutomatically)
74{
75 if (_addNewBuffersAutomatically == addNewBuffersAutomatically)
76 return;
77
78 _addNewBuffersAutomatically = addNewBuffersAutomatically;
79 SYNC(ARG(addNewBuffersAutomatically))
80 emit configChanged();
81}
82
83
84void BufferViewConfig::setSortAlphabetically(bool sortAlphabetically)
85{
86 if (_sortAlphabetically == sortAlphabetically)
87 return;
88
89 _sortAlphabetically = sortAlphabetically;
90 SYNC(ARG(sortAlphabetically))
91 emit configChanged();
92}
93
94
95void BufferViewConfig::setDisableDecoration(bool disableDecoration)
96{
97 if (_disableDecoration == disableDecoration)
98 return;
99
100 _disableDecoration = disableDecoration;
101 SYNC(ARG(disableDecoration))
102}
103
104
105void BufferViewConfig::setAllowedBufferTypes(int bufferTypes)
106{
107 if (_allowedBufferTypes == bufferTypes)
108 return;
109
110 _allowedBufferTypes = bufferTypes;
111 SYNC(ARG(bufferTypes))
112 emit configChanged();
113}
114
115
116void BufferViewConfig::setMinimumActivity(int activity)
117{
118 if (_minimumActivity == activity)
119 return;
120
121 _minimumActivity = activity;
122 SYNC(ARG(activity))
123 emit configChanged();
124}
125
126
127void BufferViewConfig::setHideInactiveBuffers(bool hideInactiveBuffers)
128{
129 if (_hideInactiveBuffers == hideInactiveBuffers)
130 return;
131
132 _hideInactiveBuffers = hideInactiveBuffers;
133 SYNC(ARG(hideInactiveBuffers))
134 emit configChanged();
135}
136
137void BufferViewConfig::setHideInactiveNetworks(bool hideInactiveNetworks)
138{
139 if (_hideInactiveNetworks == hideInactiveNetworks)
140 return;
141
142 _hideInactiveNetworks = hideInactiveNetworks;
143 SYNC(ARG(hideInactiveNetworks))
144 emit configChanged();
145}
146
147
148QVariantList BufferViewConfig::initBufferList() const
149{
150 QVariantList buffers;
151
152 foreach(BufferId bufferId, _buffers) {
153 buffers << qVariantFromValue(bufferId);
154 }
155
156 return buffers;
157}
158
159
160void 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
172void 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
184QVariantList BufferViewConfig::initRemovedBuffers() const
185{
186 QVariantList removedBuffers;
187
188 foreach(BufferId bufferId, _removedBuffers) {
189 removedBuffers << qVariantFromValue(bufferId);
190 }
191
192 return removedBuffers;
193}
194
195
196void BufferViewConfig::initSetRemovedBuffers(const QVariantList &buffers)
197{
198 _removedBuffers.clear();
199
200 foreach(QVariant buffer, buffers) {
201 _removedBuffers << buffer.value<BufferId>();
202 }
203}
204
205
206QVariantList BufferViewConfig::initTemporarilyRemovedBuffers() const
207{
208 QVariantList temporarilyRemovedBuffers;
209
210 foreach(BufferId bufferId, _temporarilyRemovedBuffers) {
211 temporarilyRemovedBuffers << qVariantFromValue(bufferId);
212 }
213
214 return temporarilyRemovedBuffers;
215}
216
217
218void BufferViewConfig::initSetTemporarilyRemovedBuffers(const QVariantList &buffers)
219{
220 _temporarilyRemovedBuffers.clear();
221
222 foreach(QVariant buffer, buffers) {
223 _temporarilyRemovedBuffers << buffer.value<BufferId>();
224 }
225}
226
227
228void 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
251void 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
268void BufferViewConfig::removeBuffer(const BufferId &bufferId)
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
283void BufferViewConfig::removeBufferPermanently(const BufferId &bufferId)
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}
297