File indexing completed on 2024-05-05 05:38:40

0001 /*
0002     ksmserver - the KDE session management server
0003 
0004     SPDX-FileCopyrightText: 2016 Martin Graesslin <mgraesslin@kde.org>
0005     SPDX-FileCopyrightText: 2018 David Edmundson <davidedmundson@kde.org>
0006 
0007     SPDX-License-Identifier: MIT
0008 */
0009 
0010 #pragma once
0011 
0012 #include <QList>
0013 #include <QObject>
0014 
0015 #include <kworkspace.h>
0016 
0017 #include <KPackage/Package>
0018 #include <KPackage/PackageLoader>
0019 
0020 class KSMShutdownDlg;
0021 
0022 class QScreen;
0023 
0024 class Greeter : public QObject
0025 {
0026     Q_OBJECT
0027 public:
0028     Greeter(const KPackage::Package &package);
0029     ~Greeter() override;
0030 
0031     void init();
0032     void enableWindowed();
0033 
0034     bool eventFilter(QObject *watched, QEvent *event) override;
0035 
0036 public Q_SLOTS:
0037     void promptLogout();
0038     void promptShutDown();
0039     void promptReboot();
0040     void promptAll();
0041 
0042 private:
0043     void adoptScreen(QScreen *screen);
0044     void rejected();
0045     void setupWaylandIntegration();
0046 
0047     bool m_running = false;
0048 
0049     KWorkSpace::ShutdownType m_shutdownType = KWorkSpace::ShutdownTypeHalt;
0050     QList<KSMShutdownDlg *> m_dialogs;
0051     bool m_windowed = false;
0052     KPackage::Package m_package;
0053 };