86 lines
1.9 KiB
C++
Executable File
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();
|
|
|
|
};
|
|
|
|
}
|