X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=6bd65653e5f5757d2d15fd9cec1a3c8ef60bb238;hp=ec14de08cc339cf9a9401f4112ac1887570ad4fe;hb=6daace85c6e97db23d0ab946f59479db20defb63;hpb=f6b9eeda207d42c99fc3e9085631722cf2ec83dc diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index ec14de08..6bd65653 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -47,8 +47,9 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * : QSortFilterProxyModel(model), _config(0), _sortOrder(Qt::AscendingOrder), + _showServerQueries(false), _editMode(false), - _enableEditMode(tr("Show / Hide buffers"), this) + _enableEditMode(tr("Show / Hide Chats"), this) { setConfig(config); setSourceModel(model); @@ -62,6 +63,9 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * _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) { @@ -116,6 +120,16 @@ void BufferViewFilter::configInitialized() { emit configChanged(); } +void BufferViewFilter::showServerQueriesChanged() { + BufferSettings bufferSettings; + + bool showQueries = (bufferSettings.serverNoticesTarget() & BufferSettings::DefaultBuffer); + if(_showServerQueries != showQueries) { + _showServerQueries = showQueries; + invalidate(); + } +} + QList BufferViewFilter::actions(const QModelIndex &index) { Q_UNUSED(index) QList actionList; @@ -308,9 +322,14 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) int allowedBufferTypes = config()->allowedBufferTypes(); if(!config()->networkId().isValid()) allowedBufferTypes &= ~BufferInfo::StatusBuffer; - if(!(allowedBufferTypes & sourceModel()->data(source_bufferIndex, NetworkModel::BufferTypeRole).toInt())) + int bufferType = sourceModel()->data(source_bufferIndex, NetworkModel::BufferTypeRole).toInt(); + if(!(allowedBufferTypes & bufferType)) return false; + if(bufferType & BufferInfo::QueryBuffer && !_showServerQueries && sourceModel()->data(source_bufferIndex, Qt::DisplayRole).toString().contains('.')) { + 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()) @@ -511,3 +530,4 @@ bool BufferViewFilter::bufferIdLessThan(const BufferId &left, const BufferId &ri return QString::compare(Client::networkModel()->data(leftIndex, Qt::DisplayRole).toString(), Client::networkModel()->data(rightIndex, Qt::DisplayRole).toString(), Qt::CaseInsensitive) < 0; } +