Warning, /pim/itinerary/src/app/PublicTransportBackendPage.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
0008 import QtQuick.Layouts
0009 import QtQuick.Controls as QQC2
0010 import org.kde.kirigami as Kirigami
0011 import org.kde.i18n.localeData
0012 import org.kde.kpublictransport as KPublicTransport
0013 import org.kde.itinerary
0014
0015 Kirigami.ScrollablePage {
0016 id: root
0017 title: i18n("Public Transport Information Sources")
0018
0019 property alias publicTransportManager: backendModel.manager
0020
0021 KPublicTransport.BackendModel {
0022 id: backendModel
0023 mode: KPublicTransport.BackendModel.GroupByCountry
0024 }
0025
0026 Component {
0027 id: backendDelegate
0028 QQC2.ItemDelegate {
0029 id: delegate
0030 highlighted: false
0031 enabled: model.itemEnabled
0032 width: ListView.view.width
0033 text: model.name
0034
0035 contentItem: Item {
0036 anchors.margins: Kirigami.Units.largeSpacing
0037 implicitHeight: childrenRect.height
0038
0039 QQC2.Label {
0040 id: nameLabel
0041 text: model.name
0042 anchors.left: parent.left
0043 anchors.top: parent.top
0044 anchors.right: securityIcon.left
0045 anchors.rightMargin: Kirigami.Units.largeSpacing
0046 // try to retain trailing abbreviations when we have to elide
0047 elide: text.endsWith(")") ? Text.ElideMiddle : Text.ElideRight
0048 Accessible.ignored: true
0049 }
0050 Kirigami.Icon {
0051 id: securityIcon
0052 source: model.isSecure ? "channel-secure-symbolic" : "channel-insecure-symbolic"
0053 color: model.isSecure ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.negativeTextColor
0054 width: height
0055 height: Kirigami.Units.gridUnit
0056 anchors.top: parent.top
0057 anchors.right: toggle.left
0058 }
0059 QQC2.Switch {
0060 id: toggle
0061 checked: model.backendEnabled
0062 onToggled: model.backendEnabled = checked;
0063 anchors.top: parent.top
0064 anchors.right: parent.right
0065 }
0066 QQC2.Label {
0067 anchors.top: nameLabel.bottom
0068 anchors.left: parent.left
0069 anchors.right: toggle.left
0070 anchors.topMargin: Kirigami.Units.smallSpacing
0071 text: model.description
0072 font.italic: true
0073 wrapMode: Text.WordWrap
0074 }
0075 }
0076
0077 onClicked: {
0078 toggle.toggle(); // does not trigger the signal handler for toggled...
0079 model.backendEnabled = toggle.checked;
0080 }
0081 Accessible.onToggleAction: delegate.clicked()
0082 }
0083 }
0084
0085 ListView {
0086 model: backendModel
0087 delegate: backendDelegate
0088
0089 section.property: "countryCode"
0090 section.delegate: Kirigami.ListSectionHeader {
0091 text: {
0092 switch (section) {
0093 case "":
0094 case "UN":
0095 return i18n("Global")
0096 case "EU":
0097 return i18n("🇪🇺 European Union");
0098 default:
0099 const c = Country.fromAlpha2(section);
0100 return c.emojiFlag + " " + c.name;
0101 }
0102 }
0103 width: ListView.view.width
0104 Accessible.name: {
0105 switch (section) {
0106 case "":
0107 case "UN":
0108 return i18n("Global")
0109 case "EU":
0110 return i18n("European Union");
0111 default:
0112 return Country.fromAlpha2(section).name;
0113 }
0114 }
0115 }
0116 section.criteria: ViewSection.FullString
0117 }
0118 }