kwin/src/tabbox/switcheritem.cpp
Vlad Zahorodnii 8e7a8c5a11 Rename AbstractOutput to Output
AbstractOutput is not so Abstract and it's common to avoid the word
"Abstract" in class names as it doesn't contribute any new information.
It also significantly reduces the line width in some places.
2022-04-15 17:49:49 +03:00

114 lines
2.3 KiB
C++

/*
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "switcheritem.h"
// KWin
#include "composite.h"
#include "output.h"
#include "screens.h"
#include "tabboxhandler.h"
#include "workspace.h"
// Qt
#include <QAbstractItemModel>
namespace KWin
{
namespace TabBox
{
SwitcherItem::SwitcherItem(QObject *parent)
: QObject(parent)
, m_model(nullptr)
, m_item(nullptr)
, m_visible(false)
, m_allDesktops(false)
, m_currentIndex(0)
{
m_selectedIndexConnection = connect(tabBox, &TabBoxHandler::selectedIndexChanged, this, [this] {
if (isVisible()) {
setCurrentIndex(tabBox->currentIndex().row());
}
});
connect(screens(), &Screens::changed, this, &SwitcherItem::screenGeometryChanged);
connect(Compositor::self(), &Compositor::compositingToggled, this, &SwitcherItem::compositingChanged);
}
SwitcherItem::~SwitcherItem()
{
disconnect(m_selectedIndexConnection);
}
void SwitcherItem::setItem(QObject *item)
{
if (m_item == item) {
return;
}
m_item = item;
Q_EMIT itemChanged();
}
void SwitcherItem::setModel(QAbstractItemModel *model)
{
m_model = model;
Q_EMIT modelChanged();
}
void SwitcherItem::setVisible(bool visible)
{
if (m_visible == visible) {
return;
}
if (visible) {
Q_EMIT screenGeometryChanged();
}
m_visible = visible;
Q_EMIT visibleChanged();
}
QRect SwitcherItem::screenGeometry() const
{
return workspace()->activeOutput()->geometry();
}
void SwitcherItem::setCurrentIndex(int index)
{
if (m_currentIndex == index) {
return;
}
m_currentIndex = index;
if (m_model) {
tabBox->setCurrentIndex(m_model->index(index, 0));
}
Q_EMIT currentIndexChanged(m_currentIndex);
}
void SwitcherItem::setAllDesktops(bool all)
{
if (m_allDesktops == all) {
return;
}
m_allDesktops = all;
Q_EMIT allDesktopsChanged();
}
void SwitcherItem::setNoModifierGrab(bool set)
{
if (m_noModifierGrab == set) {
return;
}
m_noModifierGrab = set;
Q_EMIT noModifierGrabChanged();
}
bool SwitcherItem::compositing()
{
return Compositor::compositing();
}
}
}