- 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 {
+ // we use a queued connection here since manipulating the connection list of a sending object
+ // doesn't seem to be such a good idea while executing a connected slots.
+ connect(config, SIGNAL(initDone()), this, SLOT(configInitialized()), Qt::QueuedConnection);
+ invalidate();
+ }
+}
+
+void BufferViewFilter::configInitialized() {
+ if(!config())
+ return;
+
+// connect(config(), SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(invalidate()));
+ connect(config(), SIGNAL(configChanged()), 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();
+}
+
+void BufferViewFilter::showServerQueriesChanged() {
+ BufferSettings bufferSettings;
+
+ bool showQueries = (bufferSettings.serverNoticesTarget() & BufferSettings::DefaultBuffer);
+ if(_showServerQueries != showQueries) {
+ _showServerQueries = showQueries;
+ invalidate();
+ }
+}
+
+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) {
+ addBuffers(QList<BufferId>::fromSet(_toAdd));
+ QSet<BufferId>::const_iterator iter;
+ 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);
+ }