X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=81f03d33344a02271d76f51b465d94c155469caf;hb=2fd8e1c1d5a04b167ffa73e9c011fd34faebe1fc;hp=f5ae444725a00de6b55b64e4a5a8dcf912b50168;hpb=9fc57dc2c000e80fb8bd746a090e2e8210e1278e;p=quassel.git diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index f5ae4447..81f03d33 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -30,17 +30,9 @@ #include "client.h" #include "clientbufferviewconfig.h" #include "graphicalui.h" -#include "iconloader.h" #include "networkmodel.h" #include "uistyle.h" -class CheckRemovalEvent : public QEvent -{ -public: - CheckRemovalEvent(const QModelIndex &source_index) : QEvent(QEvent::User), index(source_index) {}; - QPersistentModelIndex index; -}; - /***************************************** * The Filter for the Tree View @@ -58,9 +50,6 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * setDynamicSortFilter(true); - connect(this, SIGNAL(_dataChanged(const QModelIndex &, const QModelIndex &)), - this, SLOT(_q_sourceDataChanged(QModelIndex, QModelIndex))); - _enableEditMode.setCheckable(true); _enableEditMode.setChecked(_editMode); connect(&_enableEditMode, SIGNAL(toggled(bool)), this, SLOT(enableEditMode(bool))); @@ -148,6 +137,14 @@ QList BufferViewFilter::actions(const QModelIndex &index) return actionList; } +void BufferViewFilter::setFilterString(const QString string) +{ + beginResetModel(); + _filterString = string; + endResetModel(); + enableEditMode(!string.isEmpty()); +} + void BufferViewFilter::enableEditMode(bool enable) { @@ -162,12 +159,12 @@ void BufferViewFilter::enableEditMode(bool enable) if (enable == false) { addBuffers(QList::fromSet(_toAdd)); QSet::const_iterator iter; - for (iter = _toTempRemove.constBegin(); iter != _toTempRemove.constEnd(); 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++) { + for (iter = _toRemove.constBegin(); iter != _toRemove.constEnd(); ++iter) { if (config()->removedBuffers().contains(*iter)) continue; config()->requestRemoveBufferPermanently(*iter); @@ -357,6 +354,16 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) return false; } + if (!_filterString.isEmpty()) { + const BufferInfo info = qvariant_cast(Client::bufferModel()->data(source_bufferIndex, NetworkModel::BufferInfoRole)); + QString name = info.bufferName(); + if (name.contains(_filterString)) { + return true; + } else { + return false; + } + } + // the following dynamic filters may not trigger if the buffer is currently selected. QModelIndex currentIndex = Client::bufferModel()->standardSelectionModel()->currentIndex(); if (bufferId == Client::bufferModel()->data(currentIndex, NetworkModel::BufferIdRole).value()) @@ -377,6 +384,10 @@ bool BufferViewFilter::filterAcceptNetwork(const QModelIndex &source_index) cons if (!config()) return true; + if (config()->hideInactiveNetworks() && !(sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool())) { + return false; + } + if (!config()->networkId().isValid()) { return true; } @@ -539,34 +550,6 @@ bool BufferViewFilter::setCheckedState(const QModelIndex &index, Qt::CheckState } -void BufferViewFilter::checkPreviousCurrentForRemoval(const QModelIndex ¤t, const QModelIndex &previous) -{ - Q_UNUSED(current); - if (previous.isValid()) - QCoreApplication::postEvent(this, new CheckRemovalEvent(previous)); -} - - -void BufferViewFilter::customEvent(QEvent *event) -{ - if (event->type() != QEvent::User) - return; - - CheckRemovalEvent *removalEvent = static_cast(event); - checkItemForRemoval(removalEvent->index); - - event->accept(); -} - - -void BufferViewFilter::checkItemsForRemoval(const QModelIndex &topLeft, const QModelIndex &bottomRight) -{ - QModelIndex source_topLeft = mapToSource(topLeft); - QModelIndex source_bottomRight = mapToSource(bottomRight); - emit _dataChanged(source_topLeft, source_bottomRight); -} - - bool BufferViewFilter::bufferIdLessThan(const BufferId &left, const BufferId &right) { Q_CHECK_PTR(Client::networkModel());