File indexing completed on 2024-04-28 16:54:46

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 <QObject>
0013 #include <QVector>
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 
0041 private:
0042     void adoptScreen(QScreen *screen);
0043     void rejected();
0044     void setupWaylandIntegration();
0045 
0046     bool m_running = false;
0047 
0048     KWorkSpace::ShutdownType m_shutdownType = KWorkSpace::ShutdownTypeHalt;
0049     QVector<KSMShutdownDlg *> m_dialogs;
0050     bool m_windowed = false;
0051     KPackage::Package m_package;
0052 };