diff options
Diffstat (limited to 'src/session.h')
-rw-r--r-- | src/session.h | 95 |
1 files changed, 41 insertions, 54 deletions
diff --git a/src/session.h b/src/session.h index 1b8b2d6..e1c924f 100644 --- a/src/session.h +++ b/src/session.h @@ -1,8 +1,8 @@ /* * This file is part of Remote Support Desktop * https://gitlab.das-netzwerkteam.de/RemoteWebApp/rwa.support.desktopapp - * Copyright 2020-2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de> - * Copyright 2020-2021 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> + * Copyright 2020, 2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de> + * Copyright 2020, 2021 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> * SPDX-License-Identifier: GPL-2.0-or-later * * This program is free software; you can redistribute it and/or modify @@ -24,94 +24,81 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#pragma once +#ifndef SESSION_H +#define SESSION_H #include <QObject> #include <QQmlApplicationEngine> #include <QQuickItem> #include <QTimerEvent> #include <QTranslator> -#include <QtDBus/QtDBus> -#include "RWADBusAdaptor.h" -#include "main_qmladaptor.h" +#include "RWAHost.h" +#include "DBusAPI.h" -class Session : public QObject -{ +class Session : public QObject { Q_OBJECT - Q_PROPERTY(QString host_id READ getHostID NOTIFY hostIDChanged) - // this makes status available as a QML property - Q_PROPERTY(QString status READ getStatus NOTIFY statusChanged) - // this makes service id available as a QML property - Q_PROPERTY(QString id READ getID NOTIFY idChanged) - // this makes session_id available as a QML property - Q_PROPERTY(QString session_id READ getSessionID NOTIFY sessionIDChanged) - // this makes url available as a QML property - Q_PROPERTY(QString url READ getURL NOTIFY urlChanged) - // this makes pin available as a QML property - Q_PROPERTY(QString pin READ getPin NOTIFY pinChanged) public: - explicit Session(QObject *parent, MainQMLAdaptor *main_gui = nullptr); + explicit Session(DBusAPI *dbus_api = nullptr, + RWAHost *host = nullptr); + ~Session(); QString getStatus(); QString getURL(); - QString getID(); - QString getHostID(); QString getSessionID(); QString getPin(); + RWAHost* getHost(); void setStatus(QString status); void setURL(QString url); - void setID(QString id); - void setHostID(QString host_id); void setSessionID(QString session_id); void setPin(QString pin); + void setHost(RWAHost *host); - // Starts a VNC Session - void start_request_dbus(QString host_id); - // Refreshes a VNC Session's status - void refresh_status_request_dbus(QString host_id, QString id); - // Stop the Session - void stop_request_dbus(QString id); - // Gets a VNC Session's status - void status_request_dbus(QString id); - // Returns true if Session is somewhat usable (Running, Alive, etc..) - bool isSessionAliveOrRunning(QString status); - -protected: - QString _status; - void statusTimerEvent(); - void init_vars(); + void start(); + void stop(); + void status(); + void refresh_status(); + + bool started; private: - MainQMLAdaptor* _main_gui; - QString _id; + void statusTimerEvent(); + + bool _emitted_status_error_already; + QString _status; + RWAHost *_host; + DBusAPI *_dbus_api; + QString _session_id; - QString _host_id; QString _url; QString _pin; - OrgArcticaProjectRWASupportSessionServiceInterface* _dbus_rwa; - void _initDBus(); bool _minimizedBefore = false; - void minimizeWindow(); signals: - void finished(); void statusChanged(QString); - void idChanged(QString); void sessionIDChanged(QString); void urlChanged(QString); void pinChanged(QString); - void hostIDChanged(QString); + void hostChanged(RWAHost*); -public slots: - void handleConnectButtonClick(bool checked); + void startFailed(QString error_message); + void stopFailed(QString error_message); + void statusFailed(QString error_message); - void start_dbus_replied(QDBusPendingCallWatcher *call); - void stop_dbus_replied(QDBusPendingCallWatcher *call); - void status_dbus_replied(QDBusPendingCallWatcher *call); + void startSucceeded(); + void stopSucceeded(); + void statusSucceeded(); - void onCloseHandler(); +public slots: + // Returns true if a session is somewhat usable (Running, Alive, etc..) + bool isSessionAliveOrRunning(); + + void start_response(QJsonDocument*); + void stop_response(QJsonDocument*); + void status_response(QJsonDocument*); }; + +#endif // SESSION_H |