1 /***************************************************************************
2 * Copyright (C) 2005-09 by the Quassel Project *
3 * devel@quassel-irc.org *
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. *
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. *
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 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
21 #include "bufferviewconfig.h"
23 #include "bufferinfo.h"
25 INIT_SYNCABLE_OBJECT(BufferViewConfig)
26 BufferViewConfig::BufferViewConfig(int bufferViewId, QObject *parent)
27 : SyncableObject(parent),
28 _bufferViewId(bufferViewId),
29 _addNewBuffersAutomatically(true),
30 _sortAlphabetically(true),
31 _hideInactiveBuffers(false),
32 _disableDecoration(false),
33 _allowedBufferTypes(BufferInfo::StatusBuffer | BufferInfo::ChannelBuffer | BufferInfo::QueryBuffer | BufferInfo::GroupBuffer),
36 setObjectName(QString::number(bufferViewId));
39 BufferViewConfig::BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent)
40 : SyncableObject(parent),
41 _bufferViewId(bufferViewId)
43 fromVariantMap(properties);
44 setObjectName(QString::number(bufferViewId));
47 void BufferViewConfig::setBufferViewName(const QString &bufferViewName) {
48 if(_bufferViewName == bufferViewName)
51 _bufferViewName = bufferViewName;
52 SYNC(ARG(bufferViewName))
53 emit bufferViewNameSet(bufferViewName);
56 void BufferViewConfig::setNetworkId(const NetworkId &networkId) {
57 if(_networkId == networkId)
60 _networkId = networkId;
62 emit networkIdSet(networkId);
66 void BufferViewConfig::setAddNewBuffersAutomatically(bool addNewBuffersAutomatically) {
67 if(_addNewBuffersAutomatically == addNewBuffersAutomatically)
70 _addNewBuffersAutomatically = addNewBuffersAutomatically;
71 SYNC(ARG(addNewBuffersAutomatically))
75 void BufferViewConfig::setSortAlphabetically(bool sortAlphabetically) {
76 if(_sortAlphabetically == sortAlphabetically)
79 _sortAlphabetically = sortAlphabetically;
80 SYNC(ARG(sortAlphabetically))
84 void BufferViewConfig::setDisableDecoration(bool disableDecoration) {
85 if(_disableDecoration == disableDecoration)
88 _disableDecoration = disableDecoration;
89 SYNC(ARG(disableDecoration))
92 void BufferViewConfig::setAllowedBufferTypes(int bufferTypes) {
93 if(_allowedBufferTypes == bufferTypes)
96 _allowedBufferTypes = bufferTypes;
97 SYNC(ARG(bufferTypes))
101 void BufferViewConfig::setMinimumActivity(int activity) {
102 if(_minimumActivity == activity)
105 _minimumActivity = activity;
107 emit configChanged();
110 void BufferViewConfig::setHideInactiveBuffers(bool hideInactiveBuffers) {
111 if(_hideInactiveBuffers == hideInactiveBuffers)
114 _hideInactiveBuffers = hideInactiveBuffers;
115 SYNC(ARG(hideInactiveBuffers))
116 emit configChanged();
119 QVariantList BufferViewConfig::initBufferList() const {
120 QVariantList buffers;
122 foreach(BufferId bufferId, _buffers) {
123 buffers << qVariantFromValue(bufferId);
129 void BufferViewConfig::initSetBufferList(const QVariantList &buffers) {
132 foreach(QVariant buffer, buffers) {
133 _buffers << buffer.value<BufferId>();
136 emit configChanged(); // used to track changes in the settingspage
139 void BufferViewConfig::initSetBufferList(const QList<BufferId> &buffers) {
142 foreach(BufferId bufferId, buffers) {
143 _buffers << bufferId;
146 emit configChanged(); // used to track changes in the settingspage
149 QVariantList BufferViewConfig::initRemovedBuffers() const {
150 QVariantList removedBuffers;
152 foreach(BufferId bufferId, _removedBuffers) {
153 removedBuffers << qVariantFromValue(bufferId);
156 return removedBuffers;
159 void BufferViewConfig::initSetRemovedBuffers(const QVariantList &buffers) {
160 _removedBuffers.clear();
162 foreach(QVariant buffer, buffers) {
163 _removedBuffers << buffer.value<BufferId>();
167 QVariantList BufferViewConfig::initTemporarilyRemovedBuffers() const {
168 QVariantList temporarilyRemovedBuffers;
170 foreach(BufferId bufferId, _temporarilyRemovedBuffers) {
171 temporarilyRemovedBuffers << qVariantFromValue(bufferId);
174 return temporarilyRemovedBuffers;
177 void BufferViewConfig::initSetTemporarilyRemovedBuffers(const QVariantList &buffers) {
178 _temporarilyRemovedBuffers.clear();
180 foreach(QVariant buffer, buffers) {
181 _temporarilyRemovedBuffers << buffer.value<BufferId>();
185 void BufferViewConfig::addBuffer(const BufferId &bufferId, int pos) {
186 if(_buffers.contains(bufferId))
191 if(pos > _buffers.count())
192 pos = _buffers.count();
194 if(_removedBuffers.contains(bufferId))
195 _removedBuffers.remove(bufferId);
197 if(_temporarilyRemovedBuffers.contains(bufferId))
198 _temporarilyRemovedBuffers.remove(bufferId);
200 _buffers.insert(pos, bufferId);
201 SYNC(ARG(bufferId), ARG(pos))
202 emit bufferAdded(bufferId, pos);
203 emit configChanged();
206 void BufferViewConfig::moveBuffer(const BufferId &bufferId, int pos) {
207 if(!_buffers.contains(bufferId))
212 if(pos >= _buffers.count())
213 pos = _buffers.count() - 1;
215 _buffers.move(_buffers.indexOf(bufferId), pos);
216 SYNC(ARG(bufferId), ARG(pos))
217 emit bufferMoved(bufferId, pos);
218 emit configChanged();
221 void BufferViewConfig::removeBuffer(const BufferId &bufferId) {
222 if(_buffers.contains(bufferId))
223 _buffers.removeAt(_buffers.indexOf(bufferId));
225 if(_removedBuffers.contains(bufferId))
226 _removedBuffers.remove(bufferId);
228 _temporarilyRemovedBuffers << bufferId;
230 emit bufferRemoved(bufferId);
231 emit configChanged();
234 void BufferViewConfig::removeBufferPermanently(const BufferId &bufferId) {
235 if(_buffers.contains(bufferId))
236 _buffers.removeAt(_buffers.indexOf(bufferId));
238 if(_temporarilyRemovedBuffers.contains(bufferId))
239 _temporarilyRemovedBuffers.remove(bufferId);
241 _removedBuffers << bufferId;
244 emit bufferPermanentlyRemoved(bufferId);
245 emit configChanged();