summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2022-04-28 20:30:22 -0400
committerLoren Burkholder <computersemiexpert@outlook.com>2022-04-28 20:34:12 -0400
commitd3c6bcd43c96363d3b8b98893b3273043138d2e4 (patch)
tree6a704da9021942aac1051e700c30671eaad4d01b
parent07be49ba22cde98be382cdad8e46a4ccb33e68a1 (diff)
Allow creating spaces
-rw-r--r--resources/qml/RoomList.qml2
-rw-r--r--resources/qml/dialogs/CreateRoom.qml22
-rw-r--r--src/ui/NhekoGlobalObject.cpp7
-rw-r--r--src/ui/NhekoGlobalObject.h2
4 files changed, 28 insertions, 5 deletions
diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml
index 078baede..980d06e3 100644
--- a/resources/qml/RoomList.qml
+++ b/resources/qml/RoomList.qml
@@ -661,7 +661,7 @@ Page {
}
Platform.MenuItem {
- text: qsTr("Create a new room")
+ text: qsTr("Create a new room or space")
onTriggered: {
var createRoom = createRoomComponent.createObject(timelineRoot);
createRoom.show();
diff --git a/resources/qml/dialogs/CreateRoom.qml b/resources/qml/dialogs/CreateRoom.qml
index 5d224885..c617dc82 100644
--- a/resources/qml/dialogs/CreateRoom.qml
+++ b/resources/qml/dialogs/CreateRoom.qml
@@ -85,7 +85,7 @@ ApplicationWindow {
id: privateHover
}
ToolTip.visible: privateHover.hovered
- ToolTip.text: qsTr("Public rooms can be joined by anyone, private rooms need explicit invites.")
+ ToolTip.text: qsTr("Public rooms can be joined by anyone; private rooms need explicit invites.")
ToolTip.delay: Nheko.tooltipDelay
}
ToggleButton {
@@ -97,6 +97,24 @@ ApplicationWindow {
Label {
Layout.preferredWidth: implicitWidth
Layout.alignment: Qt.AlignLeft
+ text: qsTr("Space")
+ color: Nheko.colors.text
+ HoverHandler {
+ id: spaceHover
+ }
+ ToolTip.visible: spaceHover.hovered
+ ToolTip.text: qsTr("Make this a space for organizing other rooms and spaces.")
+ ToolTip.delay: Nheko.tooltipDelay
+ }
+ ToggleButton {
+ Layout.alignment: Qt.AlignRight
+ Layout.preferredWidth: implicitWidth
+ id: isSpace
+ checked: false
+ }
+ Label {
+ Layout.preferredWidth: implicitWidth
+ Layout.alignment: Qt.AlignLeft
text: qsTr("Trusted")
color: Nheko.colors.text
HoverHandler {
@@ -150,7 +168,7 @@ ApplicationWindow {
else {
preset = isTrusted.checked ? 2 : 0;
}
- Nheko.createRoom(newRoomName.text, newRoomTopic.text, newRoomAlias.text, isEncrypted.checked, preset)
+ Nheko.createRoom(newRoomName.text, newRoomTopic.text, newRoomAlias.text, isEncrypted.checked, isSpace.checked, preset)
createRoomRoot.close();
}
}
diff --git a/src/ui/NhekoGlobalObject.cpp b/src/ui/NhekoGlobalObject.cpp
index 2e1aadf0..9ffbb666 100644
--- a/src/ui/NhekoGlobalObject.cpp
+++ b/src/ui/NhekoGlobalObject.cpp
@@ -128,7 +128,7 @@ Nheko::logout() const
}
void
-Nheko::createRoom(QString name, QString topic, QString aliasLocalpart, bool isEncrypted, int preset)
+Nheko::createRoom(QString name, QString topic, QString aliasLocalpart, bool isEncrypted, bool isSpace, int preset)
{
mtx::requests::CreateRoom req;
@@ -155,5 +155,10 @@ Nheko::createRoom(QString name, QString topic, QString aliasLocalpart, bool isEn
req.initial_state.emplace_back(std::move(enc));
}
+ if (isSpace) {
+ req.creation_content = mtx::events::state::Create{};
+ req.creation_content->type = "m.space";
+ }
+
emit ChatPage::instance()->createRoom(req);
}
diff --git a/src/ui/NhekoGlobalObject.h b/src/ui/NhekoGlobalObject.h
index cfcf31fb..9e1cbd7e 100644
--- a/src/ui/NhekoGlobalObject.h
+++ b/src/ui/NhekoGlobalObject.h
@@ -53,7 +53,7 @@ public:
Q_INVOKABLE void showUserSettingsPage() const;
Q_INVOKABLE void logout() const;
Q_INVOKABLE void
- createRoom(QString name, QString topic, QString aliasLocalpart, bool isEncrypted, int preset);
+ createRoom(QString name, QString topic, QString aliasLocalpart, bool isEncrypted, bool isSpace, int preset);
public slots:
void updateUserProfile();