#pragma once #include #include #include #include #include #include #include "RWADBusAdaptor.h" #include "main_qmladaptor.h" //#include "session.cpp" class Session : public QObject { Q_OBJECT Q_PROPERTY(QString status READ getStatus NOTIFY statusChanged) // this makes status available as a QML property Q_PROPERTY(int id READ getId NOTIFY idChanged ) // this makes id available as a QML property Q_PROPERTY(QString url READ getURL NOTIFY urlChanged ) // this makes url available as a QML property Q_PROPERTY(QString pin READ getPin NOTIFY pinChanged ) // this makes pin available as a QML property public: explicit Session(QObject *parent, MainQMLAdaptor *main_gui = nullptr); QString getStatus(); QString getURL(); int getId(); QString getPin(); void setStatus(QString status); void setURL(QString url); void setId(int id); void setPin(QString pin); // Starts a VNC Session void start_request_dbus(); // Refreshes a VNC Session's status void refresh_status_request_dbus(int pid); // Stop the Session void stop_request_dbus(int pid); // Gets a VNC Session's status void status_request_dbus(int pid); // Returns true if Session is somewhat usable (Running, Alive, etc..) bool isSessionAliveOrRunning(QString status); protected: QString _status; void statusTimerEvent(); void init_vars(); private: MainQMLAdaptor* _main_gui; int _id; QString _url; QString _pin; OrgArcticaProjectRWAInterface* _dbus_rwa; void _initDBus(); bool _minimizedBefore = false; signals: void finished(); void statusChanged(QString status); void idChanged(int id); void urlChanged(QString URL); void pinChanged(QString pin); public slots: void handleConnectButtonClick(bool checked); void start_dbus_replied(QDBusPendingCallWatcher *call); void stop_dbus_replied(QDBusPendingCallWatcher *call); void status_dbus_replied(QDBusPendingCallWatcher *call); void onCloseHandler(); };