File indexing completed on 2024-05-12 09:36:13

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Sebastian Kügler <sebas@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include "types.h"
0010 
0011 #include <QScreen>
0012 
0013 namespace KScreen
0014 {
0015 class Output;
0016 class QScreenOutput;
0017 class QScreenScreen;
0018 
0019 class QScreenConfig : public QObject
0020 {
0021     Q_OBJECT
0022 
0023 public:
0024     explicit QScreenConfig(QObject *parent = nullptr);
0025     ~QScreenConfig() override;
0026 
0027     KScreen::ConfigPtr toKScreenConfig() const;
0028     void updateKScreenConfig(KScreen::ConfigPtr &config) const;
0029 
0030     QMap<int, QScreenOutput *> outputMap() const;
0031     int outputId(const QScreen *qscreen);
0032 
0033 private Q_SLOTS:
0034     void screenAdded(const QScreen *qscreen);
0035     void screenRemoved(QScreen *qscreen);
0036 
0037 Q_SIGNALS:
0038     void configChanged(const KScreen::ConfigPtr &config);
0039 
0040 private:
0041     QMap<int, QScreenOutput *> m_outputMap;
0042     QScreenScreen *m_screen;
0043     int m_lastOutputId = -1;
0044     bool m_blockSignals;
0045 };
0046 
0047 } // namespace