diff options
-rw-r--r-- | Swift/Controllers/Chat/ChatController.cpp | 4 | ||||
-rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 6 | ||||
-rw-r--r-- | Swift/Controllers/Chat/UserSearchController.cpp | 7 | ||||
-rw-r--r-- | Swift/Controllers/UIEvents/InviteToMUCUIEvent.h | 8 | ||||
-rw-r--r-- | Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h | 18 | ||||
-rw-r--r-- | Swift/Controllers/UIInterfaces/UserSearchWindow.h | 1 | ||||
-rw-r--r-- | Swift/QtUI/UserSearch/QtUserSearchWindow.cpp | 8 | ||||
-rw-r--r-- | Swift/QtUI/UserSearch/QtUserSearchWindow.h | 2 |
8 files changed, 36 insertions, 18 deletions
diff --git a/Swift/Controllers/Chat/ChatController.cpp b/Swift/Controllers/Chat/ChatController.cpp index 41a34b9..cd8fa0c 100644 --- a/Swift/Controllers/Chat/ChatController.cpp +++ b/Swift/Controllers/Chat/ChatController.cpp @@ -297,7 +297,7 @@ void ChatController::handleUnblockUserRequest() { } void ChatController::handleInviteToChat(const std::vector<JID>& droppedJIDs) { - std::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(toJID_.toBare(), droppedJIDs, RequestInviteToMUCUIEvent::Impromptu)); + std::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(getToJID(), droppedJIDs, RequestInviteToMUCUIEvent::Impromptu)); eventStream_->send(event); } @@ -307,7 +307,7 @@ void ChatController::handleWindowClosed() { void ChatController::handleUIEvent(std::shared_ptr<UIEvent> event) { std::shared_ptr<InviteToMUCUIEvent> inviteEvent = std::dynamic_pointer_cast<InviteToMUCUIEvent>(event); - if (inviteEvent && inviteEvent->getRoom() == toJID_.toBare()) { + if (inviteEvent && inviteEvent->getOriginator() == getToJID()) { onConvertToMUC(detachChatWindow(), inviteEvent->getInvites(), inviteEvent->getReason()); } } diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 349bf8a..ceed776 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -7,6 +7,7 @@ #include <Swift/Controllers/Chat/MUCController.h> #include <algorithm> +#include <memory> #include <boost/bind.hpp> #include <boost/regex.hpp> @@ -993,13 +994,12 @@ void MUCController::handleDestroyRoomRequest() { void MUCController::handleInvitePersonToThisMUCRequest(const std::vector<JID>& jidsToInvite) { RequestInviteToMUCUIEvent::ImpromptuMode mode = isImpromptu_ ? RequestInviteToMUCUIEvent::Impromptu : RequestInviteToMUCUIEvent::NotImpromptu; - std::shared_ptr<UIEvent> event(new RequestInviteToMUCUIEvent(muc_->getJID(), jidsToInvite, mode)); - eventStream_->send(event); + eventStream_->send(std::make_shared<RequestInviteToMUCUIEvent>(getToJID(), jidsToInvite, mode)); } void MUCController::handleUIEvent(std::shared_ptr<UIEvent> event) { std::shared_ptr<InviteToMUCUIEvent> inviteEvent = std::dynamic_pointer_cast<InviteToMUCUIEvent>(event); - if (inviteEvent && inviteEvent->getRoom() == muc_->getJID()) { + if (inviteEvent && inviteEvent->getOriginator() == muc_->getJID()) { for (const auto& jid : inviteEvent->getInvites()) { muc_->invitePerson(jid, inviteEvent->getReason(), isImpromptu_); } diff --git a/Swift/Controllers/Chat/UserSearchController.cpp b/Swift/Controllers/Chat/UserSearchController.cpp index 91e0dea..91de670 100644 --- a/Swift/Controllers/Chat/UserSearchController.cpp +++ b/Swift/Controllers/Chat/UserSearchController.cpp @@ -81,7 +81,7 @@ void UserSearchController::setCanInitiateImpromptuMUC(bool supportsImpromptu) { void UserSearchController::handleUIEvent(std::shared_ptr<UIEvent> event) { bool handle = false; std::shared_ptr<RequestAddUserDialogUIEvent> addUserRequest = std::shared_ptr<RequestAddUserDialogUIEvent>(); - RequestInviteToMUCUIEvent::ref inviteToMUCRequest = RequestInviteToMUCUIEvent::ref(); + auto inviteToMUCRequest = RequestInviteToMUCUIEvent::ref(); switch (type_) { case AddContact: if ((addUserRequest = std::dynamic_pointer_cast<RequestAddUserDialogUIEvent>(event))) { @@ -109,10 +109,11 @@ void UserSearchController::handleUIEvent(std::shared_ptr<UIEvent> event) { if (!name.empty() && jid.isValid()) { window_->prepopulateJIDAndName(jid, name); } - } else if (inviteToMUCRequest) { + } + else if (inviteToMUCRequest) { window_->setCanSupplyDescription(!inviteToMUCRequest->isImpromptu()); window_->setJIDs(inviteToMUCRequest->getInvites()); - window_->setRoomJID(inviteToMUCRequest->getRoom()); + window_->setOriginator(inviteToMUCRequest->getOriginator()); } return; } diff --git a/Swift/Controllers/UIEvents/InviteToMUCUIEvent.h b/Swift/Controllers/UIEvents/InviteToMUCUIEvent.h index 414582d..e38eab8 100644 --- a/Swift/Controllers/UIEvents/InviteToMUCUIEvent.h +++ b/Swift/Controllers/UIEvents/InviteToMUCUIEvent.h @@ -24,11 +24,11 @@ namespace Swift { public: typedef std::shared_ptr<InviteToMUCUIEvent> ref; - InviteToMUCUIEvent(const JID& room, const std::vector<JID>& JIDsToInvite, const std::string& reason) : room_(room), invite_(JIDsToInvite), reason_(reason) { + InviteToMUCUIEvent(const JID& originator, const std::vector<JID>& JIDsToInvite, const std::string& reason) : originator_(originator), invite_(JIDsToInvite), reason_(reason) { } - const JID& getRoom() const { - return room_; + const JID& getOriginator() const { + return originator_; } const std::vector<JID> getInvites() const { @@ -40,7 +40,7 @@ namespace Swift { } private: - JID room_; + JID originator_; std::vector<JID> invite_; std::string reason_; }; diff --git a/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h b/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h index dac499f..a8e4bb7 100644 --- a/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h +++ b/Swift/Controllers/UIEvents/RequestInviteToMUCUIEvent.h @@ -29,12 +29,22 @@ namespace Swift { NotImpromptu }; - RequestInviteToMUCUIEvent(const JID& room, const std::vector<JID>& JIDsToInvite, ImpromptuMode impromptu) : room_(room), invite_(JIDsToInvite) { + /** + * @brief RequestInviteToMUCUIEvent + * @param originator This can be a MUC JID if the user wants to invite + * people to an existing MUC, or a contact JID if this is the + * start of an impromptu group chat. + * @param JIDsToInvite This is a std::vector of JIDs which are prefilled + * in the invite dialog. + * @param impromptu This flag indicates whether it is a normal MUC invite + * or an impromptu MUC invite. + */ + RequestInviteToMUCUIEvent(const JID& originator, const std::vector<JID>& JIDsToInvite, ImpromptuMode impromptu) : originator_(originator), invite_(JIDsToInvite) { isImpromptu_ = impromptu == Impromptu; } - const JID& getRoom() const { - return room_; + const JID& getOriginator() const { + return originator_; } const std::vector<JID> getInvites() const { @@ -46,7 +56,7 @@ namespace Swift { } private: - JID room_; + JID originator_; std::vector<JID> invite_; bool isImpromptu_; }; diff --git a/Swift/Controllers/UIInterfaces/UserSearchWindow.h b/Swift/Controllers/UIInterfaces/UserSearchWindow.h index be17dc0..279f4f3 100644 --- a/Swift/Controllers/UIInterfaces/UserSearchWindow.h +++ b/Swift/Controllers/UIInterfaces/UserSearchWindow.h @@ -35,6 +35,7 @@ namespace Swift { virtual void prepopulateJIDAndName(const JID& jid, const std::string& name) = 0; virtual void setContactSuggestions(const std::vector<Contact::ref>& suggestions) = 0; virtual void setJIDs(const std::vector<JID>&) = 0; + virtual void setOriginator(const JID& originator) = 0; virtual void setRoomJID(const JID& roomJID) = 0; virtual std::string getReason() const = 0; virtual std::vector<JID> getJIDs() const = 0; diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp index e00582c..cf62540 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp +++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp @@ -145,13 +145,13 @@ void QtUserSearchWindow::handleAccepted() { jids.push_back(contact->jid); } - eventStream_->send(std::make_shared<CreateImpromptuMUCUIEvent>(jids, JID(), Q2PSTRING(firstMultiJIDPage_->reason_->text()))); + eventStream_->send(std::make_shared<CreateImpromptuMUCUIEvent>(jids, Q2PSTRING(firstMultiJIDPage_->reason_->text()))); break; case InviteToChat: for (Contact::ref contact : contactVector_) { jids.push_back(contact->jid); } - eventStream_->send(std::make_shared<InviteToMUCUIEvent>(roomJID_, jids, Q2PSTRING(firstMultiJIDPage_->reason_->text()))); + eventStream_->send(std::make_shared<InviteToMUCUIEvent>(originatorJID_, jids, Q2PSTRING(firstMultiJIDPage_->reason_->text()))); break; } } @@ -387,6 +387,10 @@ void QtUserSearchWindow::setJIDs(const std::vector<JID> &jids) { onJIDUpdateRequested(jids); } +void QtUserSearchWindow::setOriginator(const JID& originator) { + originatorJID_ = originator; +} + void QtUserSearchWindow::setRoomJID(const JID& roomJID) { roomJID_ = roomJID; } diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.h b/Swift/QtUI/UserSearch/QtUserSearchWindow.h index 5d8b755..b9d4698 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchWindow.h +++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.h @@ -47,6 +47,7 @@ namespace Swift { virtual void prepopulateJIDAndName(const JID& jid, const std::string& name); virtual void setContactSuggestions(const std::vector<Contact::ref>& suggestions); virtual void setJIDs(const std::vector<JID> &jids); + virtual void setOriginator(const JID& originator); virtual void setRoomJID(const JID &roomJID); virtual std::string getReason() const; virtual std::vector<JID> getJIDs() const; @@ -97,6 +98,7 @@ namespace Swift { QtUserSearchDetailsPage* detailsPage_; JID myServer_; JID roomJID_; + JID originatorJID_; int lastPage_; std::vector<Contact::ref> contactVector_; SettingsProvider* settings_; |