You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
settings/src/cscreenmanager.cpp

61 lines
1.5 KiB
C++

#include "cscreenmanager.h"
#include <QDebug>
#include <QGuiApplication>
CScreenManager::CScreenManager(QObject *parent)
: QObject(parent)
, m_lastOutputId(-1)
{
for (const QScreen *qscreen : QGuiApplication::screens()) {
screenAdded(qscreen);
}
connect(qApp, &QGuiApplication::screenAdded, this, &CScreenManager::screenAdded);
connect(qApp, &QGuiApplication::screenRemoved, this, &CScreenManager::screenRemoved);
}
QMap<int, CScreenOutput *> CScreenManager::outputMap() const
{
return m_outputMap;
}
int CScreenManager::outputId(const QScreen *qscreen)
{
QList<int> ids;
for (auto output : qAsConst(m_outputMap)) {
if (qscreen == output->qscreen()) {
return output->id();
}
}
m_lastOutputId++;
return m_lastOutputId;
}
void CScreenManager::screenAdded(const QScreen *qscreen)
{
CScreenOutput *output = new CScreenOutput;
output->setId(outputId(qscreen));
output->setName(qscreen->name());
m_outputMap.insert(output->id(), output);
// if (!m_blockSignals) {
// Q_EMIT configChanged(toKScreenConfig());
// }
}
void CScreenManager::screenRemoved(QScreen *qscreen)
{
int removedOutputId = -1;
for (auto output : m_outputMap) {
if (output->qscreen() == qscreen) {
removedOutputId = output->id();
m_outputMap.remove(removedOutputId);
delete output;
}
}
// Q_EMIT configChanged(toKScreenConfig());
}