Warning, /pim/itinerary/src/app/CountryComboBoxDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2021-2022 Volker Krause <vkrause@kde.org>
0003 SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu>
0004 SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Controls as QQC2
0009 import org.kde.kirigamiaddons.formcard as FormCard
0010 import org.kde.i18n.localeData
0011 import org.kde.kirigami as Kirigami
0012
0013 /**
0014 * Combo box for showing a list of countries.
0015 * The model is expected to be an array of ISO 3166-1 alpha 2 codes.
0016 */
0017 FormCard.FormComboBoxDelegate {
0018 id: controlRoot
0019
0020 /** The currently selected country, as a KCountry object. */
0021 readonly property var currentCountry: Country.fromAlpha2(currentValue)
0022
0023 /** Initially selected country. */
0024 property string initialCountry
0025
0026 displayMode: Kirigami.Settings.isMobile ? FormCard.FormComboBoxDelegate.Page : FormCard.FormComboBoxDelegate.ComboBox
0027
0028 displayText: currentCountry ? (currentCountry.emojiFlag + ' ' + currentCountry.name) : ""
0029
0030 comboBoxDelegate: QQC2.ItemDelegate {
0031 id: delegate
0032 implicitWidth: ListView.view ? ListView.view.width : Kirigami.Units.gridUnit * 16
0033 highlighted: controlRoot.highlightedIndex === index
0034 property bool separatorVisible: false
0035 Kirigami.Theme.colorSet: controlRoot.Kirigami.Theme.inherit ? controlRoot.Kirigami.Theme.colorSet : Kirigami.Theme.View
0036 Kirigami.Theme.inherit: controlRoot.Kirigami.Theme.inherit
0037 text: {
0038 const c = Country.fromAlpha2(modelData);
0039 return c.emojiFlag + ' ' + c.name;
0040 }
0041 Accessible.name: Country.fromAlpha2(modelData).name
0042 Accessible.onPressAction: delegate.clicked()
0043 }
0044
0045 dialogDelegate: QQC2.RadioDelegate {
0046 id: delegate
0047 implicitWidth: ListView.view ? ListView.view.width : Kirigami.Units.gridUnit * 16
0048 text: {
0049 const c = Country.fromAlpha2(modelData);
0050 return c.emojiFlag + ' ' + c.name;
0051 }
0052 checked: controlRoot.currentIndex === index
0053 property bool separatorVisible: false
0054 Kirigami.Theme.colorSet: controlRoot.Kirigami.Theme.inherit ? controlRoot.Kirigami.Theme.colorSet : Kirigami.Theme.View
0055 Kirigami.Theme.inherit: controlRoot.Kirigami.Theme.inherit
0056 onClicked: {
0057 controlRoot.currentIndex = index;
0058 controlRoot.activated(index);
0059 controlRoot.closeDialog();
0060 }
0061 Accessible.name: Country.fromAlpha2(modelData).name
0062 Accessible.onPressAction: delegate.clicked()
0063 }
0064
0065 Component.onCompleted: if (initialCountry) {
0066 currentIndex = indexOfValue(initialCountry);
0067 }
0068 }