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