X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbufferviewconfig.cpp;h=5cae5f8fad44abf7e0c250930769412332b295fb;hp=7a893b3eeb06de3ed1ac3a6e1b6860cfbf96fcc5;hb=3474e986630907fa2a3f4143012ac2a42796609e;hpb=4e0445e459c690cfa6013c5ad574e94f9214827b diff --git a/src/common/bufferviewconfig.cpp b/src/common/bufferviewconfig.cpp index 7a893b3e..5cae5f8f 100644 --- a/src/common/bufferviewconfig.cpp +++ b/src/common/bufferviewconfig.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,10 +20,27 @@ #include "bufferviewconfig.h" +#include "bufferinfo.h" + +INIT_SYNCABLE_OBJECT(BufferViewConfig) BufferViewConfig::BufferViewConfig(int bufferViewId, QObject *parent) + : SyncableObject(parent), + _bufferViewId(bufferViewId), + _addNewBuffersAutomatically(true), + _sortAlphabetically(true), + _hideInactiveBuffers(false), + _disableDecoration(false), + _allowedBufferTypes(BufferInfo::StatusBuffer | BufferInfo::ChannelBuffer | BufferInfo::QueryBuffer | BufferInfo::GroupBuffer), + _minimumActivity(0) +{ + setObjectName(QString::number(bufferViewId)); +} + +BufferViewConfig::BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent) : SyncableObject(parent), _bufferViewId(bufferViewId) { + fromVariantMap(properties); setObjectName(QString::number(bufferViewId)); } @@ -32,6 +49,7 @@ void BufferViewConfig::setBufferViewName(const QString &bufferViewName) { return; _bufferViewName = bufferViewName; + SYNC(ARG(bufferViewName)) emit bufferViewNameSet(bufferViewName); } @@ -40,7 +58,9 @@ void BufferViewConfig::setNetworkId(const NetworkId &networkId) { return; _networkId = networkId; + SYNC(ARG(networkId)) emit networkIdSet(networkId); + emit configChanged(); } void BufferViewConfig::setAddNewBuffersAutomatically(bool addNewBuffersAutomatically) { @@ -48,7 +68,8 @@ void BufferViewConfig::setAddNewBuffersAutomatically(bool addNewBuffersAutomatic return; _addNewBuffersAutomatically = addNewBuffersAutomatically; - emit addNewBuffersAutomaticallySet(addNewBuffersAutomatically); + SYNC(ARG(addNewBuffersAutomatically)) + emit configChanged(); } void BufferViewConfig::setSortAlphabetically(bool sortAlphabetically) { @@ -56,5 +77,170 @@ void BufferViewConfig::setSortAlphabetically(bool sortAlphabetically) { return; _sortAlphabetically = sortAlphabetically; - emit sortAlphabeticallySet(sortAlphabetically); + SYNC(ARG(sortAlphabetically)) + emit configChanged(); +} + +void BufferViewConfig::setDisableDecoration(bool disableDecoration) { + if(_disableDecoration == disableDecoration) + return; + + _disableDecoration = disableDecoration; + SYNC(ARG(disableDecoration)) +} + +void BufferViewConfig::setAllowedBufferTypes(int bufferTypes) { + if(_allowedBufferTypes == bufferTypes) + return; + + _allowedBufferTypes = bufferTypes; + SYNC(ARG(bufferTypes)) + emit configChanged(); +} + +void BufferViewConfig::setMinimumActivity(int activity) { + if(_minimumActivity == activity) + return; + + _minimumActivity = activity; + SYNC(ARG(activity)) + emit configChanged(); +} + +void BufferViewConfig::setHideInactiveBuffers(bool hideInactiveBuffers) { + if(_hideInactiveBuffers == hideInactiveBuffers) + return; + + _hideInactiveBuffers = hideInactiveBuffers; + SYNC(ARG(hideInactiveBuffers)) + emit configChanged(); +} + +QVariantList BufferViewConfig::initBufferList() const { + QVariantList buffers; + + foreach(BufferId bufferId, _buffers) { + buffers << qVariantFromValue(bufferId); + } + + return buffers; +} + +void BufferViewConfig::initSetBufferList(const QVariantList &buffers) { + _buffers.clear(); + + foreach(QVariant buffer, buffers) { + _buffers << buffer.value(); + } + + emit configChanged(); // used to track changes in the settingspage +} + +void BufferViewConfig::initSetBufferList(const QList &buffers) { + _buffers.clear(); + + foreach(BufferId bufferId, buffers) { + _buffers << bufferId; + } + + emit configChanged(); // used to track changes in the settingspage +} + +QVariantList BufferViewConfig::initRemovedBuffers() const { + QVariantList removedBuffers; + + foreach(BufferId bufferId, _removedBuffers) { + removedBuffers << qVariantFromValue(bufferId); + } + + return removedBuffers; +} + +void BufferViewConfig::initSetRemovedBuffers(const QVariantList &buffers) { + _removedBuffers.clear(); + + foreach(QVariant buffer, buffers) { + _removedBuffers << buffer.value(); + } +} + +QVariantList BufferViewConfig::initTemporarilyRemovedBuffers() const { + QVariantList temporarilyRemovedBuffers; + + foreach(BufferId bufferId, _temporarilyRemovedBuffers) { + temporarilyRemovedBuffers << qVariantFromValue(bufferId); + } + + return temporarilyRemovedBuffers; +} + +void BufferViewConfig::initSetTemporarilyRemovedBuffers(const QVariantList &buffers) { + _temporarilyRemovedBuffers.clear(); + + foreach(QVariant buffer, buffers) { + _temporarilyRemovedBuffers << buffer.value(); + } +} + +void BufferViewConfig::addBuffer(const BufferId &bufferId, int pos) { + if(_buffers.contains(bufferId)) + return; + + if(pos < 0) + pos = 0; + if(pos > _buffers.count()) + pos = _buffers.count(); + + if(_removedBuffers.contains(bufferId)) + _removedBuffers.remove(bufferId); + + if(_temporarilyRemovedBuffers.contains(bufferId)) + _temporarilyRemovedBuffers.remove(bufferId); + + _buffers.insert(pos, bufferId); + SYNC(ARG(bufferId), ARG(pos)) + emit bufferAdded(bufferId, pos); + emit configChanged(); +} + +void BufferViewConfig::moveBuffer(const BufferId &bufferId, int pos) { + if(!_buffers.contains(bufferId)) + return; + + if(pos < 0) + pos = 0; + if(pos >= _buffers.count()) + pos = _buffers.count() - 1; + + _buffers.move(_buffers.indexOf(bufferId), pos); + SYNC(ARG(bufferId), ARG(pos)) + emit bufferMoved(bufferId, pos); + emit configChanged(); +} + +void BufferViewConfig::removeBuffer(const BufferId &bufferId) { + if(_buffers.contains(bufferId)) + _buffers.removeAt(_buffers.indexOf(bufferId)); + + if(_removedBuffers.contains(bufferId)) + _removedBuffers.remove(bufferId); + + _temporarilyRemovedBuffers << bufferId; + SYNC(ARG(bufferId)) + emit bufferRemoved(bufferId); + emit configChanged(); +} + +void BufferViewConfig::removeBufferPermanently(const BufferId &bufferId) { + if(_buffers.contains(bufferId)) + _buffers.removeAt(_buffers.indexOf(bufferId)); + + if(_temporarilyRemovedBuffers.contains(bufferId)) + _temporarilyRemovedBuffers.remove(bufferId); + + _removedBuffers << bufferId; + + SYNC(ARG(bufferId)) + emit bufferPermanentlyRemoved(bufferId); + emit configChanged(); }