Fitting the SyncableObjects to the new Style
[quassel.git] / src / common / bufferviewmanager.cpp
index 7ab9831..42cb6ad 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  *
@@ -23,6 +23,7 @@
 #include "bufferviewconfig.h"
 #include "signalproxy.h"
 
+INIT_SYNCABLE_OBJECT(BufferViewManager)
 BufferViewManager::BufferViewManager(SignalProxy *proxy, QObject *parent)
   : SyncableObject(parent),
     _proxy(proxy)
@@ -37,20 +38,36 @@ BufferViewConfig *BufferViewManager::bufferViewConfig(int bufferViewId) const {
     return 0;
 }
 
+BufferViewConfig *BufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) {
+  return new BufferViewConfig(bufferViewConfigId, this);
+}
+
 void BufferViewManager::addBufferViewConfig(BufferViewConfig *config) {
   if(_bufferViewConfigs.contains(config->bufferViewId()))
      return;
 
   _proxy->synchronize(config);
   _bufferViewConfigs[config->bufferViewId()] = config;
-  emit bufferViewConfigAdded(config->bufferViewId());
+  int bufferViewId = config->bufferViewId();
+  SYNC_OTHER(addBufferViewConfig, ARG(bufferViewId))
+  emit bufferViewConfigAdded(bufferViewId);
 }
 
 void BufferViewManager::addBufferViewConfig(int bufferViewConfigId) {
   if(_bufferViewConfigs.contains(bufferViewConfigId))
      return;
   
-  addBufferViewConfig(new BufferViewConfig(bufferViewConfigId, this));
+  addBufferViewConfig(bufferViewConfigFactory(bufferViewConfigId));
+}
+
+void BufferViewManager::deleteBufferViewConfig(int bufferViewConfigId) {
+  if(!_bufferViewConfigs.contains(bufferViewConfigId))
+     return;
+
+  _bufferViewConfigs[bufferViewConfigId]->deleteLater();
+  _bufferViewConfigs.remove(bufferViewConfigId);
+  SYNC(ARG(bufferViewConfigId))
+  emit bufferViewConfigDeleted(bufferViewConfigId);
 }
 
 QVariantList BufferViewManager::initBufferViewIds() const {