File indexing completed on 2024-04-28 16:54:34

0001 /*
0002     SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 #include <QSharedPointer>
0011 
0012 #include <KScreen/Config>
0013 
0014 namespace NotificationManager
0015 {
0016 /**
0017  * @short Tracks whether there are any mirrored screens
0018  *
0019  * @author Kai Uwe Broulik <kde@privat.broulik.de>
0020  **/
0021 class MirroredScreensTracker : public QObject
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     ~MirroredScreensTracker();
0027 
0028     using Ptr = QSharedPointer<MirroredScreensTracker>;
0029     static Ptr createTracker();
0030 
0031     bool screensMirrored() const;
0032     /**
0033      * Set whether screens are mirrored
0034      *
0035      * This is public so that automatic do not disturb mode when screens are mirrored
0036      * can be disabled temporarily until screen configuration changes again.
0037      */
0038     void setScreensMirrored(bool mirrored);
0039     Q_SIGNAL void screensMirroredChanged(bool mirrored);
0040 
0041 private:
0042     MirroredScreensTracker();
0043     Q_DISABLE_COPY(MirroredScreensTracker)
0044 
0045     void checkScreensMirrored();
0046 
0047     KScreen::ConfigPtr m_screenConfiguration;
0048     bool m_screensMirrored = false;
0049 };
0050 
0051 } // namespace NotificationManager