[SCM] ktp-contact-list packaging branch, master, updated. debian/15.12.1-2-1070-g6c56f91

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:11:57 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=f86ddba

The following commit has been merged in the master branch:
commit f86ddba23d043a013948c180c6252ee4fc51d0a0
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Sat Jan 5 02:09:15 2013 +0000

    Fix drag and drop between groups
---
 contact-list-widget.cpp | 52 ++++++++++++++++++++++++++++---------------------
 contact-list-widget_p.h |  1 +
 2 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/contact-list-widget.cpp b/contact-list-widget.cpp
index d1cc982..dbc52cd 100644
--- a/contact-list-widget.cpp
+++ b/contact-list-widget.cpp
@@ -134,6 +134,8 @@ ContactListWidget::~ContactListWidget()
 void ContactListWidget::setAccountManager(const Tp::AccountManagerPtr &accountManager)
 {
     Q_D(ContactListWidget);
+
+    d->accountManager = accountManager;
     d->modelFilter->setAccountManager(accountManager);
 
     QList<Tp::AccountPtr> accounts = accountManager->allAccounts();
@@ -573,13 +575,15 @@ void ContactListWidget::dropEvent(QDropEvent *event)
 
     QModelIndex index = indexAt(event->pos());
 
-    if (event->mimeData()->hasUrls()) {
-        kDebug() << "It's a file!";
+    if (!index.isValid()) {
+        return;
+    }
 
-        Tp::ContactPtr contact = index.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
 
-        kDebug() << "Requesting file transfer for contact" << contact->alias();
+    if (event->mimeData()->hasUrls()) {
+        kDebug() << "Filed dropped";
 
+        Tp::ContactPtr contact = index.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
         Tp::AccountPtr account = index.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
 
         QStringList filenames;
@@ -587,34 +591,40 @@ void ContactListWidget::dropEvent(QDropEvent *event)
             filenames << url.toLocalFile();
         }
 
-        if (filenames.isEmpty()) {
-            return;
+        if (account && contact && !filenames.isEmpty()) {
+            kDebug() << "Requesting file transfer for contact" << contact->alias();
+            requestFileTransferChannels(account, contact, filenames);
+            event->acceptProposedAction();
         }
 
-        requestFileTransferChannels(account, contact, filenames);
-
-        event->acceptProposedAction();
     } else if (event->mimeData()->hasFormat("application/vnd.telepathy.contact")) {
-        kDebug() << "It's a contact!";
+        kDebug() << "Contact dropped";
 
         QByteArray encodedData = event->mimeData()->data("application/vnd.telepathy.contact");
         QDataStream stream(&encodedData, QIODevice::ReadOnly);
-        QList<ContactModelItem*> contacts;
+        QList<Tp::ContactPtr> contacts;
 
         while (!stream.atEnd()) {
-            QString contact;
-            QString account;
+            QString contactId;
+            QString accountId;
 
             //get contact and account out of the stream
-            stream >> contact >> account;
+            stream >> contactId >> accountId;
+
+            Tp::AccountPtr account = d->accountManager->accountForObjectPath(accountId);
 
-//            Tp::AccountPtr accountPtr = d->model->accountPtrForPath(account);
+            if (!account->connection()) {
+                continue;
+            }
 
-            //casted pointer is checked below, before first use
-//            contacts.append(qobject_cast<ContactModelItem*>(d->model->contactItemForId(accountPtr->uniqueIdentifier(), contact)));
+            Q_FOREACH(const Tp::ContactPtr &contact, account->connection()->contactManager()->allKnownContacts()) {
+                if (contact->id() == contactId) {
+                    contacts.append(contact);
+                }
+            }
         }
 
-        Q_FOREACH (ContactModelItem *contact, contacts) {
+        Q_FOREACH (const Tp::ContactPtr &contact, contacts) {
             Q_ASSERT(contact);
             QString group;
             if (index.data(ContactsModel::TypeRole).toInt() == ContactsModel::GroupRowType) {
@@ -625,10 +635,10 @@ void ContactListWidget::dropEvent(QDropEvent *event)
                 group = index.parent().data(GroupsModel::GroupNameRole).toString();
             }
 
-            kDebug() << contact->contact().data()->alias() << "added to group" << group;
+            kDebug() << contact->alias() << "added to group" << group;
 
             if (!group.isEmpty()) {
-                Tp::PendingOperation *op = contact->contact().data()->addToGroup(group);
+                Tp::PendingOperation *op = contact->addToGroup(group);
 
                 connect(op, SIGNAL(finished(Tp::PendingOperation*)),
                         this, SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
@@ -667,8 +677,6 @@ void ContactListWidget::dragEnterEvent(QDragEnterEvent *event)
 
 void ContactListWidget::dragMoveEvent(QDragMoveEvent *event)
 {
-    Q_D(ContactListWidget);
-
     QModelIndex index = indexAt(event->pos());
     setDropIndicatorRect(QRect());
 
diff --git a/contact-list-widget_p.h b/contact-list-widget_p.h
index c0b28a6..68e0302 100644
--- a/contact-list-widget_p.h
+++ b/contact-list-widget_p.h
@@ -48,6 +48,7 @@ public:
     bool                    shouldDrag;
     bool                    showOffline;
     QHash<QString, bool>    groupStates;
+    Tp::AccountManagerPtr   accountManager;
 };
 
 #endif //CONTACT_LIST_WIDGET_P_H

-- 
ktp-contact-list packaging



More information about the pkg-kde-commits mailing list