File indexing completed on 2024-03-24 05:57:04
0001 /* 0002 SPDX-FileCopyrightText: 2009 Tom Albers <toma@kde.org> 0003 SPDX-FileCopyrightText: 2010 Juan Luis Baptiste <juan.baptiste@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef BREAKBASE_H 0009 #define BREAKBASE_H 0010 0011 #include <QHash> 0012 #include <QObject> 0013 #include <QWidget> 0014 0015 class BreakControl; 0016 class GrayWidget; 0017 class GrayEffectOnAllScreens; 0018 0019 class BreakBase : public QObject 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 explicit BreakBase(QObject *parent); 0025 ~BreakBase(); 0026 virtual void activate(); 0027 virtual void deactivate(); 0028 virtual void setLabel(const QString &); 0029 void setReadOnly(bool); 0030 bool readOnly() const; 0031 void showMinimize(bool); 0032 void showLock(bool); 0033 void showPostpone(bool); 0034 void disableShortcut(bool disable); 0035 void setGrayEffectOnAllScreens(bool on); 0036 void setGrayEffectLevel(int level); 0037 void excludeGrayEffectOnScreen(QScreen *screen); 0038 0039 protected: 0040 bool eventFilter(QObject *obj, QEvent *event) override; 0041 0042 signals: 0043 void skip(); 0044 void lock(); 0045 void postpone(); 0046 0047 private: 0048 BreakControl *m_breakControl; 0049 GrayEffectOnAllScreens *m_grayEffectOnAllScreens; 0050 bool m_readOnly; 0051 bool m_disableShortcut; 0052 bool m_grayEffectOnAllScreensActivated; 0053 }; 0054 0055 class GrayEffectOnAllScreens 0056 { 0057 public: 0058 GrayEffectOnAllScreens(); 0059 ~GrayEffectOnAllScreens(); 0060 void activate(); 0061 void deactivate(); 0062 void setLevel(int val); 0063 void disable(QScreen *screen); 0064 0065 private: 0066 QHash<QScreen *, GrayWidget *> m_widgets; 0067 }; 0068 0069 class GrayWidget : public QWidget 0070 { 0071 Q_OBJECT 0072 0073 public: 0074 /** 0075 * Constructor 0076 * @param parent Parent Widget 0077 */ 0078 explicit GrayWidget(QWidget *parent = nullptr); 0079 void setLevel(int); 0080 0081 protected: 0082 bool event(QEvent *event) override; 0083 }; 0084 0085 #endif // BREAKBASE_H