File indexing completed on 2024-05-19 04:29:53
0001 /* 0002 * SPDX-FileCopyrightText: 2023 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISSCREENMIGRATIONTRACKER_H 0008 #define KISSCREENMIGRATIONTRACKER_H 0009 0010 #include <QObject> 0011 #include <kritawidgetutils_export.h> 0012 #include <kis_signal_auto_connection.h> 0013 0014 0015 class QScreen; 0016 class QWidget; 0017 class KisSignalCompressor; 0018 0019 class KRITAWIDGETUTILS_EXPORT KisScreenMigrationTracker : public QObject 0020 { 0021 Q_OBJECT 0022 public: 0023 KisScreenMigrationTracker(QWidget *trackedWidget, QObject *parent = nullptr); 0024 0025 QScreen* currentScreen() const; 0026 0027 private Q_SLOTS: 0028 void slotScreenChanged(QScreen *screen); 0029 void slotScreenResolutionChanged(qreal value); 0030 void slotScreenLogicalResolutionChanged(qreal value); 0031 void slotResolutionCompressorTriggered(); 0032 0033 Q_SIGNALS: 0034 void sigScreenChanged(QScreen *screen); 0035 void sigScreenOrResolutionChanged(QScreen *screen); 0036 0037 private: 0038 void connectScreenSignals(QScreen *screen); 0039 0040 private: 0041 Q_DISABLE_COPY_MOVE(KisScreenMigrationTracker) 0042 0043 QWidget *m_trackedWidget {nullptr}; 0044 KisSignalAutoConnectionsStore m_screenConnections; 0045 KisSignalCompressor *m_resolutionChangeCompressor; 0046 }; 0047 0048 #endif // KISSCREENMIGRATIONTRACKER_H