diff options
Diffstat (limited to 'main.qml')
-rw-r--r-- | main.qml | 875 |
1 files changed, 517 insertions, 358 deletions
@@ -27,28 +27,26 @@ import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Extras 1.4 -import QtQuick.Controls 2.0 +import QtQuick.Controls 2.2 import QtQuick.Dialogs 1.2 import QtQuick.Controls.Material 2.3 ApplicationWindow { - property int normal_width: 700 - property int normal_height: 400 - - ToastManager { - id: toast - } - - width: normal_width - height: normal_height + readonly property int normal_width: 650 + readonly property int normal_height: 500 + readonly property bool inPortrait: window.width < window.height + /* // Make window not resizeable maximumWidth: normal_width * 1.25 - maximumHeight: normal_height * 1.25 + maximumHeight: normal_height * 1.25*/ // Make window not resizeable - minimumWidth: 500 - minimumHeight: 300 + minimumWidth: 400 + minimumHeight: 460 + + width: normal_width + height: normal_height id: window visible: true @@ -68,19 +66,6 @@ ApplicationWindow { console.log("Opening window now..."); } - Button { - id: start_support_button - objectName: "start_support_button" - text: qsTr("Start remote support session") - anchors.bottom: parent.bottom - anchors.bottomMargin: 15 - anchors.right: parent.right - anchors.rightMargin: 15 - checkable: true - - onClicked: mainqmladaptor.handleConnectButtonClick(checked); - } - MessageDialog { id: message_dialog objectName: "message_dialog" @@ -103,6 +88,369 @@ ApplicationWindow { } } + + Item { + id: main_content + anchors.leftMargin: 0 + anchors.top: top_menu_bar_frame.bottom + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.topMargin: 0 + + StackView { + id: main_content_view + + anchors.right: parent.right + anchors.rightMargin: 0 + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + anchors.leftMargin: !inPortrait ? (window.width * 0.25) : 0 + anchors.left: parent.left + anchors.top: parent.top + anchors.topMargin: 0 + + 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: 5 + 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") + 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 + /*fontSizeMode: Text.Fit + + background: Rectangle { + color: Material.theme == Material.Light ? "#F0F0F0" : "#383838" + radius: 5 + }*/ + readOnly: true + color: Material.foreground + //wrapMode: Text.WordWrap + selectByMouse: true + font.bold: true + anchors.left: parent.left + + 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: { + 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: 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") + 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 + font.weight: Font.Bold + font.bold: true + anchors.rightMargin: 10 + copy_pin_to_clipboard_button.width + anchors.right: parent.right + font.pointSize: 20 + anchors.left: parent.left + anchors.leftMargin: 10 + font.letterSpacing: 10 + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + /*fontSizeMode: Text.Fit + + background: Rectangle { + color: Material.theme == Material.Light ? "#F0F0F0" : "#383838" + radius: 5 + }*/ + 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 + } + } + } + + 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") + 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.weight: Font.Bold + font.bold: true + font.letterSpacing: 10 + anchors.rightMargin: 10 + copy_session_id_to_clipboard_button.width + anchors.right: parent.right + font.pointSize: 20 + anchors.left: parent.left + anchors.leftMargin: 10 + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + /*fontSizeMode: Text.Fit + + background: Rectangle { + color: Material.theme == Material.Light ? "#F0F0F0" : "#383838" + radius: 5 + }*/ + 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 + 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 + } + } + } + + Button { + id: start_support_button + height: Math.min(70, parent.height * 0.222) + objectName: "start_support_button" + text: qsTr("Start remote support session") + anchors.right: parent.right + anchors.rightMargin: 0 + checkable: true + + onClicked: mainqmladaptor.handleConnectButtonClick(checked); + } + } + } + } + + ToastManager { + id: toast + anchors.leftMargin: inPortrait ? 0 : parent.width * 0.25 + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.top: parent.top + } + Connections { target: mainqmladaptor onMessageDialogTextChanged: { @@ -110,6 +458,7 @@ ApplicationWindow { } } + Connections { target: mainqmladaptor onMessageDialogTitleChanged: { @@ -124,227 +473,90 @@ ApplicationWindow { } } - Label { - id: explain_function_label - y: 115 - width: window.width * 0.4 - height: window.height/2 - text: qsTr("Please tell your partner your PIN and the Support URL to connect to this computer") - font.family: "Verdana" - font.pointSize: 12 - visible: true - enabled: false - anchors.left: parent.left - anchors.leftMargin: 15 - wrapMode: Text.WrapAtWordBoundaryOrAnywhere - anchors.verticalCenterOffset: 0 - anchors.verticalCenter: parent.verticalCenter - } - - Label { - id: dbus_api_status_text - y: 350 - width: parent.width / 2 - height: 22 - text: "Unknown state of Service" - wrapMode: Text.WrapAtWordBoundaryOrAnywhere - verticalAlignment: Text.AlignVCenter - font.pointSize: 11 - fontSizeMode: Text.Fit - anchors.leftMargin: 15 + dbus_api_status_indicator.width + 5 - objectName: "dbus_api_status_text" - anchors.bottom: parent.bottom - anchors.bottomMargin: 15 - 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 - } - } - - Item { - id: url_group - objectName: "url_group" - x: 301 - y: 154 - width: parent.width / 2 - height: parent.height * 0.25 - anchors.verticalCenterOffset: -height/2 - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: 0 - - Button { - id: copy_url_to_clipboard_button - x: 460 - y: 2 - width: copy_url_to_clipboard_image.width + 6 - height: copy_url_to_clipboard_image.height + 6 + 10 - anchors.verticalCenter: url_text.verticalCenter - flat: true - display: AbstractButton.IconOnly - anchors.leftMargin: 5 - highlighted: false - anchors.left: url_text.right - - Image { - id: copy_url_to_clipboard_image - x: -230 - y: -2 - opacity: 0.65 - fillMode: Image.PreserveAspectFit - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - //visible: false - source: "images/into-clipboard.svg" + Drawer { + id: sidebar_drawer + y: top_menu_bar_frame.height + + width: !inPortrait ? (window.width * 0.25) : (window.width * 0.5) + height: window.height - top_menu_bar_frame.height + + modal: inPortrait + interactive: inPortrait + position: inPortrait ? 0 : 1 + dragMargin: 1 + margins: -2 + visible: !inPortrait + + ListView { + id: sidebar_listview + boundsBehavior: Flickable.StopAtBounds + interactive: true + clip: true + anchors.fill: parent + + footer: ItemDelegate { + id: footer + text: " " + qsTr("Settings") + width: parent.width + + onClicked: { + if (inPortrait) { + sidebar_drawer.close() + } + } + + MenuSeparator { + parent: footer + width: parent.width + anchors.verticalCenter: parent.top + } } - onClicked: { - mainqmladaptor.handleCopyToClipboardButtonClick(url_text.text); - toast.show(qsTr("Copied URL into clipboard!"), "1000"); + model: 5 + delegate: ItemDelegate { + text: qsTr("Title %1").arg(index + 1) + width: parent.width + onClicked: { + if (inPortrait) { + sidebar_drawer.close() + } + } } - ToolTip.text: qsTr("Copy the URL into the clipboard") - hoverEnabled: true - - ToolTip.delay: 1000 - ToolTip.timeout: 5000 - ToolTip.visible: hovered - } - - Label { - id: url_text - y: 0 - width: parent.width - copy_url_to_clipboard_button.width - 5 - height: parent.height/2 - text: mainqmladaptor.url - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignRight - anchors.bottom: parent.bottom - anchors.bottomMargin: 0 - anchors.left: parent.left - anchors.leftMargin: 0 - font.bold: true - font.pointSize: 13 - fontSizeMode: Text.Fit - wrapMode: Text.WrapAtWordBoundaryOrAnywhere - } - - Label { - id: your_url_text - y: 0 - width: parent.width - height: parent.height/2 - text: qsTr("Remote Support URL") - font.pointSize: 14 - anchors.left: parent.left - anchors.leftMargin: 0 - fontSizeMode: Text.Fit - anchors.top: parent.top - anchors.topMargin: 0 - verticalAlignment: Text.AlignBottom - anchors.bottomMargin: 5 - clip: false - horizontalAlignment: Text.AlignLeft + ScrollIndicator.vertical: ScrollIndicator { } } } - Item { - id: pin_group - x: 379 - y: 183 - width: parent.width/2 - objectName: "pin_group" - height: parent.height * 0.25 - anchors.right: parent.right - anchors.rightMargin: 0 - anchors.verticalCenterOffset: height/2 - anchors.verticalCenter: parent.verticalCenter - - Button { - id: copy_pin_to_clipboard_button - x: 460 - y: 97 - width: copy_pin_to_clipboard_image.width + 6 - height: copy_pin_to_clipboard_image.height + 6 + 10 - anchors.verticalCenterOffset: 0 - anchors.verticalCenter: pin_text.verticalCenter - flat: true - display: AbstractButton.IconOnly - anchors.left: pin_text.right - anchors.leftMargin: 5 - - Image { - id: copy_pin_to_clipboard_image - x: -230 - y: -2 - opacity: 0.65 - anchors.verticalCenter: parent.verticalCenter - 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 + /*Rectangle { + id: side_menu + width: parent.width * 0.333 + color: "#ffffff" + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.top: top_menu_bar_frame.bottom + anchors.topMargin: 0 - ToolTip.delay: 1000 - ToolTip.timeout: 5000 - ToolTip.visible: hovered + visible: !inPortrait + + Drawer { + x: side_menu.x + y: side_menu.y + width: side_menu.width + height: side_menu.height + modal: inPortrait + interactive: inPortrait + position: inPortrait ? 0 : 1 + //visible: true + visible: !inPortrait } + }*/ - Label { - objectName: "pin_text" - id: pin_text - width: parent.width - 5 - copy_pin_to_clipboard_button.width - height: parent.height/2 - text: mainqmladaptor.pin - font.bold: true - font.pointSize: 20 - anchors.left: parent.left - anchors.leftMargin: 0 - anchors.top: your_pin_text.bottom - anchors.topMargin: 0 - font.letterSpacing: 10 - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignVCenter - fontSizeMode: Text.VerticalFit - } - - Label { - id: your_pin_text - x: 15 - width: parent.width - height: parent.height/2 - text: qsTr("Access pin to this computer") - font.pointSize: 14 - anchors.top: parent.top - anchors.topMargin: 0 - anchors.left: parent.left - anchors.leftMargin: 0 - verticalAlignment: Text.AlignBottom - horizontalAlignment: Text.AlignLeft - clip: false - fontSizeMode: Text.Fit - } - } Material.theme: theme.position < 1 ? Material.Light : Material.Dark - Control { + ToolBar { id: top_menu_bar_frame width: parent.width height: parent.height * 0.10 @@ -363,20 +575,29 @@ ApplicationWindow { Switch { id: theme + width: 150 + implicitWidth: 100 + visible: !inPortrait + height: parent.height anchors.margins: 10 - text: "Dark theme" - anchors.left: sidemenu_open_button.right - anchors.leftMargin: 15 + text: qsTr("Dark theme") + anchors.left: parent.left + anchors.verticalCenterOffset: 0 + anchors.leftMargin: 0 anchors.verticalCenter: parent.verticalCenter checked: true } Label { id: header_text + width: 1 height: parent.height color: "#ffffff" text: qsTr("Allow Remote Control") + anchors.left: theme.right + anchors.leftMargin: 5 + horizontalAlignment: Text.AlignRight padding: 5 font.family: "Verdana" font.pointSize: 20 @@ -385,150 +606,88 @@ ApplicationWindow { anchors.right: parent.right anchors.rightMargin: 5 anchors.verticalCenter: parent.verticalCenter - horizontalAlignment: Text.AlignRight } Button { - id: sidemenu_open_button - width: sidemenu_open_image.width + id: burger_button + width: 50 height: parent.height + 10 - text: "" - hoverEnabled: true - display: AbstractButton.IconOnly + visible: inPortrait + + + text: "≡" + checkable: false + font.pointSize: 24 + flat: true anchors.left: parent.left anchors.leftMargin: 0 - anchors.top: parent.top - anchors.topMargin: -5 - flat: true + anchors.verticalCenter: parent.verticalCenter + enabled: !sidebar_drawer.opened - onClicked: page.visible = page.visible ? false : true, checked = false - - Image { - id: sidemenu_open_image - x: -5 - y: -4 - width: 40 - height: 40 - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - source: "images/menubar.png" - fillMode: Image.PreserveAspectFit + onClicked: { + sidebar_drawer.open() + enabled: false } } } - Page { - id: page - x: 0 - y: 0 - width: 210 - height: 400 - visible: false - - Image { - id: logo_image - x: 640 - y: 17 - width: 50 - height: 50 - visible: true - anchors.left: parent.left - anchors.leftMargin: 14 - clip: false - anchors.top: parent.top - anchors.topMargin: 11 - source: "images/logo.png" - fillMode: Image.PreserveAspectFit - } - - Text { - id: element2 - x: 14 - y: 85 - width: 180 - height: 27 - text: qsTr("Remote Control") - fontSizeMode: Text.FixedSize - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignLeft - } - - Text { - id: element3 - x: 14 - y: 118 - width: 180 - height: 27 - text: qsTr("Remote View") - font.pointSize: 12 - verticalAlignment: Text.AlignVCenter - fontSizeMode: Text.FixedSize - horizontalAlignment: Text.AlignLeft - } - - Text { - id: element4 - x: 14 - y: 151 - width: 181 - height: 31 - text: qsTr("Settings") - fontSizeMode: Text.FixedSize - verticalAlignment: Text.AlignVCenter - font.pointSize: 12 - } - - Button { - id: button1 - x: 171 - y: 0 - width: 40 - height: 40 - text: qsTr("x") - checkable: true - flat: true - - onClicked: page.visible = page.visible ? false : true, checked = false - } - } - } - - - - - - - - - - - - - - - - - + /* TabBar { + id: side_menu + width: parent.width * 0.3333 + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.top: top_menu_bar_frame.bottom + anchors.topMargin: 0 + TabButton { + id: firstBtn + text: "Erster Knopf" + width: side_menu.width + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.top: parent.top + anchors.topMargin: 0 + onClicked: { + } + } + TabButton { + id: secondBtn + text: "Zweiter Knopf" + width: side_menu.width + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.top: firstBtn.bottom + anchors.topMargin: 0 + } + TabButton { + id: thirdBtn + text: "Dritter Knopf" + width: side_menu.width + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.top: secondBtn.bottom + anchors.topMargin: 0 + } + visible: true + background: Rectangle { + color: Material.theme == Material.Light ? "#e5f1fd" : "#0b4a8a" + anchors.fill: parent + } + } +*/ -/*##^## Designer { - D{i:1;anchors_x:0;anchors_y:339}D{i:5;anchors_x:0}D{i:7;anchors_x:15;anchors_y:115} -D{i:11;anchors_height:20;anchors_width:20}D{i:10;anchors_y:154}D{i:14;anchors_x:47;anchors_y:0} -D{i:15;anchors_height:50}D{i:16;anchors_height:35;anchors_width:350;anchors_x:379;anchors_y:183} -D{i:19;anchors_height:35;anchors_x:73;anchors_y:35}D{i:18;anchors_height:35;anchors_x:73;anchors_y:35} -D{i:20;anchors_y:0}D{i:21;anchors_x:0;anchors_y:0}D{i:23;anchors_x:15;anchors_y:17} -D{i:24;anchors_height:20;anchors_width:200;anchors_x:15;anchors_y:10} } - ##^##*/ |