BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config)
: QSortFilterProxyModel(model),
_config(0),
- _tmpConfig(0),
_sortOrder(Qt::AscendingOrder),
_showServerQueries(false),
_editMode(false),
setDynamicSortFilter(true);
- connect(this, SIGNAL(_dataChanged(QModelIndex,QModelIndex)),
+ connect(this, SIGNAL(_dataChanged(const QModelIndex &, const QModelIndex &)),
this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex)));
_enableEditMode.setCheckable(true);
if(_config == config)
return;
-#if QT_VERSION >= 0x040600
- beginResetModel();
-#endif
+ if(_config) {
+ disconnect(_config, 0, this, 0);
+ }
- _tmpConfig = config; // don't invalidate the old config before we're initialized
+ _config = config;
+
+ if(!config) {
+ invalidate();
+ setObjectName("");
+ return;
+ }
- if(!config || config->isInitialized()) {
+ 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(); // not needed as we still have the old config and will reset once init is done
+ invalidate();
}
}
void BufferViewFilter::configInitialized() {
- if(_config) {
- disconnect(_config, 0, this, 0);
- }
+ if(!config())
+ return;
- _config = _tmpConfig;
- _tmpConfig = 0;
+// 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()));
- if(config()) {
- connect(config(), SIGNAL(configChanged()), this, SLOT(invalidate()));
- disconnect(config(), SIGNAL(initDone()), this, SLOT(configInitialized()));
- setObjectName(config()->bufferViewName());
- } else {
- setObjectName("");
- }
+ disconnect(config(), SIGNAL(initDone()), this, SLOT(configInitialized()));
- // 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
+ setObjectName(config()->bufferViewName());
+
+ invalidate();
emit configChanged();
}
}
bool BufferViewFilter::networkLessThan(const QModelIndex &source_left, const QModelIndex &source_right) const {
- NetworkId leftNetworkId = sourceModel()->data(source_left, NetworkModel::NetworkIdRole).value<NetworkId>();
- NetworkId rightNetworkId = sourceModel()->data(source_right, NetworkModel::NetworkIdRole).value<NetworkId>();
+ // NetworkId leftNetworkId = sourceModel()->data(source_left, NetworkModel::NetworkIdRole).value<NetworkId>();
+ // NetworkId rightNetworkId = sourceModel()->data(source_right, NetworkModel::NetworkIdRole).value<NetworkId>();
return QSortFilterProxyModel::lessThan(source_left, source_right);
}