Files
neochat/src/qml/SelectSpacesDialog.qml
2024-10-10 22:06:19 +02:00

77 lines
2.2 KiB
QML

// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.labs.components as Components
import org.kde.neochat
Kirigami.Dialog {
id: root
/**
* @brief The current room this dialog is opened for.
*/
required property NeoChatRoom room
/**
* @brief The current list of space IDs that members of can join this room.
*/
property list<string> restrictedIds: room.restrictedIds
parent: applicationWindow().overlay
leftPadding: 0
rightPadding: 0
topPadding: 0
bottomPadding: 0
width: Math.min(applicationWindow().width, Kirigami.Units.gridUnit * 24)
title: i18nc("@title", "Select Spaces")
standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel
onAccepted: {
let ids = [];
for (var i in spaceGroup.buttons) {
if (spaceGroup.buttons[i].checked) {
ids.push(spaceGroup.buttons[i].modelData.id);
}
}
root.room.setJoinRule("restricted", ids);
}
QQC2.ButtonGroup {
id: spaceGroup
exclusive: false
}
contentItem: ColumnLayout {
spacing: 0
Repeater {
model: root.room.parentObjects(true)
delegate: FormCard.FormCheckDelegate {
required property var modelData
text: modelData.displayName
description: modelData.canonicalAlias
checked: root.restrictedIds.includes(modelData.id)
QQC2.ButtonGroup.group: spaceGroup
leading: Components.Avatar {
Layout.preferredWidth: Kirigami.Units.gridUnit * 2
Layout.preferredHeight: Kirigami.Units.gridUnit * 2
source: modelData.avatarUrl.toString().length > 0 ? connection.makeMediaUrl(modelData.avatarUrl) : ""
name: modelData.displayName
}
}
}
}
}