Warning, /network/tokodon/src/content/ui/LoginFlow/ServersPage.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 QtQml.Models
0008
0009 import org.kde.kirigami 2 as Kirigami
0010 import org.kde.kirigamiaddons.formcard 1 as FormCard
0011 import org.kde.kirigamiaddons.components 1 as Components
0012
0013 import org.kde.tokodon
0014
0015 MastoPage {
0016 id: root
0017
0018 title: i18nc("@title:window", "Pick a Server")
0019
0020 property var account
0021
0022 data: Connections {
0023 target: Controller
0024 function onNetworkErrorOccurred(error) {
0025 message.text = i18nc("@info:status Network status", "Failed to contact server: %1. Please check your proxy settings.", error)
0026 message.visible = true;
0027 }
0028 }
0029
0030 header: Components.Banner {
0031 id: message
0032 type: Kirigami.MessageType.Error
0033 width: parent.width
0034
0035 showCloseButton: true
0036
0037 actions: Kirigami.Action {
0038 text: i18n("Proxy Settings")
0039 icon.name: "settings-configure"
0040 onTriggered: pageStack.pushDialogLayer(Qt.createComponent("org.kde.tokodon", "NetworkProxySettings"))
0041 }
0042 }
0043
0044 function handleRegistration() {
0045 if (!account.registrationsOpen) {
0046 instanceUrl.status = Kirigami.MessageType.Error;
0047 instanceUrl.statusMessage = i18n("This server is closed for registration: %1", account.registrationMessage);
0048 return;
0049 }
0050
0051 account.fetchedInstanceMetadata.disconnect(handleRegistration);
0052
0053 Window.window.pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "RulesPage"), {
0054 account: account,
0055 });
0056 }
0057
0058 Component.onCompleted: instanceUrl.forceActiveFocus()
0059
0060 FormCard.FormHeader {
0061 title: i18nc("@title:group", "Pick a Server")
0062 }
0063
0064 FormCard.FormCard {
0065 FormCard.FormTextFieldDelegate {
0066 id: instanceUrl
0067 label: i18n("Server URL:")
0068 placeholderText: i18n("mastodon.social")
0069 onAccepted: continueButton.clicked()
0070 inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase
0071 }
0072
0073 FormCard.FormDelegateSeparator { above: continueButton }
0074
0075 FormCard.FormButtonDelegate {
0076 id: continueButton
0077 text: i18n("Continue")
0078 onClicked: {
0079 instanceUrl.statusMessage = "";
0080
0081 if (!instanceUrl.text) {
0082 instanceUrl.status = Kirigami.MessageType.Error;
0083 instanceUrl.statusMessage = i18n("Server URL must not be empty.");
0084 return;
0085 }
0086
0087 root.account = AccountManager.createNewAccount(instanceUrl.text, sslErrors.checked, false);
0088 root.account.fetchedInstanceMetadata.connect(handleRegistration);
0089 }
0090 }
0091 }
0092
0093 FormCard.FormHeader {
0094 title: i18nc("@title:group", "Network Settings")
0095 }
0096
0097 FormCard.FormCard {
0098 FormCard.FormSwitchDelegate {
0099 id: sslErrors
0100 text: i18nc("@option:check Login page", "Ignore SSL errors")
0101 }
0102
0103 FormCard.FormDelegateSeparator { above: proxySettingDelegate; below: sslErrors }
0104
0105 FormCard.FormButtonDelegate {
0106 id: proxySettingDelegate
0107 text: i18n("Proxy Settings")
0108 onClicked: Window.window.pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "NetworkProxyPage"))
0109 }
0110 }
0111 }