aboutsummaryrefslogtreecommitdiff
path: root/src/main_qmladaptor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/main_qmladaptor.h')
-rw-r--r--src/main_qmladaptor.h103
1 files changed, 66 insertions, 37 deletions
diff --git a/src/main_qmladaptor.h b/src/main_qmladaptor.h
index 4619968..70c075b 100644
--- a/src/main_qmladaptor.h
+++ b/src/main_qmladaptor.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
@@ -26,22 +26,47 @@
#pragma once
-#include <QObject>
#include <QQmlApplicationEngine>
#include <QQuickItem>
#include <QMessageBox>
#include <QApplication>
#include <QClipboard>
-
-class MainQMLAdaptor : public QObject
+#include <QJsonObject>
+#include <QJsonDocument>
+#include <QJsonArray>
+#include <QTimer>
+
+#include "RWAHost.h"
+#include "DBusAPI.h"
+
+namespace Toast {
+ Q_NAMESPACE
+ enum ToastType {
+ ToastStandard,
+ ToastInfo,
+ ToastSuccess,
+ ToastWarning,
+ ToastError
+ };
+ Q_ENUM_NS(ToastType)
+}
+
+/*#include <QObject>
+namespace MyNamespace
{
+ Q_NAMESPACE // required for meta object creation
+ enum EnStyle {
+ STYLE_RADIAL,
+ STYLE_ENVELOPE,
+ STYLE_FILLED
+ };
+ Q_ENUM_NS(EnStyle) // register the enum in meta object data
+}*/
+
+class MainQMLAdaptor : public QObject {
Q_OBJECT
- // this makes url available as a QML property
- Q_PROPERTY(QString url READ getURL WRITE setURL NOTIFY urlChanged)
- // this makes pin available as a QML property
- Q_PROPERTY(QString pin READ getPin WRITE setPin NOTIFY pinChanged)
- // this makes session_id available as a QML property
- Q_PROPERTY(QString session_id READ getSessionID WRITE setSessionID NOTIFY sessionIDChanged)
+ // this makes rwaHostModel available as a QML property
+ Q_PROPERTY(QList<QObject*> rwaHostModel READ getRWAHostModel NOTIFY rwaHostModelChanged)
// this makes showMessageDialog available as a QML property
Q_PROPERTY(bool showMessageDialog READ getShowMessageDialog NOTIFY showMessageDialogChanged)
// this makes showMessageDialogTitle available as a QML property
@@ -51,22 +76,23 @@ class MainQMLAdaptor : public QObject
// this makes showMessageDialogIcon available as a QML property
Q_PROPERTY(QMessageBox::Icon _messageDialogIcon READ getMessageDialogIcon NOTIFY messageDialogIconChanged)
-public:
- explicit MainQMLAdaptor(QObject *parent, QQmlApplicationEngine *engine = nullptr);
-// void setSession(Session session);
+public:
+ explicit MainQMLAdaptor(QObject *parent, QQmlApplicationEngine *engine = nullptr,
+ DBusAPI *dbus_api = nullptr);
- bool setConnectButtonEnabled(bool enabled);
- bool setConnectButtonChecked(bool checked);
+ void setRWAHostModel(QList<QObject*> *rwa_hosts);
- bool setStatusIndicator(bool active, QColor color = QColor(255,255,255));
- bool setStatus(QString status);
+ void main_content_push(QString);
+ void main_content_pop(QString);
+ void main_content_replace(QString);
bool openMessageDialog(QString title, QString text, QMessageBox::Icon);
QString getMessageDialogTitle();
QString getMessageDialogText();
QMessageBox::Icon getMessageDialogIcon();
bool getShowMessageDialog();
+
signals:
void showMessageDialogChanged(bool show);
void messageDialogTextChanged(QString text);
@@ -76,22 +102,19 @@ signals:
void minimizeWindow();
void showWindow();
- void onConnectButtonClick(bool checked);
-
- void pinChanged(QString pin);
- void urlChanged(QString URL);
- void sessionIDChanged(QString session_id);
+ void rwaHostModelChanged(QList<QObject*>);
void onCloseSignal();
- void showToastSignal(QString text, QString durationMs);
+ void showToastSignal(QString text, QString durationMs, int type);
protected:
- QString _url;
- QString _pin;
- QString _session_id;
+ DBusAPI *_dbus_api;
+ QList<QObject*> *_rwaHostModel;
+
private:
- QQmlApplicationEngine* _engine;
+ QQmlApplicationEngine *_engine;
+ RWAHost *_selected_rwa_host;
bool _showMessageDialog;
QString _messageDialogTitle;
@@ -99,17 +122,23 @@ private:
QMessageBox::Icon _messageDialogIcon;
public slots:
- void handleCopyToClipboardButtonClick(QString copy_data);
- void handleConnectButtonClick(bool checked);
+ void get_web_app_hosts_response(QJsonDocument *doc);
+
+ void addRWAHost(RWAHost *rwa_host);
+ void removeRWAHost(RWAHost *rwa_host);
+ void setRWAHostSelected(bool value);
+
+ // No pointer because QML doesn't
+ // like this type much with pointer
+ QList<QObject*> getRWAHostModel();
- void setPin(QString pin);
- void setURL(QString URL);
- void setSessionID(QString session_id);
- QString getURL();
- QString getPin();
- QString getSessionID();
+ RWAHost *getSelectedRWAHost();
+ void onRwaHostSelected(QString host_uuid);
void onCloseHandler();
- void showToast(QString text, uint durationMs = 3000);
+ // arg type is actually Toast::ToastType
+ void showToast(QString text,
+ uint durationMs = 3000,
+ uint type = 0);
};