Warning, /utilities/ktrip/src/qml/BackendPage.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003
0004 SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.5
0008 import QtQuick.Layouts 1.1
0009 import QtQuick.Controls 2.1 as QQC2
0010 import org.kde.i18n.localeData 1.0
0011 import org.kde.kirigami 2.10 as Kirigami
0012 import org.kde.kirigamiaddons.components 1.0 as Components
0013 import org.kde.kirigamiaddons.delegates 1.0 as Delegates
0014 import org.kde.kpublictransport 1.0 as KPublicTransport
0015 import org.kde.ktrip 1.0
0016
0017 Kirigami.ScrollablePage {
0018 id: root
0019
0020 title: i18n("Providers")
0021
0022 header: Components.Banner {
0023 text: i18n("Select the providers relevant for your area")
0024 visible: true
0025 }
0026
0027 actions: [
0028 Kirigami.Action {
0029 text: i18n("Save")
0030 icon.name: "emblem-ok-symbolic"
0031 onTriggered: pageStack.pop()
0032 }
0033 ]
0034
0035 KPublicTransport.BackendModel {
0036 id: backendModel
0037 manager: Manager
0038 }
0039
0040 Component {
0041 id: backendDelegate
0042
0043 Delegates.RoundedItemDelegate {
0044 enabled: model.itemEnabled
0045
0046 contentItem: Item {
0047 anchors.margins: Kirigami.Units.largeSpacing
0048 implicitHeight: childrenRect.height
0049
0050 QQC2.Label {
0051 id: nameLabel
0052 text: model.name
0053 anchors.left: parent.left
0054 anchors.top: parent.top
0055 anchors.right: securityIcon.left
0056 anchors.rightMargin: Kirigami.Units.largeSpacing
0057 // try to retain trailing abbreviations when we have to elide
0058 elide: text.endsWith(")") ? Text.ElideMiddle : Text.ElideRight
0059 }
0060 Kirigami.Icon {
0061 id: securityIcon
0062 source: model.isSecure ? "channel-secure-symbolic" : "channel-insecure-symbolic"
0063 color: model.isSecure ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.negativeTextColor
0064 width: height
0065 height: Kirigami.Units.gridUnit
0066 anchors.top: parent.top
0067 anchors.right: toggle.left
0068 }
0069 QQC2.Switch {
0070 id: toggle
0071 checked: model.backendEnabled
0072 onToggled: model.backendEnabled = checked
0073 anchors.top: parent.top
0074 anchors.right: parent.right
0075 }
0076 QQC2.Label {
0077 anchors.top: nameLabel.bottom
0078 anchors.left: parent.left
0079 anchors.right: toggle.left
0080 anchors.topMargin: Kirigami.Units.smallSpacing
0081 text: model.description
0082 font.italic: true
0083 wrapMode: Text.WordWrap
0084 }
0085 }
0086
0087 onClicked: {
0088 toggle.toggle(); // does not trigger the signal handler for toggled...
0089 model.backendEnabled = toggle.checked;
0090 }
0091 }
0092 }
0093
0094 ListView {
0095 model: backendModel
0096 delegate: backendDelegate
0097
0098 section {
0099 property: "countryCode"
0100 delegate: Kirigami.ListSectionHeader {
0101 text: {
0102 switch (section) {
0103 case "":
0104 case "UN":
0105 return i18n("Global");
0106 case "EU":
0107 return i18n("🇪🇺 European Union");
0108 default:
0109 const c = Country.fromAlpha2(section);
0110 return i18nc("emoji flag, country name", "%1 %2", c.emojiFlag, c.name);
0111 }
0112 }
0113 }
0114 criteria: ViewSection.FullString
0115 }
0116 }
0117 }