Fitting the SyncableObjects to the new Style
[quassel.git] / src / common / bufferviewconfig.cpp
index 7a893b3..14e4d04 100644 (file)
@@ -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  *
 
 #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,167 @@ 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<BufferId>();
+  }
+
+  emit configChanged(); // used to track changes in the settingspage
+}
+
+void BufferViewConfig::initSetBufferList(const QList<BufferId> &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<BufferId>();
+  }
+}
+
+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<BufferId>();
+  }
+}
+
+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);
+  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);
+  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;
+
+  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;
+
+  emit bufferPermanentlyRemoved(bufferId);
+  emit configChanged();
 }