1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// SPDX-FileCopyrightText: 2024 Arjen Hiemstra <ahiemstra@heimr.nl>
// SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
#pragma once
#include "RdpConnection.h"
#include <AbstractSession.h>
#include <KStatusNotifierItem>
#include <vector>
#include <QObject>
namespace KRdp
{
class AbstractSession;
class Server;
class RdpConnection;
}
class SessionWrapper;
class SessionController : public QObject
{
Q_OBJECT
public:
enum class SessionType {
Portal,
Plasma,
};
SessionController(KRdp::Server *server, SessionType sessionType);
~SessionController() override;
void setVirtualMonitor(const KRdp::VirtualMonitor &vm);
void setMonitorIndex(const std::optional<int> &index);
void setQuality(const std::optional<int> &quality);
void setSNIStatus(const KRdp::RdpConnection::State state);
void stopFromSNI();
private:
void onNewConnection(KRdp::RdpConnection *newConnection);
std::unique_ptr<KRdp::AbstractSession> makeSession();
KRdp::Server *m_server = nullptr;
SessionType m_sessionType;
std::optional<int> m_monitorIndex;
std::optional<int> m_quality;
std::optional<KRdp::VirtualMonitor> m_virtualMonitor;
std::unique_ptr<KRdp::AbstractSession> m_initializationSession;
std::vector<std::unique_ptr<SessionWrapper>> m_wrappers;
KStatusNotifierItem *m_sni;
};
|