1 /* 2 KWin - the KDE window manager 3 This file is part of the KDE project. 4 5 SPDX-FileCopyrightText: 2009 Lucas Murray <lmurray@undefinedfire.com> 6 SPDX-FileCopyrightText: 2020 Cyril Rossi <cyril.rossi@enioka.com> 7 8 SPDX-License-Identifier: GPL-2.0-or-later 9 */ 10 11 #ifndef __KWINSCREENEDGE_H__ 12 #define __KWINSCREENEDGE_H__ 13 14 #include <QWidget> 15 16 #include "kwinglobals.h" 17 18 namespace KWin 19 { 20 21 class Monitor; 22 23 class KWinScreenEdge : public QWidget 24 { 25 Q_OBJECT 26 27 public: 28 explicit KWinScreenEdge(QWidget *parent = nullptr); 29 ~KWinScreenEdge() override; 30 31 void monitorHideEdge(ElectricBorder border, bool hidden); 32 void monitorEnableEdge(ElectricBorder border, bool enabled); 33 34 void monitorAddItem(const QString &item); 35 void monitorItemSetEnabled(int index, bool enabled); 36 37 QList<int> monitorCheckEffectHasEdge(int index) const; 38 int selectedEdgeItem(ElectricBorder border) const; 39 40 void monitorChangeEdge(ElectricBorder border, int index); 41 void monitorChangeEdge(const QList<int> &borderList, int index); 42 43 void monitorChangeDefaultEdge(ElectricBorder border, int index); 44 void monitorChangeDefaultEdge(const QList<int> &borderList, int index); 45 46 // revert to reference settings and assess for saveNeeded and default changed 47 virtual void reload(); 48 // reset to default settings and assess for saveNeeded and default changed 49 virtual void setDefaults(); 50 51 public Q_SLOTS: 52 void onChanged(); 53 void createConnection(); 54 55 Q_SIGNALS: 56 void saveNeededChanged(bool isNeeded); 57 void defaultChanged(bool isDefault); 58 59 private: 60 virtual Monitor *monitor() const = 0; 61 virtual bool isSaveNeeded() const; 62 virtual bool isDefault() const; 63 64 // internal use, return Monitor::None if border equals ELECTRIC_COUNT or ElectricNone 65 static int electricBorderToMonitorEdge(ElectricBorder border); 66 static ElectricBorder monitorEdgeToElectricBorder(int edge); 67 68 private: 69 QHash<ElectricBorder, int> m_reference; // reference settings 70 QHash<ElectricBorder, int> m_default; // default settings 71 }; 72 73 } // namespace 74 75 #endif 76