+
+ setDynamicSortFilter(true);
+
+ connect(this, SIGNAL(_dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex)));
+
+ _enableEditMode.setCheckable(true);
+ _enableEditMode.setChecked(_editMode);
+ connect(&_enableEditMode, SIGNAL(toggled(bool)), this, SLOT(enableEditMode(bool)));
+
+ BufferSettings defaultSettings;
+ defaultSettings.notify("ServerNoticesTarget", this, SLOT(showServerQueriesChanged()));
+ showServerQueriesChanged();
+}
+
+void BufferViewFilter::setConfig(BufferViewConfig *config) {
+ if(_config == config)
+ return;
+
+#if QT_VERSION >= 0x040600
+ beginResetModel();
+#endif
+
+ _tmpConfig = config; // don't invalidate the old config before we're initialized
+
+ if(!config || 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(); // not needed as we still have the old config and will reset once init is done
+ }
+}
+
+void BufferViewFilter::configInitialized() {
+ if(_config) {
+ disconnect(_config, 0, this, 0);
+ }
+
+ _config = _tmpConfig;
+ _tmpConfig = 0;
+
+ if(config()) {
+ connect(config(), SIGNAL(configChanged()), this, SLOT(invalidate()));
+ disconnect(config(), SIGNAL(initDone()), this, SLOT(configInitialized()));
+ setObjectName(config()->bufferViewName());
+ } else {
+ setObjectName("");
+ }
+
+ // not resetting the model can trigger bug #663 for some reason I haven't understood yet
+ // we get invalid model indexes in attached views even if no source model has been set yet... wtf?
+#if QT_VERSION >= 0x040600
+ endResetModel();
+#else
+ reset();
+#endif
+ 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;