Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F1037419
RoomSettingsPage.qml
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
RoomSettingsPage.qml
View Options
/*
* 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
Details
Attached
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)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment