Files
qt6-migration-pipeline/Lts/Common/LtsMultiMonitor/lts_multi_monitor.h
T

86 lines
1.9 KiB
C++
Executable File

#pragma once
#include "lts_multi_monitor_export.h"
#include <QObject>
#include <QVector>
#include <memory>
namespace LtsMultiMonitor
{
class LtsScreenBase;
class MultiMonitorSelectorBase;
class LtsScreenContainer;
class LTSMULTIMONITOR_EXPORT LtsMultiMonitor : public QObject
{
Q_OBJECT
public:
static LtsMultiMonitor *getInstance();
bool selectScreen(QWidget *widget, LtsScreenContainer *swap = nullptr, bool putOnMainIfFree = true, bool ltsScreenNormalOnly = false, const QVector<QWidget *> &irreplacableWidgets = {});
bool selectAndSwap(QWidget *widget);
void setEnableMultiMonitorMode() { m_active = true; }
void setDebugMultiMonitorMode() { m_debugMargins = true; }
bool isActive() const { return m_active; }
LtsScreenBase *widgetsScreen(QWidget *widget);
void freezeMagicCorner(int screenId);
void unfreezeMagicCorner(int screenId);
bool putScreen(QWidget *widget, int screenId, int screenPart);
bool putScreenAutomatically(QWidget *widget);
static void place(QWidget *widget);
void setSkipScreen(int screenId, int subScreenId = -1) { m_skipScreenId = screenId; m_subSkipScreenId = subScreenId; }
LtsScreenBase *mainScreen() const { return m_mainScreen; }
int screenCount() const;
private slots:
void screenDied();
private:
LtsMultiMonitor();
~LtsMultiMonitor();
static void cleanupLtsMultiMonitor();
void init();
bool cancelAndProcessIfInactive(QWidget *widget) const;
static bool isWidgetSecondary(QWidget *widget) ;
bool overlapBaseLayouts(QWidget *widget);
bool isOverlapBaseLayouts() const;
QVector<LtsScreenBase *> m_screens;
int m_nextScreenId { 0 };
LtsScreenBase *m_mainScreen;
bool m_active;
bool m_initialized;
int m_skipScreenId;
int m_subSkipScreenId;
bool m_overlapBaseLayouts;
bool m_debugMargins;
signals:
void signalQuitLoop();
void signalSelected();
void signalScreenCountChanged(int);
void signalMakeAllSwole();
};
}