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