- if(config) {
- connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(invalidate()));
- connect(config, SIGNAL(networkIdSet(const NetworkId &)), this, SLOT(invalidate()));
- connect(config, SIGNAL(addNewBuffersAutomaticallySet(bool)), this, SLOT(invalidate()));
- connect(config, SIGNAL(sortAlphabeticallySet(bool)), this, SLOT(invalidate()));
- connect(config, SIGNAL(hideInactiveBuffersSet(bool)), this, SLOT(invalidate()));
- connect(config, SIGNAL(allowedBufferTypesSet(int)), this, SLOT(invalidate()));
- connect(config, SIGNAL(minimumActivitySet(int)), this, SLOT(invalidate()));
- connect(config, SIGNAL(bufferListSet()), this, SLOT(invalidate()));
- connect(config, SIGNAL(bufferAdded(const BufferId &, int)), this, SLOT(invalidate()));
- connect(config, SIGNAL(bufferMoved(const BufferId &, int)), this, SLOT(invalidate()));
- connect(config, SIGNAL(bufferRemoved(const BufferId &)), this, SLOT(invalidate()));
+
+ if(!config) {
+ invalidate();
+ setObjectName("");
+ return;
+ }
+
+ if(config->isInitialized()) {
+ configInitialized();
+ } else {
+ connect(config, SIGNAL(initDone()), this, SLOT(configInitialized()));
+ invalidate();
+ }
+}
+
+void BufferViewFilter::configInitialized() {
+ if(!config())
+ return;
+
+ connect(config(), SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(networkIdSet(const NetworkId &)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(addNewBuffersAutomaticallySet(bool)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(sortAlphabeticallySet(bool)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(hideInactiveBuffersSet(bool)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(allowedBufferTypesSet(int)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(minimumActivitySet(int)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(bufferListSet()), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(bufferAdded(const BufferId &, int)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(bufferMoved(const BufferId &, int)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(bufferRemoved(const BufferId &)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(bufferPermanentlyRemoved(const BufferId &)), this, SLOT(invalidate()));
+
+ disconnect(config(), SIGNAL(initDone()), this, SLOT(configInitialized()));
+
+ setObjectName(config()->bufferViewName());
+
+ invalidate();
+ emit configChanged();
+}
+
+QList<QAction *> BufferViewFilter::actions(const QModelIndex &index) {
+ Q_UNUSED(index)
+ QList<QAction *> actionList;
+ actionList << &_enableEditMode;
+ return actionList;
+}
+
+void BufferViewFilter::enableEditMode(bool enable) {
+ if(_editMode == enable) {
+ return;
+ }
+ _editMode = enable;
+
+ if(!config())
+ return;
+
+ if(enable == false) {
+ int numBuffers = config()->bufferList().count();
+ QSet<BufferId>::const_iterator iter;
+ for(iter = _toAdd.constBegin(); iter != _toAdd.constEnd(); iter++) {
+ if(config()->bufferList().contains(*iter))
+ continue;
+ config()->requestAddBuffer(*iter, numBuffers);
+ }
+ for(iter = _toTempRemove.constBegin(); iter != _toTempRemove.constEnd(); iter++) {
+ if(config()->temporarilyRemovedBuffers().contains(*iter))
+ continue;
+ config()->requestRemoveBuffer(*iter);
+ }
+ for(iter = _toRemove.constBegin(); iter != _toRemove.constEnd(); iter++) {
+ if(config()->removedBuffers().contains(*iter))
+ continue;
+ config()->requestRemoveBufferPermanently(*iter);
+ }