From 714e5dadf2d6064aaddd7d4e0abd55af332b9448 Mon Sep 17 00:00:00 2001 From: Rami Potinkara Date: Mon, 25 May 2020 18:52:09 +0300 Subject: new menu item for usb ethernet protocol selection Task-number: QTBUG-83011 Change-Id: I8098ef26c9fa42cdf301145937eca011365d6f19 Pick-to: 5.15 Reviewed-by: Teemu Holappa --- src/settingsui/ViewSettings.qml | 1 + src/settingsui/network/NetworkSettings.qml | 293 +++++++++++++++++++++-------- 2 files changed, 214 insertions(+), 80 deletions(-) (limited to 'src/settingsui') diff --git a/src/settingsui/ViewSettings.qml b/src/settingsui/ViewSettings.qml index 9bbbc10..e9a1c74 100644 --- a/src/settingsui/ViewSettings.qml +++ b/src/settingsui/ViewSettings.qml @@ -40,4 +40,5 @@ Item { property string buttonGrayColor: "#9d9faa" property string buttonActiveColor: "#216729" property string scrollBarColor: "#41cd52" + property bool usbEthernetSettingVisible: false } diff --git a/src/settingsui/network/NetworkSettings.qml b/src/settingsui/network/NetworkSettings.qml index 982a858..f18173e 100644 --- a/src/settingsui/network/NetworkSettings.qml +++ b/src/settingsui/network/NetworkSettings.qml @@ -31,104 +31,237 @@ import QtQuick.Layouts 1.3 import QtQuick.Controls 2.2 import QtDeviceUtilities.NetworkSettings 1.0 import QtDeviceUtilities.QtButtonImageProvider 1.0 +import QtDeviceUtilities.LocalDeviceSettings 1.0 import "../common" +import "../timedate" Item { - id: root + id: networkSettingsRoot property string title: qsTr("Network Settings") - - Column { - id: networkSettingsColumn - spacing: pluginMain.spacing - anchors.margins: viewSettings.pageMargin - - Row { - spacing: root.width * 0.025 - leftPadding: pluginMain.margin - Text { - text: qsTr("Wi-Fi") - anchors.verticalCenter: parent.verticalCenter - font.pixelSize: pluginMain.subTitleFontSize + property bool usbEthernetSettingVisibility: ( viewSettings.usbEthernetSettingVisible && NetworkSettingsManager.hasUsbEthernetProtocolConfiguration() ) ? true : false + anchors.fill: parent + Text { + id: usbEthernetTitleText + visible: usbEthernetSettingVisibility + text: qsTr("USB Ethernet") + font.pixelSize: pluginMain.subTitleFontSize + font.family: appFont + font.styleName: "SemiBold" + color: "white" + anchors.left: parent.left + } + TextArea { + id: ipAddressTextArea + visible: usbEthernetSettingVisibility + text: qsTr("IP Address:") + NetworkSettingsManager.usbEthernetIpAddress + color: viewSettings.buttonGreenColor + font.family: appFont + font.styleName: "SemiBold" + font.pixelSize: pluginMain.subTitleFontSize - 2 + opacity: 1.0 + readOnly: true + anchors.left: usbEthernetTitleText.left + anchors.verticalCenter: usbEthernetCustomComboBox.verticalCenter + anchors.leftMargin: 15 + } + CustomComboBox { + id: usbEthernetCustomComboBox + visible: usbEthernetSettingVisibility + width: root.width * 0.15 + height: pluginMain.buttonHeight + anchors.top: usbEthernetTitleText.bottom + anchors.left: ipAddressTextArea.right + anchors.right: setUsbEthernetButton.left + anchors.rightMargin: 15 + anchors.leftMargin: 15 + model: ["RNDIS", "CDCECM" ] + currentIndex: 0 + delegate: ItemDelegate { + id: usbEthernetDelegate + contentItem: Text { + anchors.left: usbEthernetDelegate.left + anchors.leftMargin: pluginMain.margin + text: modelData + color: usbEthernetCustomComboBox.currentIndex == index ? viewSettings.buttonGreenColor : "white" + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + font.pixelSize: pluginMain.valueFontSize font.family: appFont - color: "white" + font.styleName: "Regular" } + } + Component.onCompleted: { + usbEthernetCustomComboBox.currentIndex = "RNDIS" === NetworkSettingsManager.usbEthernetProtocol ? 0 : 1 + } + } + QtButton { + id: setUsbEthernetButton + visible: usbEthernetSettingVisibility + height: pluginMain.buttonHeight + text: qsTr("SAVE & REBOOT") + anchors.right: parent.right + anchors.verticalCenter: usbEthernetCustomComboBox.verticalCenter + onClicked: { + showRebootAcceptPopup(); + } + } - CustomSwitch { - id: wifiSwitch - indicatorWidth: root.width * 0.15 - indicatorHeight: root.height * 0.06 - property bool wiFiAvailable: NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0) !== null - enabled: wiFiAvailable && !wifiSwitchTimer.running - onCheckedChanged: { - // Power on/off all WiFi interfaces - for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) { - NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i).powered = checked - wifiSwitchTimer.start() - } + function showRebootAcceptPopup() { + messageDialog.visible = true + } + + Dialog { + function rebootAccepted() { + NetworkSettingsManager.setUsbVirtualEthernetLinkProtocol(usbEthernetCustomComboBox.currentText) + LocalDevice.reboot() + } + id: messageDialog + anchors.centerIn: parent + width: parent.width + height: parent.height + opacity: 0.9 + background: Rectangle{ + id: messageDialogMainRectangle + width: parent.width + height: parent.height + color: viewSettings.backgroundColor + } + Rectangle { + id: messageDialogPopupRectangle + color: viewSettings.backgroundColor + border.color: viewSettings.borderColor + border.width: 3 + anchors.centerIn: parent + width: parent.width * 0.75 + height: parent.height * 0.75 + Column { + anchors.centerIn: parent + spacing: viewSettings.pageMargin + Text { + id: shutDownConfirmText + width: messageDialogPopupRectangle.width * 0.75 + height: messageDialogPopupRectangle.height * 0.25 + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + fontSizeMode: Text.Fit + minimumPixelSize: 1 + font.pixelSize: messageDialogPopupRectangle.width * 0.3 + color: "white" + font.family: viewSettings.appFont + font.styleName: "SemiBold" + text: "Save and reboot the system?" } - Component.onCompleted: { - // If any of the WiFi interfaces is powered on, switch is checked - var checkedStatus = false; - for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) { - if (NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i).powered) { - checkedStatus = true; - break; - } - } - checked = checkedStatus; + QtButton { + id: saveRebootConfirm + height: pluginMain.buttonHeight + anchors.horizontalCenter: parent.horizontalCenter + text: "OK" + onClicked: messageDialog.rebootAccepted(); } - - // At least 1s between switching on/off - Timer { - id: wifiSwitchTimer - interval: 1000 - running: false + QtButton { + id: saveRebootCancel + height: pluginMain.buttonHeight + anchors.horizontalCenter: parent.horizontalCenter + borderColor: "transparent" + fillColor: viewSettings.buttonGrayColor + text: qsTr("CANCEL") + onClicked: { + messageDialog.visible = false + } } } - QtButton { - id: manualConnect - visible: true - enabled: wifiSwitch.checked - fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor - borderColor: "transparent" - height: pluginMain.buttonHeight - text: qsTr("Connect manually") - onClicked: { - networkList.connectBySsid() - } + } + } + Text { + id: wlanText + text: qsTr("WLAN") + font.pixelSize: pluginMain.subTitleFontSize + font.family: appFont + font.styleName: "SemiBold" + color: "white" + anchors.top: usbEthernetSettingVisibility ? usbEthernetCustomComboBox.bottom : networkSettingsRoot.top + anchors.left: parent.left + } + CustomSwitch { + id: wifiSwitch + anchors.top: wlanText.bottom + anchors.left: wlanText.left + height: pluginMain.buttonHeight + indicatorWidth: pluginMain.buttonWidth + indicatorHeight: pluginMain.buttonHeight + property bool wiFiAvailable: NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0) !== null + enabled: wiFiAvailable && !wifiSwitchTimer.running + onCheckedChanged: { + // Power on/off all WiFi interfaces + for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) { + NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i).powered = checked + wifiSwitchTimer.start() } - QtButton { - id: manualDisconnect - visible: true - enabled: NetworkSettingsManager.currentWifiConnection - fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor - borderColor: "transparent" - height: pluginMain.buttonHeight - text: qsTr("Disconnect wireless") - onClicked: { - if (NetworkSettingsManager.currentWifiConnection) { - NetworkSettingsManager.currentWifiConnection.disconnectService(); - } + } + Component.onCompleted: { + // If any of the WiFi interfaces is powered on, switch is checked + var checkedStatus = false; + for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) { + if (NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i).powered) { + checkedStatus = true; + break; } } + checked = checkedStatus; } - Text { - text: qsTr("Network list:") - font.pixelSize: pluginMain.subTitleFontSize - font.family: appFont - font.styleName: "SemiBold" - color: "white" + // At least 1s between switching on/off + Timer { + id: wifiSwitchTimer + interval: 1000 + running: false } - - Row { - id: listViewRow - leftPadding: pluginMain.margin - NetworkListView { - id: networkList - width: root.width - listViewRow.leftPadding - height: root.height - listViewRow.y - networkSettingsColumn.anchors.margins + } + QtButton { + id: manualConnect + anchors.top: wlanText.bottom + anchors.left: wifiSwitch.right + anchors.right: manualDisconnect.left + anchors.rightMargin: 15 + enabled: wifiSwitch.checked + fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor + borderColor: "transparent" + height: pluginMain.buttonHeight + text: qsTr("MANUAL CONNECT") + onClicked: { + networkList.connectBySsid() + } + } + QtButton { + id: manualDisconnect + anchors.top: wlanText.bottom + anchors.right: parent.right + enabled: NetworkSettingsManager.currentWifiConnection + fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor + borderColor: "transparent" + height: pluginMain.buttonHeight + text: qsTr("DISCONNECT") + onClicked: { + if (NetworkSettingsManager.currentWifiConnection) { + NetworkSettingsManager.currentWifiConnection.disconnectService(); } } } + Text { + id: networkListTextItem + text: qsTr("Network list") + font.pixelSize: pluginMain.subTitleFontSize + font.family: appFont + font.styleName: "SemiBold" + color: "white" + anchors.top: wifiSwitch.bottom + } + NetworkListView { + id: networkList + anchors.top: networkListTextItem.bottom + anchors.left: networkListTextItem.left + width: networkSettingsRoot.width + height: networkSettingsRoot.height + } } + -- cgit v1.2.3