aboutsummaryrefslogtreecommitdiff
path: root/src/session.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/session.h')
-rw-r--r--src/session.h95
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