shift-shell/initialstart/modules/cellular/package/contents/ui/main.qml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

155 lines
5.7 KiB
QML
Raw Normal View History

// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
2023-09-21 19:02:47 +00:00
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
2023-09-21 19:02:47 +00:00
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard 1 as FormCard
import org.kde.plasma.networkmanagement.cellular as Cellular
import org.kde.plasma.mobileinitialstart.initialstart
InitialStartModule {
name: i18n("Cellular")
available: modemList.modemAvailable
contentItem: Item {
id: root
Cellular.CellularModemList {
id: modemList
}
property Cellular.CellularModem modem: modemList.primaryModem
readonly property real cardWidth: Math.min(Kirigami.Units.gridUnit * 30, root.width - Kirigami.Units.gridUnit * 2)
function toggleMobileData() {
if (!root.modem || root.modem.needsAPNAdded || !root.modem.mobileDataSupported) {
MobileShell.ShellUtil.executeCommand("plasma-open-settings kcm_cellular_network");
} else {
root.modem.mobileDataEnabled = !root.modem.mobileDataEnabled;
}
}
EditProfileDialog {
id: profileDialog
modem: root.modem
}
ColumnLayout {
anchors {
fill: parent
topMargin: Kirigami.Units.gridUnit
bottomMargin: Kirigami.Units.largeSpacing
}
width: root.width
spacing: Kirigami.Units.gridUnit
Label {
Layout.leftMargin: Kirigami.Units.gridUnit
Layout.rightMargin: Kirigami.Units.gridUnit
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
text: {
if (!root.modem) {
return i18n("Your device does not have a modem available.");
} else if (root.modem.needsAPNAdded) {
return i18n("Please configure your APN below for mobile data, further information will be available with your carrier.");
} else if (root.modem.mobileDataSupported) {
return i18n("You are connected to the mobile network.");
} else if (root.modem.simEmpty) {
return i18n("Please insert a SIM card into your device.");
} else {
return i18n("Your device does not have a modem available.");
}
}
}
FormCard.FormCard {
visible: root.modem && root.modem.mobileDataSupported
maximumWidth: root.cardWidth
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
FormCard.FormSwitchDelegate {
text: i18n("Mobile Data")
checked: root.modem ? root.modem.mobileDataEnabled : false
onCheckedChanged: {
if (root.modem && checked !== root.modem.mobileDataEnabled) {
root.toggleMobileData();
}
}
}
}
FormCard.FormCard {
visible: root.modem && !root.modem.simEmpty
maximumWidth: root.cardWidth
2023-09-21 19:02:47 +00:00
Layout.fillHeight: true
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
ListView {
id: listView
currentIndex: -1
clip: true
Layout.fillWidth: true
Layout.fillHeight: true
model: root.modem ? root.modem.profiles : null
delegate: FormCard.FormRadioDelegate {
required property int index
required property string connectionName
required property string connectionAPN
required property string connectionUni
width: listView.width
text: connectionName
description: connectionAPN
checked: root.modem && root.modem.activeConnectionUni === connectionUni
onCheckedChanged: {
if (checked && root.modem) {
root.modem.activateProfile(connectionUni);
checked = Qt.binding(() => { return root.modem && root.modem.activeConnectionUni === connectionUni });
}
}
trailing: RowLayout {
ToolButton {
icon.name: "entry-edit"
text: i18n("Edit")
onClicked: {
profileDialog.editConnectionUni = connectionUni;
profileDialog.open();
}
}
ToolButton {
icon.name: "delete"
text: i18n("Delete")
onClicked: root.modem.removeProfile(connectionUni)
}
2023-09-21 19:02:47 +00:00
}
}
}
FormCard.FormButtonDelegate {
icon.name: "list-add"
text: i18n("Add APN")
onClicked: {
profileDialog.editConnectionUni = "";
profileDialog.open();
}
}
}
}
}
}