summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 23:59:50 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 23:59:50 +0200
commitef0b0f68795786751b04615451d42dbd7b3d7a5d (patch)
treea04f4677032d054d803e0a67929fbfe4d46eb87a /include
parentAdd gui option for joining rooms (#25) (diff)
downloadnheko-ef0b0f68795786751b04615451d42dbd7b3d7a5d.tar.xz
Add menu to invite users
Diffstat (limited to 'include')
-rw-r--r--include/InviteeItem.h27
-rw-r--r--include/MatrixClient.h2
-rw-r--r--include/TopRoomBar.h6
-rw-r--r--include/dialogs/InviteUsers.h41
4 files changed, 76 insertions, 0 deletions
diff --git a/include/InviteeItem.h b/include/InviteeItem.h
new file mode 100644

index 00000000..f0bdbdf0 --- /dev/null +++ b/include/InviteeItem.h
@@ -0,0 +1,27 @@ +#pragma once + +#include <QLabel> +#include <QWidget> + +#include "mtx.hpp" + +class FlatButton; + +class InviteeItem : public QWidget +{ + Q_OBJECT + +public: + InviteeItem(mtx::identifiers::User user, QWidget *parent = nullptr); + + QString userID() { return user_; } + +signals: + void removeItem(); + +private: + QString user_; + + QLabel *name_; + FlatButton *removeUserBtn_; +}; diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index 397ba11d..ee493da6 100644 --- a/include/MatrixClient.h +++ b/include/MatrixClient.h
@@ -60,6 +60,7 @@ public: void sendTypingNotification(const QString &roomid, int timeoutInMillis = 20000); void removeTypingNotification(const QString &roomid); void readEvent(const QString &room_id, const QString &event_id); + void inviteUser(const QString &room_id, const QString &user); QUrl getHomeServer() { return server_; }; int transactionId() { return txn_id_; }; @@ -84,6 +85,7 @@ signals: void versionError(const QString &error); void loggedOut(); + void invitedUser(const QString &room_id, const QString &user); void loginSuccess(const QString &userid, const QString &homeserver, const QString &token); void registerSuccess(const QString &userid, diff --git a/include/TopRoomBar.h b/include/TopRoomBar.h
index 7bd10356..471662a4 100644 --- a/include/TopRoomBar.h +++ b/include/TopRoomBar.h
@@ -26,6 +26,7 @@ #include <QSharedPointer> #include <QVBoxLayout> +#include "dialogs/InviteUsers.h" #include "dialogs/LeaveRoom.h" class Avatar; @@ -56,6 +57,7 @@ public: signals: void leaveRoom(); + void inviteUsers(QStringList users); protected: void paintEvent(QPaintEvent *event) override; @@ -76,12 +78,16 @@ private: QMenu *menu_; QAction *toggleNotifications_; QAction *leaveRoom_; + QAction *inviteUsers_; FlatButton *settingsBtn_; QSharedPointer<OverlayModal> leaveRoomModal_; QSharedPointer<dialogs::LeaveRoom> leaveRoomDialog_; + QSharedPointer<OverlayModal> inviteUsersModal_; + QSharedPointer<dialogs::InviteUsers> inviteUsersDialog_; + Avatar *avatar_; int buttonSize_; diff --git a/include/dialogs/InviteUsers.h b/include/dialogs/InviteUsers.h new file mode 100644
index 00000000..236a2558 --- /dev/null +++ b/include/dialogs/InviteUsers.h
@@ -0,0 +1,41 @@ +#pragma once + +#include <QFrame> +#include <QLabel> +#include <QListWidgetItem> +#include <QStringList> + +class FlatButton; +class TextField; +class QListWidget; + +namespace dialogs { + +class InviteUsers : public QFrame +{ + Q_OBJECT +public: + explicit InviteUsers(QWidget *parent = nullptr); + +protected: + void paintEvent(QPaintEvent *event) override; + +signals: + void closing(bool isLeaving, QStringList invitees); + +private slots: + void removeInvitee(QListWidgetItem *item); + +private: + void addUser(); + QStringList invitedUsers() const; + + FlatButton *confirmBtn_; + FlatButton *cancelBtn_; + + TextField *inviteeInput_; + QLabel *errorLabel_; + + QListWidget *inviteeList_; +}; +} // dialogs