Warning, /network/tokodon/src/content/ui/LanguageSelector.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003
0004 import QtQuick
0005 import QtQuick.Controls 2 as QQC2
0006 import QtQuick.Layouts
0007 import org.kde.kirigami 2 as Kirigami
0008 import org.kde.tokodon
0009 import QtQuick.Templates 2.15 as T
0010 import org.kde.kirigamiaddons.delegates as Delegates
0011 import org.kde.kirigamiaddons.components as Components
0012 import org.kde.kitemmodels
0013
0014 import "Components"
0015
0016 Components.MessageDialog {
0017 id: controlRoot
0018
0019 property alias listView: listView
0020
0021 signal codeSelected(code: string)
0022
0023 parent: applicationWindow().overlay
0024
0025 title: i18nc("@title", "Select Language")
0026
0027 implicitWidth: Kirigami.Units.gridUnit * 30
0028 implicitHeight: Kirigami.Units.gridUnit * 30
0029
0030 padding: 0
0031
0032 header: ColumnLayout {
0033 width: parent.width
0034 spacing: 0
0035
0036 RowLayout {
0037 Layout.margins: Kirigami.Units.smallSpacing
0038 Kirigami.Heading {
0039 Layout.leftMargin: Kirigami.Units.smallSpacing
0040 Layout.rightMargin: Kirigami.Units.smallSpacing
0041 Layout.fillWidth: true
0042 text: controlRoot.title
0043 }
0044
0045 QQC2.ToolButton {
0046 icon.name: "dialog-close"
0047 text: i18nc("@action:button", "Close")
0048 display: QQC2.Button.IconOnly
0049 }
0050 }
0051
0052 Kirigami.Separator {
0053 Layout.fillWidth: true
0054 }
0055 }
0056
0057 footer: null
0058
0059 onOpened: listView.positionViewAtIndex(listView.currentIndex, ListView.Center)
0060
0061 contentItem: ListView {
0062 id: listView
0063
0064 clip: true
0065
0066 Kirigami.Theme.colorSet: Kirigami.Theme.View
0067
0068 currentIndex: -1
0069 model: KSortFilterProxyModel{
0070 sourceModel: RawLanguageModel {}
0071 sortRoleName: "preferred"
0072 sortOrder: Qt.DescendingOrder
0073 }
0074
0075 delegate: Delegates.RoundedItemDelegate {
0076 id: delegate
0077
0078 required property int index
0079 required property string name
0080 required property string code
0081 required property bool preferred
0082
0083 highlighted: ListView.isCurrentItem
0084 text: name
0085 icon.source: preferred ? "favorite" : undefined
0086
0087 onClicked: {
0088 controlRoot.codeSelected(code);
0089 controlRoot.close();
0090 }
0091 }
0092 }
0093 }