diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index ee493da6..2e76061f 100644
--- a/include/MatrixClient.h
+++ b/include/MatrixClient.h
@@ -61,6 +61,7 @@ public:
void removeTypingNotification(const QString &roomid);
void readEvent(const QString &room_id, const QString &event_id);
void inviteUser(const QString &room_id, const QString &user);
+ void createRoom(const mtx::requests::CreateRoom &request);
QUrl getHomeServer() { return server_; };
int transactionId() { return txn_id_; };
@@ -86,6 +87,7 @@ signals:
void loggedOut();
void invitedUser(const QString &room_id, const QString &user);
+ void roomCreated(const QString &room_id);
void loginSuccess(const QString &userid, const QString &homeserver, const QString &token);
void registerSuccess(const QString &userid,
@@ -115,6 +117,7 @@ signals:
void messagesRetrieved(const QString &room_id, const mtx::responses::Messages &msgs);
void joinedRoom(const QString &room_id);
void leftRoom(const QString &room_id);
+ void roomCreationFailed(const QString &msg);
private:
QNetworkReply *makeUploadRequest(const QString &filename);
diff --git a/include/SideBarActions.h b/include/SideBarActions.h
index 7fbb7e67..f9b9bb1c 100644
--- a/include/SideBarActions.h
+++ b/include/SideBarActions.h
@@ -8,6 +8,7 @@
#include "FlatButton.h"
#include "Menu.h"
+#include "dialogs/CreateRoom.h"
#include "dialogs/JoinRoom.h"
class OverlayModal;
@@ -23,6 +24,7 @@ public:
signals:
void showSettings();
void joinRoom(const QString &room);
+ void createRoom(const mtx::requests::CreateRoom &request);
protected:
void resizeEvent(QResizeEvent *event) override;
@@ -37,6 +39,9 @@ private:
QSharedPointer<OverlayModal> joinRoomModal_;
QSharedPointer<dialogs::JoinRoom> joinRoomDialog_;
+ QSharedPointer<OverlayModal> createRoomModal_;
+ QSharedPointer<dialogs::CreateRoom> createRoomDialog_;
+
FlatButton *settingsBtn_;
FlatButton *createRoomBtn_;
FlatButton *joinRoomBtn_;
diff --git a/include/dialogs/CreateRoom.h b/include/dialogs/CreateRoom.h
new file mode 100644
index 00000000..96095187
--- /dev/null
+++ b/include/dialogs/CreateRoom.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <QFrame>
+
+#include <mtx.hpp>
+
+class FlatButton;
+class TextField;
+class QComboBox;
+class Toggle;
+
+namespace dialogs {
+
+class CreateRoom : public QFrame
+{
+ Q_OBJECT
+public:
+ CreateRoom(QWidget *parent = nullptr);
+
+signals:
+ void closing(bool isCreating, const mtx::requests::CreateRoom &request);
+
+protected:
+ void paintEvent(QPaintEvent *event) override;
+
+private:
+ void clearFields();
+
+ QComboBox *visibilityCombo_;
+ QComboBox *presetCombo_;
+
+ Toggle *directToggle_;
+
+ FlatButton *confirmBtn_;
+ FlatButton *cancelBtn_;
+
+ TextField *nameInput_;
+ TextField *topicInput_;
+ TextField *aliasInput_;
+
+ mtx::requests::CreateRoom request_;
+};
+
+} // dialogs
|