mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-29 15:03:09 +00:00
Having the KCMs that are mobile specific here makes more sense than in the settings application. Historically plasma-settings had a faster release cycle than Plasma, but the application is now moving to the Plasma release schedule and so it makes sense do this now.
183 lines
6.2 KiB
QML
183 lines
6.2 KiB
QML
/*
|
|
SPDX-FileCopyrightText: 2020-2021 Devin Lin <espidev@gmail.com>
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
|
|
import QtQuick 2.12
|
|
import QtQuick.Layouts 1.2
|
|
import QtQuick.Controls 2.12 as Controls
|
|
import org.kde.kirigami 2.12 as Kirigami
|
|
import cellularnetworkkcm 1.0
|
|
|
|
Kirigami.ScrollablePage {
|
|
id: apnlist
|
|
title: i18n("APNs")
|
|
|
|
property Modem modem
|
|
|
|
ListView {
|
|
id: profileListView
|
|
model: modem.profiles
|
|
|
|
Kirigami.PlaceholderMessage {
|
|
anchors.centerIn: parent
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.margins: Kirigami.Units.largeSpacing
|
|
visible: profileListView.count === 0
|
|
text: i18n("No APNs configured")
|
|
icon.name: "globe"
|
|
|
|
helpfulAction: Kirigami.Action {
|
|
iconName: "list-add"
|
|
text: i18n("Add Connection")
|
|
onTriggered: {
|
|
profileDialog.profile = null;
|
|
profileDialog.open();
|
|
}
|
|
}
|
|
}
|
|
|
|
EditProfileDialog {
|
|
id: profileDialog
|
|
modem: apnlist.modem
|
|
profile: null
|
|
pageWidth: apnlist.width
|
|
}
|
|
|
|
header: ColumnLayout {
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
spacing: 0
|
|
|
|
MessagesList {
|
|
id: messagesList
|
|
visible: count != 0
|
|
Layout.fillWidth: true
|
|
Layout.margins: Kirigami.Units.largeSpacing
|
|
model: kcm.messages
|
|
}
|
|
|
|
Kirigami.InlineMessage {
|
|
id: cannotFindWarning
|
|
Layout.margins: visible ? Kirigami.Units.largeSpacing : 0
|
|
Layout.topMargin: visible && !messagesList.visible ? Kirigami.Units.largeSpacing : 0
|
|
Layout.fillWidth: true
|
|
|
|
visible: false
|
|
type: Kirigami.MessageType.Warning
|
|
showCloseButton: true
|
|
text: qsTr("Unable to autodetect connection settings for your carrier. Please find your carrier's APN settings by either contacting support or searching online.")
|
|
|
|
Connections {
|
|
target: modem
|
|
function onCouldNotAutodetectSettings() {
|
|
cannotFindWarning.visible = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Kirigami.SwipeListItem {
|
|
Layout.fillWidth: true
|
|
visible: profileListView.count !== 0
|
|
onClicked: {
|
|
profileDialog.profile = null;
|
|
profileDialog.open();
|
|
}
|
|
|
|
contentItem: Row {
|
|
spacing: Kirigami.Units.smallSpacing
|
|
Kirigami.Icon {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
source: "list-add"
|
|
height: Kirigami.Units.gridUnit * 1.5
|
|
width: height
|
|
}
|
|
Kirigami.Heading {
|
|
level: 3
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
Layout.alignment: Qt.AlignLeft
|
|
text: i18n("Add APN")
|
|
}
|
|
}
|
|
}
|
|
|
|
Kirigami.SwipeListItem {
|
|
Layout.fillWidth: true
|
|
onClicked: {
|
|
modem.addDetectedProfileSettings();
|
|
}
|
|
|
|
contentItem: Row {
|
|
spacing: Kirigami.Units.smallSpacing
|
|
Kirigami.Icon {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
source: "list-add"
|
|
height: Kirigami.Units.gridUnit * 1.5
|
|
width: height
|
|
}
|
|
Kirigami.Heading {
|
|
level: 3
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
Layout.alignment: Qt.AlignLeft
|
|
text: i18n("Autodetect APN")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
delegate: Kirigami.SwipeListItem {
|
|
onClicked: modem.activateProfile(modelData.connectionUni)
|
|
|
|
actions: [
|
|
Kirigami.Action {
|
|
iconName: "entry-edit"
|
|
text: i18n("Edit")
|
|
onTriggered: {
|
|
profileDialog.profile = modelData;
|
|
profileDialog.open();
|
|
}
|
|
},
|
|
Kirigami.Action {
|
|
iconName: "delete"
|
|
text: i18n("Delete")
|
|
onTriggered: modem.removeProfile(modelData.connectionUni)
|
|
}
|
|
]
|
|
|
|
contentItem: RowLayout {
|
|
Layout.fillWidth: true
|
|
|
|
Controls.RadioButton {
|
|
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
|
checked: modem.activeConnectionUni == modelData.connectionUni
|
|
onClicked: {
|
|
if (!checked) {
|
|
modem.activateProfile(modelData.connectionUni);
|
|
}
|
|
|
|
// reapply binding
|
|
checked = Qt.binding(() => { return modem.activeConnectionUni == modelData.connectionUni });
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
Layout.alignment: Qt.AlignLeft
|
|
Layout.fillWidth: true
|
|
spacing: Kirigami.Units.smallSpacing
|
|
|
|
Kirigami.Heading {
|
|
Layout.fillWidth: true
|
|
level: 3
|
|
text: modelData.name
|
|
}
|
|
Controls.Label {
|
|
Layout.fillWidth: true
|
|
text: modelData.apn
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|