Warning, /multimedia/plasmatube/src/ui/loginflow/AddPipedPage.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-3.0-or-later
0003 
0004 import QtQuick
0005 import QtQuick.Controls as QQC2
0006 import QtQuick.Layouts
0007 import QtQuick.Window
0008 import QtQml.Models
0009 
0010 import org.kde.kirigami as Kirigami
0011 import org.kde.kirigamiaddons.formcard as FormCard
0012 import org.kde.kitemmodels as KItemModels
0013 import org.kde.plasmatube
0014 
0015 FormCard.FormCardPage {
0016     id: root
0017 
0018     title: i18nc("@title:window", "Add Piped Source")
0019 
0020     function addSource(url) {
0021         PlasmaTube.sourceManager.createPipedSource(url);
0022         if (root.Window.window !== applicationWindow()) {
0023             root.Window.window.close();
0024         }
0025     }
0026 
0027     FormCard.FormHeader {
0028         title: i18n("Select a instance")
0029     }
0030 
0031     FormCard.FormCard {
0032         FormCard.FormTextFieldDelegate {
0033             id: searchDelegate
0034             label: i18n("Search")
0035             placeholderText: i18n("pipedapi.kavin.rocks")
0036         }
0037 
0038         FormCard.FormDelegateSeparator {}
0039 
0040         Repeater {
0041             model: KItemModels.KSortFilterProxyModel {
0042                 id: filterModel
0043 
0044                 sourceModel: PipedInstancesModel {}
0045 
0046                 filterString: searchDelegate.text
0047                 filterRoleName: "url"
0048             }
0049 
0050             delegate: ColumnLayout {
0051                 required property int index
0052                 required property string name
0053                 required property string url
0054 
0055                 FormCard.FormDelegateSeparator {
0056                     visible: index !== 0
0057                 }
0058 
0059                 FormCard.FormButtonDelegate {
0060                     text: name
0061                     onClicked: root.addSource(url)
0062                 }
0063             }
0064         }
0065 
0066         FormCard.FormTextDelegate {
0067             text: i18n("No public instances found.")
0068             visible: filterModel.count === 0
0069         }
0070 
0071         FormCard.FormDelegateSeparator {}
0072 
0073         FormCard.FormButtonDelegate {
0074             text: i18nc("Add instance", "Add %1", searchDelegate.text)
0075             visible: searchDelegate.text.length !== 0
0076             onClicked: root.addSource(searchDelegate.text)
0077         }
0078     }
0079 }