X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=3732d2d2329a68f03fdc776009317adc924dfcdc;hb=3202bf5340396b5c6b467e8d92d808b1cbbbf7fb;hp=12109ba4be1fbad4ff606bdd40a5c9456532b7eb;hpb=617a3966941742a4e235af440d3665d0274354a8;p=quassel.git diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 12109ba4..3732d2d2 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -46,7 +46,6 @@ public: BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config) : QSortFilterProxyModel(model), _config(0), - _tmpConfig(0), _sortOrder(Qt::AscendingOrder), _showServerQueries(false), _editMode(false), @@ -57,7 +56,7 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * 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); @@ -73,45 +72,51 @@ void BufferViewFilter::setConfig(BufferViewConfig *config) { 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(); } @@ -399,8 +404,8 @@ bool BufferViewFilter::bufferLessThan(const QModelIndex &source_left, const QMod } bool BufferViewFilter::networkLessThan(const QModelIndex &source_left, const QModelIndex &source_right) const { - NetworkId leftNetworkId = sourceModel()->data(source_left, NetworkModel::NetworkIdRole).value(); - NetworkId rightNetworkId = sourceModel()->data(source_right, NetworkModel::NetworkIdRole).value(); + // NetworkId leftNetworkId = sourceModel()->data(source_left, NetworkModel::NetworkIdRole).value(); + // NetworkId rightNetworkId = sourceModel()->data(source_right, NetworkModel::NetworkIdRole).value(); return QSortFilterProxyModel::lessThan(source_left, source_right); }