Warning, /network/neochat/src/qml/DevicesPage.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2020 - 2023 Tobias Fella <tobias.fella@kde.org>
0002 // SPDX-FileCopyrightText: 2022 James Graham <james.h.graham@protonmail.com>
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 import QtQuick
0006 import QtQuick.Controls as QQC2
0007 import QtQuick.Layouts
0008 
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.kirigamiaddons.formcard as FormCard
0011 
0012 import org.kde.neochat
0013 
0014 FormCard.FormCardPage {
0015     id: root
0016 
0017     title: i18n("Devices")
0018 
0019     background: Kirigami.PlaceholderMessage {
0020         text: i18n("Loading…")
0021         visible: !thisDeviceCard.visible
0022     }
0023 
0024     required property NeoChatConnection connection
0025 
0026     property DevicesModel devicesModel: DevicesModel {
0027         id: devicesModel
0028         connection: root.connection
0029     }
0030 
0031     DevicesCard {
0032         id: thisDeviceCard
0033         title: i18n("This Device")
0034         type: DevicesModel.This
0035         showVerifyButton: false
0036     }
0037     DevicesCard {
0038         title: i18n("Verified Devices")
0039         type: DevicesModel.Verified
0040         showVerifyButton: true
0041     }
0042     DevicesCard {
0043         title: i18n("Unverified Devices")
0044         type: DevicesModel.Unverified
0045         showVerifyButton: true
0046     }
0047     DevicesCard {
0048         title: i18n("Devices without Encryption Support")
0049         type: DevicesModel.Unencrypted
0050         showVerifyButton: false
0051     }
0052 
0053     FormCard.AbstractFormDelegate {
0054         Layout.fillWidth: true
0055         visible: root.connection && devicesModel.count === 0 // We can assume 0 means loading since there is at least one device
0056         contentItem: Kirigami.LoadingPlaceholder { }
0057     }
0058 
0059     Kirigami.InlineMessage {
0060         Layout.fillWidth: true
0061         Layout.maximumWidth: Kirigami.Units.gridUnit * 30
0062         Layout.alignment: Qt.AlignHCenter
0063         text: i18n("Please login to view the signed-in devices for your account.")
0064         type: Kirigami.MessageType.Information
0065         visible: !root.connection
0066     }
0067 
0068     property Kirigami.Dialog passwordSheet: Kirigami.Dialog {
0069         id: passwordSheet
0070 
0071         property string deviceId
0072 
0073         preferredWidth: Kirigami.Units.gridUnit * 24
0074 
0075         title: i18n("Remove device")
0076 
0077         standardButtons: QQC2.Dialog.Cancel
0078         FormCard.FormCard {
0079             FormCard.FormTextFieldDelegate {
0080                 id: passwordField
0081                 label: i18n("Password:")
0082                 echoMode: TextInput.Password
0083             }
0084         }
0085         customFooterActions: [
0086             Kirigami.Action {
0087                 text: i18nc("As in 'Remove this device'", "Remove")
0088                 icon.name: "delete"
0089                 onTriggered: {
0090                     devicesModel.logout(passwordSheet.deviceId, passwordField.text)
0091                     passwordField.text = ""
0092                     passwordSheet.close()
0093                 }
0094             }
0095         ]
0096     }
0097 }