69 lines
1.6 KiB
C++
Executable File
69 lines
1.6 KiB
C++
Executable File
#pragma once
|
|
|
|
#include "lts_screen_base.h" // enum WidgetType
|
|
|
|
#include <lts_multi_monitor_export.h> // TODO: export needed?
|
|
|
|
#include <QWidget>
|
|
#include <QRect>
|
|
|
|
|
|
class QHBoxLayout;
|
|
|
|
|
|
namespace LtsMultiMonitor
|
|
{
|
|
class LTSMULTIMONITOR_EXPORT LtsScreenContainer : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
LtsScreenContainer(QRect screenGeo);
|
|
|
|
bool isIrreplaceable() const;
|
|
bool isEmpty() const;
|
|
bool hasMainWidget();
|
|
bool hasSecondaryWidget();
|
|
void setWidget(QWidget *widget);
|
|
bool hasWidget(QWidget *widget) const;
|
|
QWidget *widget() noexcept(false);
|
|
QWidget *stealWidget() noexcept(false);
|
|
void switchToTemp(LtsScreenBase::WidgetType widgetType);
|
|
void finalizeSwitch();
|
|
void revertSwitch();
|
|
bool mainAndSecondaryOccupied() const;
|
|
QIcon mainWindowIcon() const;
|
|
QIcon secondaryWindowIcon() const;
|
|
LtsScreenBase::WidgetType activeWidgetType() const;
|
|
bool isInactiveWidgetOccupied() const;
|
|
|
|
signals:
|
|
void check();
|
|
void signalSetCornerIcons();
|
|
|
|
private:
|
|
QHBoxLayout *m_layout { nullptr };
|
|
QWidget *m_mainWidget { nullptr }; // TODO C++17: to optional :(
|
|
QWidget *m_secondaryWidget { nullptr }; // TODO C++17: to optional :(
|
|
QWidget **m_activeWidget { nullptr };
|
|
QWidget **m_oldActiveWidget { nullptr };
|
|
bool m_nullSwitchActive { false };
|
|
QRect m_screenGeo;
|
|
|
|
QString geoStr() const;
|
|
bool tryPutDummyUnmanaged(QWidget *widget);
|
|
void vanish();
|
|
void reappear();
|
|
QWidget *activeWidget() const;
|
|
QWidget **activeWidgetPtr();
|
|
|
|
public slots:
|
|
void toggle();
|
|
|
|
private slots:
|
|
//void slotOverlayDestroyed();
|
|
void slotChildDestroyed();
|
|
};
|
|
|
|
} // namespace LtsMultiMonitor
|