aboutsummaryrefslogtreecommitdiff
path: root/src/scenes
diff options
context:
space:
mode:
authorDaniel Teichmann <daniel.teichmann@das-netzwerkteam.de>2021-08-10 14:56:44 +0200
committerDaniel Teichmann <daniel.teichmann@das-netzwerkteam.de>2021-08-10 14:56:44 +0200
commit6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a (patch)
treecd2c53b90bb13375df387414e99e6d8e7509e2a9 /src/scenes
parentafeb0381f568b4c9f51296cd5de325c8c8aac3f2 (diff)
downloadRWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.tar.gz
RWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.tar.bz2
RWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.zip
Complete restructure of current code tree
Diffstat (limited to 'src/scenes')
-rw-r--r--src/scenes/Scene_no_server_available.qml71
-rw-r--r--src/scenes/Scene_placeholder.qml56
-rw-r--r--src/scenes/Scene_remote_view.qml371
-rw-r--r--src/scenes/Scene_settings.qml34
-rw-r--r--src/scenes/add_rwahost_wizard/Scene_step_1.qml282
-rw-r--r--src/scenes/add_rwahost_wizard/add_rwahost_wizard.cpp124
-rw-r--r--src/scenes/add_rwahost_wizard/add_rwahost_wizard.h61
-rw-r--r--src/scenes/remote_control/Scene_remote_control.qml382
-rw-r--r--src/scenes/remote_control/remote_control_manager.cpp511
-rw-r--r--src/scenes/remote_control/remote_control_manager.h78
10 files changed, 0 insertions, 1970 deletions
diff --git a/src/scenes/Scene_no_server_available.qml b/src/scenes/Scene_no_server_available.qml
deleted file mode 100644
index 7b99b55..0000000
--- a/src/scenes/Scene_no_server_available.qml
+++ /dev/null
@@ -1,71 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Dialogs 1.2
-import QtQuick.Controls.Material 2.3
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_no_server_available
- objectName: "Scene_no_server_available"
-
- Rectangle {
- id: rectangle
- anchors.fill: parent
- color: Material.background
-
- Text {
- color: Material.foreground
- id: title
-
- text: qsTr("Welcome!")
- font.pointSize: 20
- font.bold: true
- wrapMode: Text.WordWrap
-
- horizontalAlignment: Text.AlignLeft
-
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.margins: 15
- }
-
- Text {
- color: Material.foreground
- anchors.top: title.bottom
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.margins: 15
-
- horizontalAlignment: Text.AlignLeft
- wrapMode: Text.WordWrap
- /*: 'Add RWA-Server' has to be replaced with the correct translation in file main.qml .*/
- font.pointSize: 13
- text: qsTr("You need to add and select the remote \
-web app server to which you want to connect. \
-You can see a button to the left in the menu \
-which says 'Add RWA-Server'. Follow the steps \
-listed there and you can start your remote \
-support session afterwards using the buttons \
-above 'Add RWA-Server'.")
- }
- }
-}
-
-
-
-
-
-
-
-/*##^## Designer {
- D{i:0;autoSize:true;height:480;width:640}
-}
- ##^##*/
diff --git a/src/scenes/Scene_placeholder.qml b/src/scenes/Scene_placeholder.qml
deleted file mode 100644
index f492e00..0000000
--- a/src/scenes/Scene_placeholder.qml
+++ /dev/null
@@ -1,56 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Dialogs 1.2
-import QtQuick.Controls.Material 2.3
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_placeholder
- objectName: "Scene_placeholder"
-
- Rectangle {
- id: rectangle
- anchors.fill: parent
- color: Material.background
-
- Text {
- color: Material.foreground
- id: title
-
- text: qsTr("This is the placeholder scene!")
- font.pointSize: 18
- wrapMode: Text.WordWrap
-
- font.bold: true
- horizontalAlignment: Text.AlignHCenter
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.margins: 5
- }
-
- Text {
- color: Material.foreground
- anchors.top: title.bottom
- anchors.margins: 5
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
-
- wrapMode: Text.WordWrap
- text: qsTr("The features you expected here are not yet implemented.")
- horizontalAlignment: Text.AlignHCenter
- }
- }
-}
-
-/*##^## Designer {
- D{i:0;autoSize:true;height:480;width:640}
-}
- ##^##*/
diff --git a/src/scenes/Scene_remote_view.qml b/src/scenes/Scene_remote_view.qml
deleted file mode 100644
index 436d8aa..0000000
--- a/src/scenes/Scene_remote_view.qml
+++ /dev/null
@@ -1,371 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Dialogs 1.2
-import QtQuick.Controls.Material 2.3
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_remote_view
- objectName: "Scene_remote_view"
-
- Label {
- id: dbus_api_status_text
- text: "Unknown state of Service"
- anchors.leftMargin: 10 + 5 + dbus_api_status_indicator.width
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 10
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- verticalAlignment: Text.AlignVCenter
- font.pointSize: 11
- fontSizeMode: Text.Fit
- objectName: "dbus_api_status_text"
- anchors.left: parent.left
-
- StatusIndicator {
- id: dbus_api_status_indicator
- width: height
- height: parent.height
- objectName: "dbus_api_status_indicator"
- color: "#73d216"
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.left
- anchors.rightMargin: 5
- active: false
- }
- }
-
- Label {
- id: explain_function_label
- text: qsTr("Please tell your remote support partner your access address and your access-PIN to let your partner connect to this computer.")
- font.pixelSize: 18
- fontSizeMode: Text.VerticalFit
- wrapMode: Text.WordWrap
- anchors.left: parent.left
- anchors.leftMargin: 10
- anchors.top: parent.top
- anchors.topMargin: 10
- anchors.right: parent.right
- anchors.rightMargin: 10
- horizontalAlignment: Text.AlignLeft
- enabled: false
-
- color: Material.theme == Material.Light ? "#000000" : "#FFFFFF"
- }
-
- Rectangle {
- id: dbus_api_status_line
- y: 379
- height: 1
- radius: 1
- anchors.right: parent.right
- anchors.rightMargin: 10
- anchors.bottom: dbus_api_status_text.top
- anchors.bottomMargin: 10
- opacity: 0.3
- gradient: Gradient {
- GradientStop {
- position: 0.391
- color: "#ffffff"
- }
-
- GradientStop {
- position: 0.975
- color: "#8b8b8b"
- }
- }
- border.width: 1
- border.color: "#00000000"
- anchors.left: parent.left
- anchors.leftMargin: 10
- }
-
- Column {
- id: column
- spacing: 6
- anchors.right: parent.right
- anchors.rightMargin: 10
- anchors.left: parent.left
- anchors.leftMargin: 10
- anchors.bottom: dbus_api_status_line.top
- anchors.bottomMargin: 10
- anchors.top: explain_function_label.bottom
- anchors.topMargin: 10
-
- Column {
- id: url_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_url_text
- height: parent.height/2
- text: qsTr("Remote viewing Address")
- font.weight: Font.Bold
- font.bold: true
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- font.pointSize: 14
- fontSizeMode: Text.Fit
- }
-
- TextEdit {
- id: url_text
- height: parent.height/2
- text: mainqmladaptor.url
- anchors.rightMargin: 10 + copy_url_to_clipboard_button.width
- anchors.right: parent.right
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- anchors.leftMargin: 10
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignLeft
- font.pointSize: 15
-
- readOnly: true
- color: Material.foreground
- selectByMouse: true
- anchors.left: parent.left
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: url_text.height
- // whole line + copy-into-clipboard button + some margin
- width: url_text.width + copy_url_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- Button {
- id: copy_url_to_clipboard_button
- width: copy_url_to_clipboard_image.width + 6
- height: copy_url_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- display: AbstractButton.IconOnly
- anchors.leftMargin: 5
- anchors.left: url_text.right
- highlighted: false
- flat: true
-
- Image {
- id: copy_url_to_clipboard_image
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
- source: "../../images/into-clipboard.svg"
- opacity: 0.65
- }
-
- onClicked: {
- mainqmladaptor.handleCopyToClipboardButtonClick(url_text.text);
- toast.show(qsTr("Copied access address into clipboard!"), "1000");
- }
-
- ToolTip.text: qsTr("Copy the access address into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 1000
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- Column {
- id: session_id_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_session_id_text
- height: parent.height/2
- text: qsTr("Session-ID")
- font.weight: Font.Bold
- font.bold: true
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- font.pointSize: 14
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- fontSizeMode: Text.Fit
- }
-
- TextEdit {
- objectName: "session_id_text"
- id: session_id_text
- height: parent.height/2
- text: mainqmladaptor.session_id
- font.letterSpacing: 10
- anchors.rightMargin: 10 + copy_session_id_to_clipboard_button.width
- anchors.right: parent.right
- font.pointSize: 15
- anchors.left: parent.left
- anchors.leftMargin: 10
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignVCenter
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: url_text.height
- // whole line + copy-into-clipboard button + some margin
- width: url_text.width + copy_url_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- readOnly: true
- color: Material.foreground
- wrapMode: Text.WordWrap
- selectByMouse: true
-
- Button {
- id: copy_session_id_to_clipboard_button
- width: copy_session_id_to_clipboard_image.width + 6
- height: copy_session_id_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- flat: true
- display: AbstractButton.IconOnly
- anchors.left: session_id_text.right
- anchors.leftMargin: 5
-
- Image {
- id: copy_session_id_to_clipboard_image
- anchors.horizontalCenter: parent.horizontalCenter
- opacity: 0.65
- anchors.verticalCenter: parent.verticalCenter
- source: "../../images/into-clipboard.svg"
- fillMode: Image.PreserveAspectFit
- }
-
- onClicked: {
- mainqmladaptor.handleCopyToClipboardButtonClick(pin_text.text);
- toast.show(qsTr("Copied session-ID into clipboard!"), "1000");
- }
-
- ToolTip.text: qsTr("Copy the session-ID into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 1000
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- Column {
- id: pin_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_pin_text
- height: parent.height/2
- text: qsTr("Access-PIN")
- font.weight: Font.Bold
- font.bold: true
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- font.pointSize: 14
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- }
-
- TextEdit {
- objectName: "pin_text"
- id: pin_text
- height: parent.height/2
- text: mainqmladaptor.pin
- anchors.rightMargin: 10 + copy_pin_to_clipboard_button.width
- anchors.right: parent.right
- font.pointSize: 15
- anchors.left: parent.left
- anchors.leftMargin: 10
- font.letterSpacing: 10
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignVCenter
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: url_text.height
- // whole line + copy-into-clipboard button + some margin
- width: url_text.width + copy_url_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- readOnly: true
- color: Material.foreground
- wrapMode: Text.WordWrap
- selectByMouse: true
-
- Button {
- id: copy_pin_to_clipboard_button
- width: copy_pin_to_clipboard_image.width + 6
- height: copy_pin_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- flat: true
- display: AbstractButton.IconOnly
- anchors.left: pin_text.right
- anchors.leftMargin: 5
-
- Image {
- id: copy_pin_to_clipboard_image
- anchors.verticalCenter: parent.verticalCenter
- opacity: 0.65
- anchors.horizontalCenter: parent.horizontalCenter
- source: "../../images/into-clipboard.svg"
- fillMode: Image.PreserveAspectFit
- }
-
- onClicked: {
- mainqmladaptor.handleCopyToClipboardButtonClick(pin_text.text);
- toast.show(qsTr("Copied PIN into clipboard!"), "1000");
- }
-
- ToolTip.text: qsTr("Copy the pin into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 1000
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- }
-
- Button {
- id: start_support_button
- height: Math.min(50)
- objectName: "start_support_button"
- text: qsTr("Start remote viewing session")
- anchors.rightMargin: column.anchors.leftMargin
- anchors.bottom: dbus_api_status_line.top
- anchors.bottomMargin: 10
- anchors.right: parent.right
- checkable: true
-
- onClicked: mainqmladaptor.handleConnectButtonClick(checked);
- }
-}
-
-/*##^## Designer {
- D{i:0;autoSize:true;height:480;width:640}
-}
- ##^##*/
diff --git a/src/scenes/Scene_settings.qml b/src/scenes/Scene_settings.qml
deleted file mode 100644
index e2f89da..0000000
--- a/src/scenes/Scene_settings.qml
+++ /dev/null
@@ -1,34 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Dialogs 1.2
-import QtQuick.Controls.Material 2.3
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_settings
- objectName: "Scene_settings"
-
- Rectangle {
- id: rectangle
- anchors.fill: parent
- color: Material.background
-
- Text {
- color: Material.foreground
- text: "Settings tab!"
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
- }
- }
-}
-
-/*##^## Designer {
- D{i:0;autoSize:true;height:480;width:640}
-}
- ##^##*/
diff --git a/src/scenes/add_rwahost_wizard/Scene_step_1.qml b/src/scenes/add_rwahost_wizard/Scene_step_1.qml
deleted file mode 100644
index 873e0fd..0000000
--- a/src/scenes/add_rwahost_wizard/Scene_step_1.qml
+++ /dev/null
@@ -1,282 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Controls.Material 2.3
-import rwa.toast.type 1.0
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_server_wizard_step_1
- objectName: "Scene_step_1"
-
- Connections {
- target: add_rwahost_wizard
- function onStep1Success() {
- // Go onto the first page of the stack.
- main_content_pop(null)
- mainqmladaptor.showToast(qsTr("Successfully added remote web app host."),
- 5000,
- ToastType.ToastSuccess);
- }
- }
-
- Connections {
- target: add_rwahost_wizard
- function onStep1Failed(reason, toast_type) {
- mainqmladaptor.showToast(reason,
- 5000,
- toast_type)
- }
- }
-
- Rectangle {
- id: rectangle
- anchors.fill: parent
- color: Material.background
-
- Button {
- id: next_step1_button
- text: qsTr("Next Step")
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 15
- anchors.right: parent.right
- anchors.rightMargin: 15
-
- onClicked: {
- add_rwahost_wizard.processStep1(host_url.text, host_alias.text)
- }
- }
-
- /*Text {
- color: Material.foreground
- id: step_indicator
-
- text: qsTr("Step 1")
- anchors.leftMargin: 15
- anchors.top: parent.top
- anchors.topMargin: 15
- font.pointSize: 21
- wrapMode: Text.WordWrap
-
- font.bold: true
- horizontalAlignment: Text.AlignHCenter
- anchors.left: parent.left
- anchors.margins: 5
- }*/
-
- Text {
- color: Material.foreground
- id: explaining_text
-
- text: qsTr("Please input the address for the "+
- "remote web app server which you want "+
- "to connect to.\nIf you don't know "+
- "what this means, ask your local "+
- "administrator about it please.\nBefore you can "+
- "start any remote sessions you will have to "+
- "be approved for remote support.")
- font.pointSize: 12
- anchors.right: parent.right
- anchors.rightMargin: 15
- anchors.leftMargin: 15
- anchors.top: parent.top //step_indicator.bottom
- anchors.topMargin: 15
- wrapMode: Text.WordWrap
-
- anchors.left: parent.left
- anchors.margins: 5
- }
-
- TextField {
- id: host_url
- selectByMouse: true
- placeholderText: qsTr("http://example.com:8000")
-
- font.pixelSize: 16
- color: Material.foreground
- anchors.topMargin: 30
-
- padding: 15
- topPadding: 15
-
- anchors.top: explaining_text.bottom
- anchors.left: parent.left
- anchors.leftMargin: 15
- anchors.right: parent.right
- anchors.margins: 30
-
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
- onHoveredChanged: {
- if (containsMouse) {
- host_url_background.state = "hovered"
- } else if (!host_url.focus) {
- host_url_background.state = "unhovered"
- }
- }
- onClicked: {
- host_url.forceActiveFocus();
- }
- }
-
- onFocusChanged: {
- host_url_background.state = host_url.focus ? "hovered" : "unhovered"
- }
-
- background: Rectangle {
- id: host_url_background
- color: Material.background
- border.color: Material.foreground
- border.width: 1
- radius: 4
-
- states: [
- State {
- name: "hovered"
- PropertyChanges {
- target: host_url_background
- border.color: "#0178EF"
- }
- },
- State {
- name: "unhovered"
- PropertyChanges {
- target: host_url_background
- border.color: Material.foreground
- }
- }
- ]
- transitions: [
- Transition {
- from: "*"
- to: "*"
- PropertyAnimation {
- property: "border.color"
- duration: 100
- easing.type: Easing.Linear
- }
- }
- ]
-
- Text {
- color: Material.foreground
- text: qsTr("RWA host address")
- anchors.left: parent.left
- anchors.leftMargin: 15
- anchors.verticalCenterOffset: - host_url.height / 2
- anchors.verticalCenter: parent.verticalCenter
- leftPadding: 5
-
- Rectangle {
- color: Material.background
- width: parent.width + 5 + 3
- height: parent.height
- z: -1
- }
- }
- }
- }
-
- TextField {
- id: host_alias
- selectByMouse: true
- placeholderText: qsTr("My example host")
-
- font.pixelSize: 16
- color: Material.foreground
-
- padding: 15
- topPadding: 15
-
- anchors.top: host_url.bottom
- anchors.topMargin: 30
- anchors.left: parent.left
- anchors.leftMargin: 15
- anchors.right: parent.right
- anchors.margins: 30
-
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
- onHoveredChanged: {
- if (containsMouse) {
- host_alias_background.state = "hovered"
- } else if (!host_alias.focus) {
- host_alias_background.state = "unhovered"
- }
- }
- onClicked: {
- host_alias.forceActiveFocus();
- }
- }
-
- onFocusChanged: {
- host_alias_background.state = host_alias.focus ? "hovered" : "unhovered"
- }
-
- background: Rectangle {
- id: host_alias_background
- color: Material.background
- border.color: Material.foreground
- border.width: 1
- radius: 4
-
- states: [
- State {
- name: "hovered"
- PropertyChanges {
- target: host_alias_background
- border.color: "#0178EF"
- }
- },
- State {
- name: "unhovered"
- PropertyChanges {
- target: host_alias_background
- border.color: Material.foreground
- }
- }
- ]
- transitions: [
- Transition {
- from: "*"
- to: "*"
- PropertyAnimation {
- property: "border.color"
- duration: 100
- easing.type: Easing.Linear
- }
- }
- ]
-
- Text {
- color: Material.foreground
- text: qsTr("RWA host alias")
- anchors.left: parent.left
- anchors.leftMargin: 15
- anchors.verticalCenterOffset: - host_alias.height / 2
- anchors.verticalCenter: parent.verticalCenter
- leftPadding: 5
-
- Rectangle {
- color: Material.background
- width: parent.width + 5 + 3
- height: parent.height
- z: -1
- }
- }
- }
- }
- }
-}
-
-/*##^## Designer {
- D{i:0;autoSize:true;height:480;width:640}D{i:4;anchors_width:351;anchors_x:279}
-}
- ##^##*/
diff --git a/src/scenes/add_rwahost_wizard/add_rwahost_wizard.cpp b/src/scenes/add_rwahost_wizard/add_rwahost_wizard.cpp
deleted file mode 100644
index 7adbdf9..0000000
--- a/src/scenes/add_rwahost_wizard/add_rwahost_wizard.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * This file is part of Remote Support Desktop
- * https://gitlab.das-netzwerkteam.de/RemoteWebApp/rwa.support.desktopapp
- * Copyright 2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de>
- * SPDX-License-Identifier: GPL-2.0-or-later
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-#include "add_rwahost_wizard.h"
-#include "../../RWADBusAdaptor.h"
-#include "../../RWAHost.h"
-
-AddRWAHostWizard::AddRWAHostWizard(QObject *parent,
- MainQMLAdaptor *main_gui, DBusAPI *dbus_api) : QObject(parent) {
- Q_ASSERT(main_gui != nullptr);
- Q_ASSERT(dbus_api != nullptr);
-
- _dbus_api = dbus_api;
- _main_gui = main_gui;
-
- // _dbus_api --serviceAddWebAppHostResponse-> this.add_web_app_host_response()
- QObject::connect(_dbus_api,
- SIGNAL(serviceAddWebAppHostResponse(QJsonDocument*)),
- this,
- SLOT(add_web_app_host_response(QJsonDocument*)));
-}
-
-void AddRWAHostWizard::processStep1(QString host_url, QString host_alias) {
- qDebug() << "Processing Step 1 with args: " << host_url << host_alias;
-
- if(host_alias == "" || host_url == "") {
- QString reason = tr("Both textfields can't be empty!");
- emit step1Failed(reason, Toast::ToastType::ToastWarning);
- qDebug().noquote() << reason;
- return;
- }
-
- return add_server(host_url, host_alias);
-}
-
-void AddRWAHostWizard::processStep2() {
- qDebug() << "Processing Step 2 with args: No Args.";
- emit step2Failed(tr("The features you expected here are not yet implemented."), Toast::ToastType::ToastWarning);
- // Just show placeholder scene now.
- emit step2Success();
-}
-
-void AddRWAHostWizard::add_server(QString host_url, QString host_alias) {
- _dbus_api->add_web_app_host_request(host_url, host_alias);
-}
-
-void AddRWAHostWizard::add_web_app_host_response(QJsonDocument *doc) {
- // Q_ASSERT lets the program crash immediatly at startup,
- // when the session service is not started.
- // Don't use Q_ASSERT(doc != nullptr); instead use:
- if (doc == nullptr) {
- _main_gui->setRWAHostSelected(false);
- _main_gui->showToast(tr("Can't connect to underlying session service!"),
- 9800,
- Toast::ToastType::ToastError);
- return;
- }
-
- // Get the QJsonObject
- QJsonObject jObject = doc->object();
- QVariantMap mainMap = jObject.toVariantMap();
-
- // Status of request
- QString request_status = mainMap["status"].toString();
- if (request_status == "success") {
- _dbus_api->get_web_app_hosts_request();
-
- qInfo() << "Successfully added a new RWAHost.";
- emit step1Success();
- } else {
- qCritical().noquote() << tr("An error occured while adding a new host!");
-
- uint toast_type = Toast::ToastType::ToastStandard;
- QString reason = tr("An error occured while adding a new host!");
- QString type = mainMap["type"].toString();
-
- if(type == "connection"){
- reason = tr("Couldn't connect to the specified host!");
- toast_type = Toast::ToastType::ToastError;
- qCritical().noquote() << reason;
- } else if (type == "duplicate") {
- reason = tr("The specified host was already added!");
- toast_type = Toast::ToastType::ToastWarning;
- qCritical().noquote() << reason;
- } else if (type == "invalid_url") {
- reason = tr("The specified host address is not valid!");
- toast_type = Toast::ToastType::ToastWarning;
- qCritical().noquote() << reason;
- } else if (type == "permission_denied") {
- reason = tr("The specified host address does not grant access!");
- toast_type = Toast::ToastType::ToastError;
- qCritical().noquote() << reason;
- } else if (type == "unsupported_server") {
- reason = tr("The specified host address is not supported!");
- toast_type = Toast::ToastType::ToastError;
- qCritical().noquote() << reason;
- }
- emit step1Failed(reason, toast_type);
-
- return;
- }
-}
diff --git a/src/scenes/add_rwahost_wizard/add_rwahost_wizard.h b/src/scenes/add_rwahost_wizard/add_rwahost_wizard.h
deleted file mode 100644
index f019be1..0000000
--- a/src/scenes/add_rwahost_wizard/add_rwahost_wizard.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This file is part of Remote Support Desktop
- * https://gitlab.das-netzwerkteam.de/RemoteWebApp/rwa.support.desktopapp
- * Copyright 2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de>
- * SPDX-License-Identifier: GPL-2.0-or-later
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-#ifndef ADD_RWAHOST_WIZARD_H
-#define ADD_RWAHOST_WIZARD_H
-
-#include <QObject>
-
-#include "../../RWADBusAdaptor.h"
-#include "../../DBusAPI.h"
-#include "../../main_qmladaptor.h"
-
-class AddRWAHostWizard : public QObject
-{
- Q_OBJECT
-public:
- explicit AddRWAHostWizard(QObject *parent = nullptr,
- MainQMLAdaptor *main_gui = nullptr,
- DBusAPI *dbus_api = nullptr);
- void add_server(QString host_url, QString host_alias);
-
-private:
- DBusAPI *_dbus_api;
- MainQMLAdaptor *_main_gui;
-
-signals:
- void step1Success();
- void step1Failed(QString reason, uint toast_type);
- void step2Success();
- void step2Failed(QString reason, uint toast_type);
-
-public slots:
- void processStep1(QString host_url, QString host_alias);
- void processStep2();
-
- void add_web_app_host_response(QJsonDocument *doc);
-};
-
-#endif // ADD_SERVER_WIZARD_H
diff --git a/src/scenes/remote_control/Scene_remote_control.qml b/src/scenes/remote_control/Scene_remote_control.qml
deleted file mode 100644
index dc152ef..0000000
--- a/src/scenes/remote_control/Scene_remote_control.qml
+++ /dev/null
@@ -1,382 +0,0 @@
-import QtQuick 2.9
-import QtQuick.Window 2.2
-import QtQuick.Extras 1.4
-import QtQuick.Controls 2.2
-import QtQuick.Dialogs 1.2
-import QtQuick.Controls.Material 2.3
-
-/*!
- * This .qml file is a Scene which can be loaded through for
- * example a StackView (main_content in main.qml).
- */
-
-Item {
- id: scene_remote_control
- objectName: "Scene_remote_control"
-
- Label {
- id: dbus_api_status_text
- text: qsTr("Unknown state of session service.")
- anchors.leftMargin: 10 + 5 + dbus_api_status_indicator.width
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 10
- wrapMode: Text.WordWrap
- anchors.rightMargin: 10
- verticalAlignment: Text.AlignVCenter
- font.pointSize: 11
- fontSizeMode: Text.Fit
- objectName: "dbus_api_status_text"
- anchors.left: parent.left
- anchors.right: parent.right
-
- StatusIndicator {
- id: dbus_api_status_indicator
- width: height
- height: 20
- objectName: "dbus_api_status_indicator"
- color: "#73d216"
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.left
- anchors.rightMargin: 5
- active: false
- }
- }
-
- Label {
- id: explain_function_label
- text: qsTr("Please tell your remote support \
-partner your access address and \
-your access-PIN to let your partner \
-connect to this computer.")
- wrapMode: Text.WordWrap
- font.pixelSize: 18
- anchors.topMargin: 10
- anchors.leftMargin: 10
- anchors.rightMargin: 10
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- horizontalAlignment: Text.AlignLeft
-
- color: Material.theme == Material.Light ? "#000000" : "#FFFFFF"
- }
-
- Rectangle {
- id: dbus_api_status_line
- height: 1
- radius: 1
- anchors.right: parent.right
- anchors.rightMargin: 10
- anchors.bottom: dbus_api_status_text.top
- anchors.bottomMargin: 10
- opacity: 0.3
- gradient: Gradient {
- GradientStop {
- position: 0.391
- color: "#ffffff"
- }
-
- GradientStop {
- position: 0.975
- color: "#8b8b8b"
- }
- }
- border.width: 1
- border.color: "#00000000"
- anchors.left: parent.left
- anchors.leftMargin: 10
- }
-
- Column {
- id: column
- spacing: 6
- anchors.right: parent.right
- anchors.rightMargin: 10
- anchors.left: parent.left
- anchors.leftMargin: 10
- anchors.bottom: dbus_api_status_line.top
- anchors.bottomMargin: 10
- anchors.top: explain_function_label.bottom
- anchors.topMargin: 10
-
- Column {
- id: url_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_url_text
- height: parent.height/2
- text: qsTr("Remote Support Address")
- font.weight: Font.Bold
- font.bold: true
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- font.pointSize: 14
- fontSizeMode: Text.Fit
- }
-
- TextEdit {
- id: url_text
- height: parent.height/2
- text: remote_control_manager.url
- anchors.rightMargin: 10 + copy_url_to_clipboard_button.width
- anchors.right: parent.right
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- anchors.leftMargin: 10
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignLeft
- font.pointSize: 15
-
- readOnly: true
- color: Material.foreground
- selectByMouse: true
- anchors.left: parent.left
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: url_text.height
- // whole line + copy-into-clipboard button + some margin
- width: url_text.width + copy_url_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- Button {
- id: copy_url_to_clipboard_button
- width: copy_url_to_clipboard_image.width + 6
- height: copy_url_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- display: AbstractButton.IconOnly
- anchors.leftMargin: 5
- anchors.left: url_text.right
- highlighted: false
- flat: true
-
- Image {
- id: copy_url_to_clipboard_image
- x: 0
- y: -26
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
- source: "../../../images/into-clipboard.svg"
- opacity: 0.65
- }
-
- onClicked: {
- remote_control_manager.handleCopyToClipboardButtonClick(url_text.text);
- toast.show(qsTr("Copied access address into clipboard!"),
- "5000",
- mainqmladaptor.ToastInfo);
- }
-
- ToolTip.text: qsTr("Copy the access address into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 600
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- Column {
- id: session_id_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_session_id_text
- height: parent.height/2
- text: qsTr("Session-ID")
- font.weight: Font.Bold
- font.bold: true
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- font.pointSize: 14
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- fontSizeMode: Text.Fit
- }
-
- TextEdit {
- objectName: "session_id_text"
- id: session_id_text
- height: parent.height/2
- text: remote_control_manager.session_id
- font.letterSpacing: 10
- anchors.rightMargin: 10 + copy_session_id_to_clipboard_button.width
- anchors.right: parent.right
- font.pointSize: 15
- anchors.left: parent.left
- anchors.leftMargin: 10
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignVCenter
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: session_id_text.height
- // whole line + copy-into-clipboard button + some margin
- width: session_id_text.width + copy_session_id_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- readOnly: true
- color: Material.foreground
- wrapMode: Text.WordWrap
- selectByMouse: true
-
- Button {
- id: copy_session_id_to_clipboard_button
- width: copy_session_id_to_clipboard_image.width + 6
- height: copy_session_id_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- flat: true
- display: AbstractButton.IconOnly
- anchors.left: session_id_text.right
- anchors.leftMargin: 5
-
- Image {
- id: copy_session_id_to_clipboard_image
- anchors.horizontalCenter: parent.horizontalCenter
- opacity: 0.65
- anchors.verticalCenter: parent.verticalCenter
- source: "../../../images/into-clipboard.svg"
- fillMode: Image.PreserveAspectFit
- }
-
- onClicked: {
- remote_control_manager.handleCopyToClipboardButtonClick(session_id_text.text);
- toast.show(qsTr("Copied session-ID into clipboard!"),
- "5000",
- mainqmladaptor.ToastInfo);
- }
-
- ToolTip.text: qsTr("Copy the session-ID into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 600
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- Column {
- id: pin_group
- width: parent.width
- height: parent.height * 0.25
- spacing: 5
-
- Label {
- id: your_pin_text
- height: parent.height/2
- text: qsTr("Access-PIN")
- font.weight: Font.Bold
- font.bold: true
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- font.pointSize: 14
- verticalAlignment: Text.AlignBottom
- horizontalAlignment: Text.AlignLeft
- }
-
- TextEdit {
- objectName: "pin_text"
- id: pin_text
- height: parent.height/2
- text: remote_control_manager.pin
- anchors.rightMargin: 10 + copy_pin_to_clipboard_button.width
- anchors.right: parent.right
- font.pointSize: 15
- anchors.left: parent.left
- anchors.leftMargin: 10
- font.letterSpacing: 10
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignVCenter
-
- leftPadding: 5
- Rectangle {
- radius: 5
- color: Material.theme == Material.Light ? "#F0F0F0" : "#383838"
- height: url_text.height
- // whole line + copy-into-clipboard button + some margin
- width: url_text.width + copy_url_to_clipboard_button.width + 5 + 5
- x: 0; y: 0
- z: -1
- }
-
- readOnly: true
- color: Material.foreground
- wrapMode: Text.WordWrap
- selectByMouse: true
-
- Button {
- id: copy_pin_to_clipboard_button
- width: copy_pin_to_clipboard_image.width + 6
- height: copy_pin_to_clipboard_image.height + 6 + 10
- anchors.verticalCenter: parent.verticalCenter
- flat: true
- display: AbstractButton.IconOnly
- anchors.left: pin_text.right
- anchors.leftMargin: 5
-
- Image {
- id: copy_pin_to_clipboard_image
- anchors.verticalCenter: parent.verticalCenter
- opacity: 0.65
- anchors.horizontalCenter: parent.horizontalCenter
- source: "../../../images/into-clipboard.svg"
- fillMode: Image.PreserveAspectFit
- }
-
- onClicked: {
- remote_control_manager.handleCopyToClipboardButtonClick(pin_text.text);
- toast.show(qsTr("Copied PIN into clipboard!"),
- "5000",
- mainqmladaptor.ToastInfo);
- }
-
- ToolTip.text: qsTr("Copy the pin into the clipboard")
- hoverEnabled: true
-
- ToolTip.delay: 600
- ToolTip.timeout: 5000
- ToolTip.visible: hovered
- }
- }
- }
-
- }
-
- Button {
- id: start_support_button
- height: Math.min(50)
- objectName: "start_support_button"
- text: checked ? qsTr("Stop remote support session") : qsTr("Start remote support session")
- anchors.rightMargin: column.anchors.leftMargin
- anchors.bottom: dbus_api_status_line.top
- anchors.bottomMargin: 10
- anchors.right: parent.right
- checkable: true
-
- onClicked: remote_control_manager.handleConnectButtonClick(checked);
- }
-}
-
-/*##^##
-Designer {
- D{i:0;autoSize:true;height:480;width:640}
-}
-##^##*/
diff --git a/src/scenes/remote_control/remote_control_manager.cpp b/src/scenes/remote_control/remote_control_manager.cpp
deleted file mode 100644
index b76ea2a..0000000
--- a/src/scenes/remote_control/remote_control_manager.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-#include "remote_control_manager.h"
-
-#ifndef QT_NO_DEBUG
-#define CHECK_TRUE(instruction) Q_ASSERT(instruction)
-#else
-#define CHECK_TRUE(instruction) (instruction)
-#endif
-
-RemoteControlManager::RemoteControlManager(QQmlApplicationEngine *engine,
- MainQMLAdaptor *main_gui,
- DBusAPI *dbus_api) : QObject() {
- Q_ASSERT(dbus_api != nullptr);
- Q_ASSERT(main_gui != nullptr);
- Q_ASSERT(engine != nullptr);
-
- _current_session = nullptr;
- _sessions = new QSet<Session*>;
- _dbus_api = dbus_api;
- _main_gui = main_gui;
- _engine = engine;
-}
-
-bool RemoteControlManager::setConnectButtonEnabled(bool enabled) {
- // Find item via 'objectName'
- QQuickItem *scene_remote_control = _engine->rootObjects().takeFirst()->
- findChild<QQuickItem*>("Scene_remote_control");
- QQuickItem *item = scene_remote_control->
- findChild<QQuickItem*>("start_support_button");
- if (item) {
- item->setProperty("enabled", enabled);
- if (item->property("checked").toBool()) {
- item->setProperty("text", tr("Stop remote support session"));
- } else {
- item->setProperty("text", tr("Start remote support session"));
- }
- } else {
- qWarning() << "Unable to find 'start_support_button' Item!";
- return false;
- }
-
- return true;
-}
-
-bool RemoteControlManager::setConnectButtonChecked(bool checked) {
- // Find item via 'objectName'
- QQuickItem *scene_remote_control = _engine->rootObjects().takeFirst()->
- findChild<QQuickItem*>("Scene_remote_control");
- QQuickItem *item = scene_remote_control->
- findChild<QQuickItem*>("start_support_button");
- if (item) {
- item->setProperty("checked", checked);
- } else {
- qWarning() << "Unable to find 'start_support_button' Item!";
- return false;
- }
-
- return true;
-}
-
-bool RemoteControlManager::setStatusIndicatorText(QString status_text) {
- // Find item via 'objectName'
- QQuickItem *scene_remote_control = _engine->rootObjects().takeFirst()->
- findChild<QQuickItem*>("Scene_remote_control");
- QQuickItem *item = scene_remote_control->
- findChild<QQuickItem*>("dbus_api_status_text");
- if (item) {
- item->setProperty("text", status_text);
- } else {
- qWarning() << "Unable to find 'dbus_api_status_text' Item!";
- return false;
- }
-
- return true;
-}
-
-bool RemoteControlManager::setStatusIndicatorColor(bool active, QColor color) {
- // Find item via 'objectName'
- QQuickItem *scene_remote_control = _engine->rootObjects().takeFirst()->
- findChild<QQuickItem*>("Scene_remote_control");
- QQuickItem *item = scene_remote_control->
- findChild<QQuickItem*>("dbus_api_status_indicator");
- if (item) {
- item->setProperty("active", active);
- item->setProperty("color", color);
- } else {
- qWarning() << "Unable to find 'dbus_api_status_indicator' Item!";
- return false;
- }
-
- return true;
-}
-
-void RemoteControlManager::handleCopyToClipboardButtonClick(QString copy_data) {
- QClipboard *clipboard = QApplication::clipboard();
- QString originalText = clipboard->text();
- clipboard->setText(copy_data);
- qDebug() << "Copied into clipboard:" << copy_data;
-}
-
-QString RemoteControlManager::getURL() {
- if (getCurrentSession() == nullptr) {
- return tr("Not available yet");
- }
- return getCurrentSession()->getURL();
-}
-
-QString RemoteControlManager::getPin() {
- if (getCurrentSession() == nullptr) {
- return "-----";
- }
- return getCurrentSession()->getPin();
-}
-
-QString RemoteControlManager::getSessionID() {
- if (getCurrentSession() == nullptr) {
- return "-----";
- }
- return getCurrentSession()->getSessionID();
-}
-
-Session* RemoteControlManager::getCurrentSession() {
- return _current_session;
-}
-
-void RemoteControlManager::addSession(Session *session) {
- _sessions->insert(session);
-}
-
-bool RemoteControlManager::removeSession(Session *session) {
- if (getCurrentSession() == session) {
- setCurrentSession(nullptr);
- }
-
- bool ok = _sessions->remove(session);
-
- if (session != nullptr) {
- session->disconnect();
- session->deleteLater();
- }
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
-
- currentSessionUrlChanged(tr("Not available yet"));
- currentSessionPinChanged("-----");
- currentSessionSessionIDChanged("-----");
-
- return ok;
-}
-
-void RemoteControlManager::setCurrentSession(Session *session) {
- if (session == nullptr) {
- qDebug() << "Deselecting currentSession.";
- _current_session = nullptr;
-
- return;
- }
-
- if (_sessions->contains(session)) {
- qDebug() << "Set currentSession to new session.";
- _current_session = session;
-
- connectSession(_current_session);
- } else {
- qDebug() << "Given session was not in _sessions!";
- }
-}
-
-void RemoteControlManager::connectSession(Session *session) {
- // session --statusChanged-> this.currentSessionStatusChanged()
- CHECK_TRUE(QObject::connect(session,
- &Session::statusChanged,
- this,
- &RemoteControlManager::currentSessionStatusChanged));
-
- // session --pinChanged-> this.currentSessionPinChanged()
- CHECK_TRUE(QObject::connect(session,
- &Session::pinChanged,
- this,
- &RemoteControlManager::currentSessionPinChanged));
-
- // session --urlChanged-> this.currentSessionUrlChanged()
- CHECK_TRUE(QObject::connect(session,
- &Session::urlChanged,
- this,
- &RemoteControlManager::currentSessionUrlChanged));
-
- // session --sessionIDChanged-> this.currentSessionSessionIDChanged()
- CHECK_TRUE(QObject::connect(session,
- &Session::sessionIDChanged,
- this,
- &RemoteControlManager::currentSessionSessionIDChanged));
-
-
- // session --startSucceeded -> this.currentSessionStartSucceeded()
- CHECK_TRUE(QObject::connect(session,
- &Session::startSucceeded,
- this,
- &RemoteControlManager::currentSessionStartSucceeded));
-
- // session --startFailed-> this.currentSessionStartFailed()
- CHECK_TRUE(QObject::connect(session,
- &Session::startFailed,
- this,
- &RemoteControlManager::currentSessionStartFailed));
-
-
- // session --stopSucceeded-> this.currentSessionStopSucceeded()
- CHECK_TRUE(QObject::connect(session,
- &Session::stopSucceeded,
- this,
- &RemoteControlManager::currentSessionStopSucceeded));
-
- // session --stopFailed-> this.currentSessionStopFailed()
- CHECK_TRUE(QObject::connect(session,
- &Session::stopFailed,
- this,
- &RemoteControlManager::currentSessionStopFailed));
-
-
- // session --statusSucceeded-> this.currentSessionStatusSucceeded()
- CHECK_TRUE(QObject::connect(session,
- &Session::statusSucceeded,
- this,
- &RemoteControlManager::currentSessionStatusSucceeded));
-
- // session --statusFailed-> this.currentSessionStatusFailed()
- CHECK_TRUE(QObject::connect(session,
- &Session::statusFailed,
- this,
- &RemoteControlManager::currentSessionStatusFailed));
-}
-
-void RemoteControlManager::currentSessionStartFailed(QString error_message) {
- _main_gui->showToast(error_message, 6000, Toast::ToastType::ToastError);
-
- // Start failed. No need to stop session, so remove it directly.
- removeSession(getCurrentSession());
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
-
- emit _main_gui->showWindow();
-}
-
-void RemoteControlManager::currentSessionStopFailed(QString error_message) {
- _main_gui->showToast(error_message, 6000, Toast::ToastType::ToastError);
-
- // Stop failed, so don't do anything! The user should try again.
-
- // Set status indicator to the corresponding error message.
- QString translated = translateStatusIndicatorText("stop_session_error");
- setStatusIndicatorText(translated);
-
- setConnectButtonChecked(true);
- setConnectButtonEnabled(true);
-
- emit _main_gui->showWindow();
-}
-
-void RemoteControlManager::currentSessionStatusFailed(QString error_message) {
- _main_gui->showToast(error_message, 6000, Toast::ToastType::ToastError);
-
- // Set status indicator to the corresponding error message.
- QString translated = translateStatusIndicatorText("status_session_error");
- setStatusIndicatorText(translated);
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
-
- currentSessionUrlChanged(tr("Not available yet"));
- currentSessionPinChanged("-----");
- currentSessionSessionIDChanged("-----");
-
- emit _main_gui->showWindow();
-}
-
-void RemoteControlManager::currentSessionStartSucceeded() {
- Session *current_session = getCurrentSession();
- if (current_session != nullptr) {
- _main_gui->showToast(
- tr("Session was started on '%0' successfully")
- .arg(current_session->getHost()->alias()),
- 6000,
- Toast::ToastType::ToastSuccess
- );
- } else {
- qCritical().noquote() << tr("currentSessionStartSucceeded(): "
- "Current Session is nullptr!");
- _engine->exit(1);
- }
-
- // Set status indicator to the corresponding error message.
- QString translated = translateStatusIndicatorText("start_session_success");
- setStatusIndicatorText(translated);
-
- setConnectButtonChecked(true);
- setConnectButtonEnabled(true);
-}
-
-void RemoteControlManager::currentSessionStopSucceeded() {
- qDebug() << "Session stop succeeded: Delete current session object now.";
- bool ok = removeSession(getCurrentSession());
- if (!ok) {
- qWarning() << tr("Couldn't remove current session out of '_sessions' list.");
- }
-
- _main_gui->showToast(tr("Remote support session was stopped."),
- 6000,
- Toast::ToastType::ToastSuccess);
-
- // Set status indicator to the corresponding error message.
- QString translated = translateStatusIndicatorText("stop_session_success");
- setStatusIndicatorText(translated);
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
-}
-
-void RemoteControlManager::currentSessionUnexpectedStop(QString error_message) {
- _main_gui->showToast(error_message, 6000, Toast::ToastType::ToastError);
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
-
- qDebug() << "Delete current session object now.";
- bool ok = removeSession(getCurrentSession());
- if (!ok) {
- qWarning() << tr("Couldn't remove current session out of '_sessions' list.");
- }
-}
-
-void RemoteControlManager::currentSessionStatusSucceeded() {
- // Nothing to do.
-}
-
-void RemoteControlManager::currentSessionStatusChanged(QString new_status_code) {
- Session *current_session = getCurrentSession();
- if (current_session == nullptr || !current_session->started) {
- qDebug() << "RemoteControlManager::currentSessionStatusChanged(QString): "
- "got called even though the session isn't even started.";
- return;
- }
- QString translated = translateStatusIndicatorText(new_status_code);
- setStatusIndicatorText(translated);
-}
-
-QString RemoteControlManager::translateStatusIndicatorText(QString status_code) {
- QString guiString = tr("Unknown state of service");
- setStatusIndicatorColor(false);
-
- if (status_code == "dead") {
-
- /* Session died */
- guiString = tr("Remote Support session was stopped ungracefully");
-
- // Red color
- setStatusIndicatorColor(true, QColor(255, 0, 0, 127));
-
- currentSessionUnexpectedStop(guiString);
-
- } else if (status_code == "stopped") {
-
- /* Session was stopped normally somehow other than the users request.
- * Remote support partner could have clicked exit for example */
- guiString = tr("Remote Support session was stopped");
-
- // Green color
- setStatusIndicatorColor(true, QColor(0, 255, 0, 127));
-
- currentSessionUnexpectedStop(guiString);
-
- } else if (status_code == "active") {
-
- /* Partner is connected */
- guiString = tr("Your partner is connected to the Remote Support session");
-
- // Green color
- setStatusIndicatorColor(true, QColor(0, 255, 0, 127));
-
- } else if (status_code == "start_session_success" || status_code == "running") {
-
- /* Session successfully started */
- guiString = tr("Remote Support session successfully started! "
- "Waiting for your remote support partner to connect.");
-
- // yellow color (will be green when partner is connected)
- setStatusIndicatorColor(true, QColor(255, 255, 0, 127));
-
- } else if (status_code == "start_session_error") {
-
- /* Session couldn't be started */
- guiString = tr("Remote Support session couldn't be started!");
-
- // Red color
- setStatusIndicatorColor(true, QColor(255, 0, 0, 127));
-
- } else if (status_code == "stop_session_success") {
-
- /* Session was successfully stopped by the users request */
- guiString = tr("Session stopped successfully.");
-
- // Green color
- setStatusIndicatorColor(true, QColor(0, 255, 0, 127));
-
- } else if (status_code == "stop_session_error") {
-
- /* Session couldn't be stopped */
- guiString = tr("Session could not be stopped!") + "\n" +
- tr("remote support partner could still be connected!");
-
- // Red color
- setStatusIndicatorColor(true, QColor(255, 0, 0, 127));
-
- } else if (status_code == "status_session_error") {
-
- /* Session's status couldn't be refreshed */
- guiString = tr("Session status could not be refreshed! "
- "Your remote support partner could still be connected!");
-
- // Red color
- setStatusIndicatorColor(true, QColor(255, 0, 0, 127));
-
- }
-
- qDebug().noquote() << QString("Translating status code '%0' to '%1'")
- .arg(status_code)
- .arg(guiString);
- return guiString;
-}
-
-void RemoteControlManager::currentSessionPinChanged(QString pin) {
- emit pinChanged(pin);
-}
-
-void RemoteControlManager::currentSessionUrlChanged(QString url) {
- emit urlChanged(url);
-}
-
-void RemoteControlManager::currentSessionSessionIDChanged(QString session_id) {
- emit sessionIDChanged(session_id);
-}
-
-void RemoteControlManager::connectToDBusAPI(Session *session) {
- // _dbus_api --sessionStartResponse-> this.start_response()
- CHECK_TRUE(QObject::connect(_dbus_api,
- &DBusAPI::serviceStartResponse,
- session,
- &Session::start_response));
-
- // _dbus_api --serviceStopResponse-> this.stop_response()
- CHECK_TRUE(QObject::connect(_dbus_api,
- &DBusAPI::serviceStopResponse,
- session,
- &Session::stop_response,
- Qt::DirectConnection));
-
- // _dbus_api --sessionStatusResponse-> this.status_response()
- CHECK_TRUE(QObject::connect(_dbus_api,
- &DBusAPI::serviceStatusResponse,
- session,
- &Session::status_response));
-}
-
-void RemoteControlManager::handleConnectButtonClick(bool checked) {
- if (checked) {
- // Create a Session object and start it.
- qDebug() << "Creating and starting a new session object now.";
- RWAHost *selected_host = _main_gui->getSelectedRWAHost();
- if (selected_host) {
- qInfo() << tr("Creating a new session object.");
- Session *new_session = new Session(_dbus_api, selected_host);
-
- connectToDBusAPI(new_session);
-
- qDebug() << "Adding session to QSet";
- addSession(new_session);
-
- qDebug() << "Setting session as current session.";
- setCurrentSession(new_session);
-
- qInfo().noquote() << tr("Starting a remote support session on host '%0' "
- "using the new session object.")
- .arg(selected_host->uuid());
- new_session->start();
- } else {
- qCritical().noquote() << tr("Can't start a remote support session. "
- "There is no RWA host is selected!");
- }
-
- setConnectButtonChecked(false);
- setConnectButtonEnabled(false);
- } else {
- Session *current_session = getCurrentSession();
- if (current_session != nullptr) {
- emit current_session->stop();
- } else {
- qCritical().noquote() << tr("RemoteControlManager::"
- "handleConnectButtonClick(): Current Session "
- "is nullptr!");
- setConnectButtonChecked(false);
- setConnectButtonEnabled(true);
- }
- }
-}
-
-/*void RemoteControlManager::onCloseHandler() {
- // To cleanup things here
- // check current session nullptr
- getCurrentSession()->stop();
-}*/
diff --git a/src/scenes/remote_control/remote_control_manager.h b/src/scenes/remote_control/remote_control_manager.h
deleted file mode 100644
index 4554724..0000000
--- a/src/scenes/remote_control/remote_control_manager.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef REMOTE_CONTROL_MANAGER_H
-#define REMOTE_CONTROL_MANAGER_H
-
-#include <QObject>
-
-#include "../../main_qmladaptor.h"
-#include "../../DBusAPI.h"
-#include "../../session.h"
-
-class RemoteControlManager : public QObject {
-
- Q_OBJECT
- // 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)
- // this makes session_id available as a QML property
- Q_PROPERTY(QString session_id READ getSessionID NOTIFY sessionIDChanged)
-
-public:
- explicit RemoteControlManager(QQmlApplicationEngine *engine = nullptr,
- MainQMLAdaptor *main_gui = nullptr,
- DBusAPI *dbus_api = nullptr);
-
- bool setConnectButtonEnabled(bool enabled);
- bool setConnectButtonChecked(bool checked);
- bool setStatusIndicatorColor(bool active, QColor color = QColor(255,255,255));
-
- QString translateStatusIndicatorText(QString status_code);
- bool setStatusIndicatorText(QString status_text);
-
-private:
- DBusAPI *_dbus_api;
- MainQMLAdaptor *_main_gui;
- QQmlApplicationEngine *_engine;
- Session *_current_session;
- QSet<Session*> *_sessions;
-
- void connectSession(Session *session);
- void connectToDBusAPI(Session *session);
-
- bool refreshTimerIsRunning;
-
-signals:
- void onConnectButtonClick(bool checked);
- void pinChanged(QString pin);
- void urlChanged(QString URL);
- void sessionIDChanged(QString session_id);
-
-public slots:
- void handleCopyToClipboardButtonClick(QString copy_data);
- void handleConnectButtonClick(bool checked);
-
- void setCurrentSession(Session *session);
- void addSession(Session *session);
- bool removeSession(Session *session);
-
- void currentSessionStatusChanged(QString);
- void currentSessionPinChanged(QString);
- void currentSessionSessionIDChanged(QString);
- void currentSessionUrlChanged(QString);
-
- QString getURL();
- QString getPin();
- QString getSessionID();
- Session* getCurrentSession();
-
- void currentSessionStartFailed(QString error_message);
- void currentSessionStopFailed(QString error_message);
- void currentSessionStatusFailed(QString error_message);
- void currentSessionUnexpectedStop(QString error_message);
-
- void currentSessionStartSucceeded();
- void currentSessionStopSucceeded();
- void currentSessionStatusSucceeded();
-};
-
-#endif // REMOTECONTROLMANAGER_H