X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewoverlayfilter.cpp;h=30af03803ee727469ad6aa0a55260dd087b3bbdb;hp=97a3246e563ec165f620028668e2e0d28e167456;hb=52209badc8e769e50aa3019b63689dda0e79e9d0;hpb=71ef3ec0c4c4d02431aa560ed83b379c416798c5 diff --git a/src/uisupport/bufferviewoverlayfilter.cpp b/src/uisupport/bufferviewoverlayfilter.cpp index 97a3246e..30af0380 100644 --- a/src/uisupport/bufferviewoverlayfilter.cpp +++ b/src/uisupport/bufferviewoverlayfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "bufferviewoverlayfilter.h" @@ -24,80 +24,86 @@ #include "networkmodel.h" #include "types.h" -BufferViewOverlayFilter::BufferViewOverlayFilter(QAbstractItemModel *model, BufferViewOverlay *overlay) - : QSortFilterProxyModel(model), - _overlay(0) +BufferViewOverlayFilter::BufferViewOverlayFilter(QAbstractItemModel* model, BufferViewOverlay* overlay) + : QSortFilterProxyModel(model) + , _overlay(nullptr) { - setOverlay(overlay); - setSourceModel(model); + setOverlay(overlay); + setSourceModel(model); - setDynamicSortFilter(true); + setDynamicSortFilter(true); } -void BufferViewOverlayFilter::setOverlay(BufferViewOverlay *overlay) { - if(_overlay == overlay) - return; +void BufferViewOverlayFilter::setOverlay(BufferViewOverlay* overlay) +{ + if (_overlay == overlay) + return; - if(_overlay) { - disconnect(_overlay, 0, this, 0); - } + if (_overlay) { + disconnect(_overlay, nullptr, this, nullptr); + } - _overlay = overlay; + _overlay = overlay; - if(!overlay) { - invalidate(); - return; - } + if (!overlay) { + invalidate(); + return; + } - connect(overlay, SIGNAL(destroyed()), this, SLOT(overlayDestroyed())); - connect(overlay, SIGNAL(hasChanged()), this, SLOT(invalidate())); - invalidate(); + connect(overlay, &QObject::destroyed, this, &BufferViewOverlayFilter::overlayDestroyed); + connect(overlay, &BufferViewOverlay::hasChanged, this, &QSortFilterProxyModel::invalidate); + invalidate(); } -void BufferViewOverlayFilter::overlayDestroyed() { - setOverlay(0); +void BufferViewOverlayFilter::overlayDestroyed() +{ + setOverlay(nullptr); } -bool BufferViewOverlayFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { - if(!_overlay) - return false; +bool BufferViewOverlayFilter::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const +{ + if (!_overlay) + return false; - QModelIndex source_bufferIndex = sourceModel()->index(source_row, 0, source_parent); + QModelIndex source_bufferIndex = sourceModel()->index(source_row, 0, source_parent); - if(!source_bufferIndex.isValid()) { - qWarning() << "filterAcceptsRow has been called with an invalid Child"; - return false; - } + if (!source_bufferIndex.isValid()) { + qWarning() << "filterAcceptsRow has been called with an invalid Child"; + return false; + } - NetworkId networkId = sourceModel()->data(source_bufferIndex, NetworkModel::NetworkIdRole).value(); - if(!_overlay->networkIds().contains(networkId) && ! _overlay->allNetworks()) - return false; + NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_bufferIndex, NetworkModel::ItemTypeRole).toInt(); - int activityLevel = sourceModel()->data(source_bufferIndex, NetworkModel::BufferActivityRole).toInt(); - if(_overlay->minimumActivity() > activityLevel) - return false; + NetworkId networkId = sourceModel()->data(source_bufferIndex, NetworkModel::NetworkIdRole).value(); + if (!_overlay->networkIds().contains(networkId) && !_overlay->allNetworks()) { + return false; + } + else if (itemType == NetworkModel::NetworkItemType) { + // network items don't need further checks. + return true; + } - bool isActive = sourceModel()->data(source_bufferIndex, NetworkModel::ItemActiveRole).toBool(); - if(_overlay->hideInactiveBuffers() && !isActive && activityLevel <= BufferInfo::OtherActivity) - return false; + int activityLevel = sourceModel()->data(source_bufferIndex, NetworkModel::BufferActivityRole).toInt(); + if (_overlay->minimumActivity() > activityLevel) + return false; - int bufferType = sourceModel()->data(source_bufferIndex, NetworkModel::BufferTypeRole).toInt(); - if(!(_overlay->allowedBufferTypes() & bufferType)) - return false; + int bufferType = sourceModel()->data(source_bufferIndex, NetworkModel::BufferTypeRole).toInt(); + if (!(_overlay->allowedBufferTypes() & bufferType)) + return false; - BufferId bufferId = sourceModel()->data(source_bufferIndex, NetworkModel::BufferIdRole).value(); - Q_ASSERT(bufferId.isValid()); + BufferId bufferId = sourceModel()->data(source_bufferIndex, NetworkModel::BufferIdRole).value(); + Q_ASSERT(bufferId.isValid()); - if(_overlay->bufferIds().contains(bufferId)) - return true; + if (_overlay->bufferIds().contains(bufferId)) + return true; - if(_overlay->tempRemovedBufferIds().contains(bufferId)) - return activityLevel > BufferInfo::OtherActivity; + if (_overlay->tempRemovedBufferIds().contains(bufferId)) + return activityLevel > BufferInfo::OtherActivity; - if(_overlay->removedBufferIds().contains(bufferId)) - return false; + if (_overlay->removedBufferIds().contains(bufferId)) + return false; - // the buffer is not known to us - return _overlay->addBuffersAutomatically(); + // the buffer is not known to us + qDebug() << "BufferViewOverlayFilter::filterAcceptsRow()" << bufferId << "is unknown!"; + return false; } -