diff options
Diffstat (limited to 'Swift/QtUI/Roster/QtTreeWidget.cpp')
| -rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.cpp | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/Swift/QtUI/Roster/QtTreeWidget.cpp b/Swift/QtUI/Roster/QtTreeWidget.cpp index 91e9a33..ed76a6f 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.cpp +++ b/Swift/QtUI/Roster/QtTreeWidget.cpp @@ -28,3 +28,3 @@ #include <Swift/QtUI/QtUISettingConstants.h> - +#include <Swift/QtUI/Roster/RosterModel.h> #include <QtSwiftUtil.h> @@ -33,3 +33,3 @@ namespace Swift { -QtTreeWidget::QtTreeWidget(UIEventStream* eventStream, SettingsProvider* settings, QWidget* parent) : QTreeView(parent), tooltipShown_(false) { +QtTreeWidget::QtTreeWidget(UIEventStream* eventStream, SettingsProvider* settings, MessageTarget messageTarget, QWidget* parent) : QTreeView(parent), messageTarget_(messageTarget), tooltipShown_(false) { eventStream_ = eventStream; @@ -139,8 +139,20 @@ void QtTreeWidget::currentChanged(const QModelIndex& current, const QModelIndex& - void QtTreeWidget::handleItemActivated(const QModelIndex& index) { - RosterItem* item = static_cast<RosterItem*>(index.internalPointer()); - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); - if (contact) { - eventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(contact->getJID()))); + switch (messageTarget_) { + case MessageDisplayJID: { + QString indexJID = index.data(DisplayJIDRole).toString(); + if (!indexJID.isEmpty()) { + JID target = JID(Q2PSTRING(indexJID)).toBare(); + eventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(target))); + break; + } + } + case MessageDefaultJID: { + QString indexJID = index.data(JIDRole).toString(); + if (!indexJID.isEmpty()) { + JID target = JID(Q2PSTRING(indexJID)); + eventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(target))); + } + break; + } } @@ -232,2 +244,6 @@ void QtTreeWidget::show() { +void QtTreeWidget::setMessageTarget(MessageTarget messageTarget) { + messageTarget_ = messageTarget; +} + } |
Swift