File indexing completed on 2024-04-21 16:35:01

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