2023-03-14 02:09:23 +00:00
// SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
2023-03-14 01:45:47 +00:00
2023-12-15 06:49:35 +00:00
import QtQuick
import QtQuick . Layouts
import QtQuick . Controls as Controls
import org . kde . kirigami as Kirigami
import cellularnetworkkcm
import org . kde . kirigamiaddons . formcard 1 as FormCard
2023-03-14 01:45:47 +00:00
Kirigami . ScrollablePage {
2023-12-15 06:49:35 +00:00
id: root
topPadding: Kirigami . Units . gridUnit
bottomPadding: Kirigami . Units . gridUnit
leftPadding: 0
rightPadding: 0
2023-03-14 01:45:47 +00:00
property Modem modem
2023-12-15 06:49:35 +00:00
property bool editMode: false
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
title: i18n ( "APNs" )
actions: [
Kirigami . Action {
text: i18n ( "Edit" )
icon.name: 'entry-edit'
checkable: true
onCheckedChanged: root . editMode = checked
}
]
ColumnLayout {
spacing: 0
MessagesList {
id: messagesList
visible: count != 0
Layout.fillWidth: true
Layout.margins: Kirigami . Units . largeSpacing
model: kcm . messages
}
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
Kirigami . InlineMessage {
id: cannotFindWarning
Layout.margins: visible ? Kirigami.Units.largeSpacing : 0
Layout.topMargin: visible && ! messagesList . visible ? Kirigami.Units.largeSpacing : 0
Layout.fillWidth: true
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
visible: false
type: Kirigami . MessageType . Warning
showCloseButton: true
text: i18n ( "Unable to autodetect connection settings for your carrier. Please find your carrier's APN settings by either contacting support or searching online." )
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
Connections {
target: modem
function onCouldNotAutodetectSettings ( ) {
cannotFindWarning . visible = true ;
2023-03-14 01:45:47 +00:00
}
}
}
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
FormCard . FormHeader {
title: i18n ( "APN List" )
2023-03-14 01:45:47 +00:00
}
2023-12-15 06:49:35 +00:00
FormCard . FormCard {
Repeater {
id: profilesRepeater
model: modem . profiles
delegate: FormCard . FormRadioDelegate {
text: modelData . name
description: modelData . apn
checked: modem . activeConnectionUni == modelData . connectionUni
onClicked: {
modem . activateProfile ( modelData . connectionUni ) ;
// reapply binding
checked = Qt . binding ( ( ) = > { return modem . activeConnectionUni == modelData . connectionUni } ) ;
}
trailing: RowLayout {
Controls . ToolButton {
visible: root . editMode
icon.name: "entry-edit"
text: i18n ( "Edit" )
display: Controls . ToolButton . IconOnly
onClicked: {
2024-06-29 00:48:01 +00:00
kcm . push ( "EditProfilePage.qml" , { "profile" : modelData , "modem" : modem } ) ;
2023-12-15 06:49:35 +00:00
}
}
Controls . ToolButton {
visible: root . editMode
icon.name: "delete"
text: i18n ( "Delete" )
display: Controls . ToolButton . IconOnly
onClicked: modem . removeProfile ( modelData . connectionUni )
}
2023-03-14 01:45:47 +00:00
}
}
}
2023-12-15 06:49:35 +00:00
FormCard . FormButtonDelegate {
text: i18n ( "Add APN" )
icon.name: 'list-add'
2023-03-14 01:45:47 +00:00
onClicked: {
2024-06-29 00:48:01 +00:00
kcm . push ( "EditProfilePage.qml" , { "profile" : null , "modem" : modem } ) ;
2023-03-14 01:45:47 +00:00
}
}
2024-07-27 03:47:44 +00:00
2023-12-15 06:49:35 +00:00
FormCard . FormButtonDelegate {
text: i18n ( "Automatically detect APN" )
icon.name: 'list-add'
2023-03-14 01:45:47 +00:00
onClicked: {
modem . addDetectedProfileSettings ( ) ;
}
}
}
}
}