File indexing completed on 2024-04-14 15:33:38

0001 /*
0002     SPDX-FileCopyrightText: 1999 Martin R. Jones <mjones@kde.org>
0003     SPDX-FileCopyrightText: 2002 Luboš Luňák <l.lunak@kde.org>
0004     SPDX-FileCopyrightText: 2003 Oswald Buddenhagen <ossi@kde.org>
0005     SPDX-FileCopyrightText: 2008 Chani Armitage <chanika@gmail.com>
0006     SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org>
0007     SPDX-FileCopyrightText: 2015 Bhushan Shah <bhush94@gmail.com>
0008 
0009 SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #pragma once
0013 
0014 #include <QObject>
0015 #include <QRasterWindow>
0016 
0017 class GlobalAccel;
0018 
0019 namespace ScreenLocker
0020 {
0021 class AbstractLocker;
0022 
0023 class BackgroundWindow : public QRasterWindow
0024 {
0025     Q_OBJECT
0026 public:
0027     explicit BackgroundWindow(AbstractLocker *lock);
0028     ~BackgroundWindow() override;
0029 
0030     void emergencyShow();
0031 
0032 protected:
0033     void paintEvent(QPaintEvent *) override;
0034 
0035 private:
0036     AbstractLocker *m_lock;
0037     bool m_greeterFailure = false;
0038 };
0039 
0040 class AbstractLocker : public QObject
0041 {
0042     Q_OBJECT
0043 public:
0044     explicit AbstractLocker(QObject *parent);
0045     ~AbstractLocker() override;
0046 
0047     virtual void showLockWindow() = 0;
0048     virtual void hideLockWindow() = 0;
0049 
0050     virtual void addAllowedWindow(quint32 window);
0051 
0052     void setGlobalAccel(GlobalAccel *ga)
0053     {
0054         m_globalAccel = ga;
0055     }
0056 
0057     void emergencyShow();
0058 
0059 Q_SIGNALS:
0060     void userActivity();
0061     void lockWindowShown();
0062 
0063 protected:
0064     virtual void stayOnTop() = 0;
0065 
0066     GlobalAccel *globalAccel()
0067     {
0068         return m_globalAccel;
0069     }
0070     QScopedPointer<BackgroundWindow> m_background;
0071 
0072 private:
0073     GlobalAccel *m_globalAccel = nullptr;
0074 
0075     friend class BackgroundWindow;
0076 };
0077 
0078 }