summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-04-07 09:19:50 (GMT)
committerRichard Maudsley <richard.maudsley@isode.com>2014-04-07 13:07:43 (GMT)
commita7c7602e89d58056940885112f8764a31e9991da (patch)
treee713e2d7eed2c2ba2925ec0a70fe93eb707c077a /Swift/QtUI/Roster/RosterModel.cpp
parent1a35178bcad7c30e50a19e4017d021fb0485ccf0 (diff)
downloadswift-contrib-a7c7602e89d58056940885112f8764a31e9991da.zip
swift-contrib-a7c7602e89d58056940885112f8764a31e9991da.tar.bz2
Allow contacts to be dragged from the Chats tab into the search window
Change-Id: Ib1ecd2f95fb26269d8aa19094aac6e1f691cdf35
Diffstat (limited to 'Swift/QtUI/Roster/RosterModel.cpp')
-rw-r--r--Swift/QtUI/Roster/RosterModel.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/Swift/QtUI/Roster/RosterModel.cpp b/Swift/QtUI/Roster/RosterModel.cpp
index 2bd0d09..d8108ba 100644
--- a/Swift/QtUI/Roster/RosterModel.cpp
+++ b/Swift/QtUI/Roster/RosterModel.cpp
@@ -1,37 +1,37 @@
/*
- * Copyright (c) 2010-2013 Kevin Smith
+ * Copyright (c) 2010-2014 Kevin Smith
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Swift/QtUI/Roster/RosterModel.h>
#include <boost/bind.hpp>
#include <QColor>
#include <QIcon>
#include <QMimeData>
#include <qdebug.h>
#include <Swiften/Elements/StatusShow.h>
#include <Swiften/Base/Path.h>
#include <Swift/Controllers/Roster/ContactRosterItem.h>
#include <Swift/Controllers/Roster/GroupRosterItem.h>
#include <Swift/Controllers/StatusUtil.h>
#include <Swift/QtUI/Roster/QtTreeWidget.h>
#include <Swift/QtUI/Roster/RosterTooltip.h>
#include <Swift/QtUI/QtResourceHelper.h>
#include <Swift/QtUI/QtSwiftUtil.h>
namespace Swift {
RosterModel::RosterModel(QtTreeWidget* view, bool screenReaderMode) : roster_(NULL), view_(view), screenReader_(screenReaderMode) {
const int tooltipAvatarSize = 96; // maximal suggested size according to XEP-0153
cachedImageScaler_ = new QtScaledAvatarCache(tooltipAvatarSize);
}
RosterModel::~RosterModel() {
delete cachedImageScaler_;
}
@@ -231,49 +231,44 @@ QModelIndex RosterModel::index(RosterItem* item) const {
for (size_t i = 0; i < parent->getDisplayedChildren().size(); i++) {
if (parent->getDisplayedChildren()[i] == item) {
return createIndex(i, 0, item);
}
}
return QModelIndex();
}
QModelIndex RosterModel::parent(const QModelIndex& child) const {
if (!roster_ || !child.isValid()) {
return QModelIndex();
}
GroupRosterItem* parent = getItem(child)->getParent();
return (parent != roster_->getRoot()) ? index(parent) : QModelIndex();
}
int RosterModel::rowCount(const QModelIndex& parent) const {
if (!roster_) return 0;
RosterItem* item = parent.isValid() ? static_cast<RosterItem*>(parent.internalPointer()) : roster_->getRoot();
Q_ASSERT(item);
GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item);
int count = group ? group->getDisplayedChildren().size() : 0;
// qDebug() << "rowCount = " << count << " where parent.isValid() == " << parent.isValid() << ", group == " << (group ? P2QSTRING(group->getDisplayName()) : "*contact*");
return count;
}
QMimeData* RosterModel::mimeData(const QModelIndexList& indexes) const {
QMimeData* data = QAbstractItemModel::mimeData(indexes);
ContactRosterItem *item = dynamic_cast<ContactRosterItem*>(getItem(indexes.first()));
if (item == NULL) {
return data;
}
+ /* only a single JID in this list */
QByteArray itemData;
QDataStream dataStream(&itemData, QIODevice::WriteOnly);
-
- // jid, chatName, activity, statusType, avatarPath
dataStream << P2QSTRING(item->getJID().toString());
- dataStream << P2QSTRING(item->getDisplayName());
- dataStream << P2QSTRING(item->getStatusText());
- dataStream << item->getSimplifiedStatusShow();
- dataStream << P2QSTRING(item->getAvatarPath().string());
- data->setData("application/vnd.swift.contact-jid", itemData);
+ data->setData("application/vnd.swift.contact-jid-list", itemData);
return data;
}
}