/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "clientbacklogmanager.h"
#include "clientbufferviewmanager.h"
#include "networkmodel.h"
+#include "util.h"
const int BufferViewOverlay::_updateEventId = QEvent::registerEventType();
-BufferViewOverlay::BufferViewOverlay(QObject *parent)
+BufferViewOverlay::BufferViewOverlay(QObject* parent)
: QObject(parent)
-{
-}
-
+{}
void BufferViewOverlay::reset()
{
_tempRemovedBuffers.clear();
}
-
void BufferViewOverlay::save()
{
CoreAccountSettings().setBufferViewOverlay(_bufferViewIds);
}
-
void BufferViewOverlay::restore()
{
QSet<int> currentIds = _bufferViewIds;
}
}
-
void BufferViewOverlay::addView(int viewId)
{
if (_bufferViewIds.contains(viewId))
return;
- BufferViewConfig *config = Client::bufferViewManager()->bufferViewConfig(viewId);
+ BufferViewConfig* config = Client::bufferViewManager()->bufferViewConfig(viewId);
if (!config) {
qDebug() << "BufferViewOverlay::addView(): no such buffer view:" << viewId;
return;
if (wasInitialized) {
BufferIdList buffers;
if (config->networkId().isValid()) {
- foreach(BufferId bufferId, config->bufferList()) {
+ foreach (BufferId bufferId, config->bufferList()) {
if (Client::networkModel()->networkId(bufferId) == config->networkId())
buffers << bufferId;
}
- foreach(BufferId bufferId, config->temporarilyRemovedBuffers().toList()) {
+ for (BufferId bufferId : config->temporarilyRemovedBuffers()) {
if (Client::networkModel()->networkId(bufferId) == config->networkId())
buffers << bufferId;
}
}
else {
- buffers = BufferIdList::fromSet(config->bufferList().toSet() + config->temporarilyRemovedBuffers());
+ buffers = (toQSet(config->bufferList()) + config->temporarilyRemovedBuffers()).values();
}
Client::backlogManager()->checkForBacklog(buffers);
}
}
else {
- disconnect(config, SIGNAL(initDone()), this, SLOT(viewInitialized()));
// 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(viewInitialized()), Qt::QueuedConnection);
+ connect(config, &BufferViewConfig::initDone, this, selectOverload<>(&BufferViewOverlay::viewInitialized), Qt::QueuedConnection);
}
save();
}
-
void BufferViewOverlay::removeView(int viewId)
{
if (!_bufferViewIds.contains(viewId))
return;
_bufferViewIds.remove(viewId);
- BufferViewConfig *config = Client::bufferViewManager()->bufferViewConfig(viewId);
+ BufferViewConfig* config = Client::bufferViewManager()->bufferViewConfig(viewId);
if (config)
disconnect(config, nullptr, this, nullptr);
save();
}
-
-void BufferViewOverlay::viewInitialized(BufferViewConfig *config)
+void BufferViewOverlay::viewInitialized(BufferViewConfig* config)
{
if (!config) {
qWarning() << "BufferViewOverlay::viewInitialized() received invalid view!";
return;
}
- disconnect(config, SIGNAL(initDone()), this, SLOT(viewInitialized()));
-
- connect(config, SIGNAL(configChanged()), this, SLOT(update()));
+ connect(config, &BufferViewConfig::configChanged, this, &BufferViewOverlay::update);
// check if the view was removed in the meantime...
if (_bufferViewIds.contains(config->bufferViewId()))
emit initDone();
}
-
void BufferViewOverlay::viewInitialized()
{
- BufferViewConfig *config = qobject_cast<BufferViewConfig *>(sender());
+ auto* config = qobject_cast<BufferViewConfig*>(sender());
Q_ASSERT(config);
viewInitialized(config);
}
-
void BufferViewOverlay::update()
{
if (_aboutToUpdate) {
QCoreApplication::postEvent(this, new QEvent((QEvent::Type)_updateEventId));
}
-
void BufferViewOverlay::updateHelper()
{
if (!_aboutToUpdate)
QSet<BufferId> tempRemovedBuffers;
if (Client::bufferViewManager()) {
- BufferViewConfig *config = nullptr;
+ BufferViewConfig* config = nullptr;
QSet<int>::const_iterator viewIter;
for (viewIter = _bufferViewIds.constBegin(); viewIter != _bufferViewIds.constEnd(); ++viewIter) {
config = Client::bufferViewManager()->bufferViewConfig(*viewIter);
// we have to apply several filters before we can add a buffer to a category (visible, removed, ...)
buffers += filterBuffersByConfig(config->bufferList(), config);
- tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().toList(), config);
+ tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().values(), config);
removedBuffers += config->removedBuffers();
}
// prune the sets from overlap
- QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
+ QSet<BufferId> availableBuffers = toQSet(Client::networkModel()->allBufferIds());
buffers.intersect(availableBuffers);
emit hasChanged();
}
-
-QSet<BufferId> BufferViewOverlay::filterBuffersByConfig(const QList<BufferId> &buffers, const BufferViewConfig *config)
+QSet<BufferId> BufferViewOverlay::filterBuffersByConfig(const QList<BufferId>& buffers, const BufferViewConfig* config)
{
Q_ASSERT(config);
QSet<BufferId> bufferIds;
BufferInfo bufferInfo;
- foreach(BufferId bufferId, buffers) {
+ foreach (BufferId bufferId, buffers) {
bufferInfo = Client::networkModel()->bufferInfo(bufferId);
if (!(bufferInfo.type() & config->allowedBufferTypes()))
continue;
return bufferIds;
}
-
-void BufferViewOverlay::customEvent(QEvent *event)
+void BufferViewOverlay::customEvent(QEvent* event)
{
if (event->type() == _updateEventId) {
updateHelper();
}
}
-
bool BufferViewOverlay::allNetworks()
{
updateHelper();
return _networkIds.contains(NetworkId());
}
-
-const QSet<NetworkId> &BufferViewOverlay::networkIds()
+const QSet<NetworkId>& BufferViewOverlay::networkIds()
{
updateHelper();
return _networkIds;
}
-
-const QSet<BufferId> &BufferViewOverlay::bufferIds()
+const QSet<BufferId>& BufferViewOverlay::bufferIds()
{
updateHelper();
return _buffers;
}
-
-const QSet<BufferId> &BufferViewOverlay::removedBufferIds()
+const QSet<BufferId>& BufferViewOverlay::removedBufferIds()
{
updateHelper();
return _removedBuffers;
}
-
-const QSet<BufferId> &BufferViewOverlay::tempRemovedBufferIds()
+const QSet<BufferId>& BufferViewOverlay::tempRemovedBufferIds()
{
updateHelper();
return _tempRemovedBuffers;
}
-
int BufferViewOverlay::allowedBufferTypes()
{
updateHelper();
return _allowedBufferTypes;
}
-
int BufferViewOverlay::minimumActivity()
{
updateHelper();