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 }