Warning, /multimedia/plasmatube/src/ui/loginflow/AddPeerTubePage.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 PeerTube Source")
0019 
0020     function addSource(url) {
0021         PlasmaTube.sourceManager.createPeerTubeSource(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("joinpeertube.org")
0036         }
0037 
0038         FormCard.FormDelegateSeparator {}
0039 
0040         Repeater {
0041             id: instanceRepeater
0042 
0043             model: PeerTubeInstancesModel {
0044                 filterString: searchDelegate.text
0045             }
0046 
0047             delegate: ColumnLayout {
0048                 required property int index
0049                 required property string url
0050 
0051                 FormCard.FormDelegateSeparator {
0052                     visible: index !== 0
0053                 }
0054 
0055                 FormCard.FormButtonDelegate {
0056                     text: url
0057                     onClicked: root.addSource(url)
0058                 }
0059             }
0060         }
0061 
0062         FormCard.FormTextDelegate {
0063             text: i18n("No public instances found.")
0064             visible: instanceRepeater.count === 0
0065         }
0066 
0067         FormCard.FormDelegateSeparator {
0068             visible: searchDelegate.text.length !== 0
0069         }
0070 
0071         FormCard.FormButtonDelegate {
0072             text: searchDelegate.text
0073             visible: searchDelegate.text.length !== 0
0074             onClicked: root.addSource(searchDelegate.text)
0075         }
0076     }
0077 }