File indexing completed on 2024-04-21 05:27:34
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 }