Page MenuHomePhorge

RoomSettingsPage.qml
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

RoomSettingsPage.qml

/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15
import org.kde.kirigami 2.13 as Kirigami
import '../matrix-helpers.js' as Helpers
import '..' as Kazv
import '.' as RoomSettings
Kirigami.ScrollablePage {
id: roomSettingsPage
property var room
property var roomDisplayName: Helpers.roomNameOrHeroes(room, l10n)
property var customTagIds: room.tagIds.filter(k => k.startsWith('u.'))
title: l10n.get('room-settings-page-title', { room: roomDisplayName })
function tagIdToName(tagId) {
return tagId.slice(2);
}
property var tagHandler: RoomSettings.RoomTagHandler {
room: roomSettingsPage.room
}
ColumnLayout {
Button {
text: l10n.get('room-settings-members-action')
Layout.fillWidth: true
onClicked: pageStack.push(Qt.resolvedUrl('qrc:/room-settings/RoomMemberListPage.qml'), { room })
}
Label {
text: l10n.get('room-settings-tags')
Layout.fillWidth: true
}
CheckBox {
text: l10n.get('room-settings-favourited')
checkable: true
checked: tagHandler.hasTag('m.favourite')
enabled: tagHandler.available
onToggled: tagHandler.toggleTag('m.favourite')
}
ListView {
model: customTagIds.length
Layout.fillWidth: true
Layout.fillHeight: true
Layout.minimumHeight: childrenRect.height
delegate: Kirigami.SwipeListItem {
required property var index
Label {
text: tagIdToName(customTagIds[index])
}
actions: [
Kirigami.Action {
enabled: tagHandler.available
iconName: 'list-remove-symbolic'
text: l10n.get('room-settings-remove-tag')
onTriggered: tagHandler.toggleTag(customTagIds[index])
}
]
}
}
RowLayout {
TextField {
id: newTagName
enabled: tagHandler.available
text: ''
Layout.fillWidth: true
}
Button {
enabled: tagHandler.available
text: l10n.get('room-settings-add-tag')
onClicked: {
tagHandler.toggleTag('u.' + newTagName.text)
}
}
Connections {
target: tagHandler
function onTagAdded(tagId) {
if (tagId === 'u.' + newTagName.text) {
newTagName.text = '';
}
}
}
}
Button {
text: l10n.get('room-leave-action')
onClicked: {
confirmLeaveOverlay.open();
}
}
}
property var confirmLeaveOverlay: Kazv.ConfirmationOverlay {
parent: roomSettingsPage.overlay
title: l10n.get('room-leave-confirm-popup-title')
message: l10n.get('room-leave-confirm-popup-message')
confirmActionText: l10n.get('room-leave-confirm-popup-confirm-action')
cancelActionText: l10n.get('room-leave-confirm-popup-cancel-action')
onAccepted: leaveRoomHandler.call()
}
property var leaveRoomHandler: Kazv.AsyncHandler {
trigger: () => room.leaveRoom()
onResolved: {
if (success) {
showPassiveNotification(l10n.get('leave-room-success-prompt', { room: roomId }));
inviteOverlay.close();
} else {
showPassiveNotification(l10n.get('leave-room-failed-prompt', { room: roomId, errorCode: data.errorCode, errorMsg: data.error }));
}
}
}
}

File Metadata

Mime Type
text/plain
Expires
Wed, May 14, 7:15 AM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
101212
Default Alt Text
RoomSettingsPage.qml (3 KB)

Event Timeline