diff options
author | Thanos Doukoudakis <thanos.doukoudakis@isode.com> | 2017-03-10 15:55:13 (GMT) |
---|---|---|
committer | Kevin Smith <kevin.smith@isode.com> | 2017-04-04 14:43:24 (GMT) |
commit | bd5c623c6e54c1f449b7af06177a9a5c7fbcb4a7 (patch) | |
tree | 1d2d8dba2650f8bdf1eaf3fa649cb82b2a5713ab | |
parent | ac40889c5466314dd22def238449352a2a4cc67e (diff) | |
download | swift-bd5c623c6e54c1f449b7af06177a9a5c7fbcb4a7.zip swift-bd5c623c6e54c1f449b7af06177a9a5c7fbcb4a7.tar.bz2 |
Open 1:1 chat to real JIDs from MUC rooms (not PMs) when possible
Opens the chat with the user JID instead of the MUC JID.
Does not affect existing behaviour on normal one2one chats.
Test-Information:
Builds on Windows and unit test pass.
Tested the behaviour on single chats from contacts list (roster), start new chat with
one and multiple users. Also tested on MUC rooms that are non-anonymous,
semi-anonymous and anonymous.
Change-Id: I2b8fbacb1fa640167ec196d4215a13ad4905d45c
-rw-r--r-- | Swift/Controllers/Roster/ContactRosterItem.h | 8 | ||||
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 3 | ||||
-rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.cpp | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/Swift/Controllers/Roster/ContactRosterItem.h b/Swift/Controllers/Roster/ContactRosterItem.h index 37c3840..9779859 100644 --- a/Swift/Controllers/Roster/ContactRosterItem.h +++ b/Swift/Controllers/Roster/ContactRosterItem.h @@ -43,6 +43,14 @@ class ContactRosterItem : public RosterItem { }; public: + /** + * @brief ContactRosterItem contains the information of a contact that is part of a XMPP Roster. + * @param jid The JabberID of the contact in the Roster entry. + * @param displayJID An alternate JID that is used instead of the JID this item represents. If not available, + * an empty node should be passed. This parameter will be converted to a bare JID. + * @param name The name or nickname of the contact + * @param parent The roster group that the contact is a member of. The same JID may be in several roster groups, in which case they will have individual ContactRosterItems with the same JID. + */ ContactRosterItem(const JID& jid, const JID& displayJID, const std::string& name, GroupRosterItem* parent); virtual ~ContactRosterItem(); diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index ca615f3..c509ab3 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -114,7 +114,7 @@ QtChatWindow::QtChatWindow(const QString& contact, QtChatTheme* theme, UIEventSt } logRosterSplitter_->addWidget(messageLog_); - treeWidget_ = new QtOccupantListWidget(eventStream_, settings_, QtTreeWidget::MessageDefaultJID, this); + treeWidget_ = new QtOccupantListWidget(eventStream_, settings_, QtTreeWidget::MessageDisplayJID, this); treeWidget_->hide(); logRosterSplitter_->addWidget(treeWidget_); logRosterSplitter_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -459,7 +459,6 @@ void QtChatWindow::closeEvent(QCloseEvent* event) { void QtChatWindow::convertToMUC(MUCType mucType) { impromptu_ = (mucType == ImpromptuMUC); - treeWidget_->setMessageTarget(impromptu_ ? QtTreeWidget::MessageDisplayJID : QtTreeWidget::MessageDefaultJID); isMUC_ = true; treeWidget_->show(); subject_->setVisible(!impromptu_); diff --git a/Swift/QtUI/Roster/QtTreeWidget.cpp b/Swift/QtUI/Roster/QtTreeWidget.cpp index 1264a09..ac9f541 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.cpp +++ b/Swift/QtUI/Roster/QtTreeWidget.cpp @@ -240,7 +240,6 @@ JID QtTreeWidget::jidFromIndex(const QModelIndex& index) const { JID target; if (messageTarget_ == MessageDisplayJID) { target = JID(Q2PSTRING(index.data(DisplayJIDRole).toString())); - target = target.toBare(); } if (!target.isValid()) { target = JID(Q2PSTRING(index.data(JIDRole).toString())); |