[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:07:17 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=f87e571

The following commit has been merged in the master branch:
commit f87e5716c9e4c1020657481f30254260561f6acd
Author: George Goldberg <george.goldberg at collabora.co.uk>
Date:   Fri Jan 28 18:38:01 2011 +0000

    Reinstate support for contact groups.
---
 kpeople/nepomuk-feeder/abstract-storage.h      |  3 +-
 kpeople/nepomuk-feeder/account.cpp             | 16 ++----
 kpeople/nepomuk-feeder/account.h               |  6 +--
 kpeople/nepomuk-feeder/contact.cpp             |  4 +-
 kpeople/nepomuk-feeder/contact.h               |  3 +-
 kpeople/nepomuk-feeder/controller.cpp          |  6 +--
 kpeople/nepomuk-feeder/nepomuk-storage.cpp     | 67 +++++++++++++++++++++++---
 kpeople/nepomuk-feeder/nepomuk-storage.h       |  3 +-
 kpeople/nepomuk-feeder/tests/controller-test.h |  6 +--
 9 files changed, 76 insertions(+), 38 deletions(-)

diff --git a/kpeople/nepomuk-feeder/abstract-storage.h b/kpeople/nepomuk-feeder/abstract-storage.h
index 6ce2a7e..7d1be9b 100644
--- a/kpeople/nepomuk-feeder/abstract-storage.h
+++ b/kpeople/nepomuk-feeder/abstract-storage.h
@@ -51,8 +51,7 @@ public Q_SLOTS:
     virtual void destroyContact(const QString &path, const QString &id) = 0;
     virtual void setContactAlias(const QString &path, const QString &id, const QString &alias) = 0;
     virtual void setContactPresence(const QString &path, const QString &id, const Tp::SimplePresence &presence) = 0;
-    virtual void addContactToGroup(const QString &path, const QString &id, const QString &group) = 0;
-    virtual void removeContactFromGroup(const QString &path, const QString &id, const QString &group) = 0;
+    virtual void setContactGroups(const QString &path, const QString &id, const QStringList &groups) = 0;
     virtual void setContactBlockStatus(const QString &path, const QString &id, bool blocked) = 0;
     virtual void setContactPublishState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state) = 0;
     virtual void setContactSubscriptionState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state) = 0;
diff --git a/kpeople/nepomuk-feeder/account.cpp b/kpeople/nepomuk-feeder/account.cpp
index 1a0a277..e0cfdf0 100644
--- a/kpeople/nepomuk-feeder/account.cpp
+++ b/kpeople/nepomuk-feeder/account.cpp
@@ -171,11 +171,8 @@ void Account::onNewContact(const Tp::ContactPtr &contact)
                 SIGNAL(presenceChanged(QString,Tp::SimplePresence)),
                 SLOT(onContactPresenceChanged(QString,Tp::SimplePresence)));
         connect(c,
-                SIGNAL(addedToGroup(QString,QString)),
-                SLOT(onContactAddedToGroup(QString,QString)));
-        connect(c,
-                SIGNAL(removedFromGroup(QString,QString)),
-                SLOT(onContactRemovedFromGroup(QString,QString)));
+                SIGNAL(groupsChanged(QString,QStringList)),
+                SLOT(onContactGroupsChanged(QString,QStringList)));
         connect(c,
                 SIGNAL(blockStatusChanged(QString,bool)),
                 SLOT(onContactBlockStatusChanged(QString,bool)));
@@ -213,14 +210,9 @@ void Account::onContactPresenceChanged(const QString &id, const Tp::SimplePresen
     emit contactPresenceChanged(m_account->objectPath(), id, presence);
 }
 
-void Account::onContactAddedToGroup(const QString &id, const QString &group)
-{
-    emit contactAddedToGroup(m_account->objectPath(), id, group);
-}
-
-void Account::onContactRemovedFromGroup(const QString &id, const QString &group)
+void Account::onContactGroupsChanged(const QString &id, const QStringList &groups)
 {
-    emit contactRemovedFromGroup(m_account->objectPath(), id, group);
+    emit contactGroupsChanged(m_account->objectPath(), id, groups);
 }
 
 void Account::onContactBlockStatusChanged(const QString &id, bool blocked)
diff --git a/kpeople/nepomuk-feeder/account.h b/kpeople/nepomuk-feeder/account.h
index 72a3618..b57ebf8 100644
--- a/kpeople/nepomuk-feeder/account.h
+++ b/kpeople/nepomuk-feeder/account.h
@@ -59,8 +59,7 @@ Q_SIGNALS:
     void contactDestroyed(const QString &path, const QString &id);
     void contactAliasChanged(const QString &path, const QString &id, const QString &alias);
     void contactPresenceChanged(const QString &path, const QString &id, const Tp::SimplePresence &presence);
-    void contactAddedToGroup(const QString &path, const QString &id, const QString &group);
-    void contactRemovedFromGroup(const QString &path, const QString &id, const QString &group);
+    void contactGroupsChanged(const QString &path, const QString &id, const QStringList &groups);
     void contactBlockStatusChanged(const QString &path, const QString &id, bool blocked);
     void contactPublishStateChanged(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
     void contactSubscriptionStateChanged(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
@@ -76,8 +75,7 @@ private Q_SLOTS:
     void onContactCreated(const QString &id);
     void onContactAliasChanged(const QString &id, const QString &alias);
     void onContactPresenceChanged(const QString &id, const Tp::SimplePresence &presence);
-    void onContactAddedToGroup(const QString &id, const QString &group);
-    void onContactRemovedFromGroup(const QString &id, const QString &group);
+    void onContactGroupsChanged(const QString &id, const QStringList &groups);
     void onContactBlockStatusChanged(const QString &id, bool blocked);
     void onContactPublishStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
     void onContactSubscriptionStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
diff --git a/kpeople/nepomuk-feeder/contact.cpp b/kpeople/nepomuk-feeder/contact.cpp
index 24324e1..4a1c5c6 100644
--- a/kpeople/nepomuk-feeder/contact.cpp
+++ b/kpeople/nepomuk-feeder/contact.cpp
@@ -111,14 +111,14 @@ void Contact::onAddedToGroup(const QString &group)
 {
     kDebug() << "On added to group " << group;
 
-    emit addedToGroup(m_contact->id(), group);
+    emit groupsChanged(m_contact->id(), m_contact->groups());
 }
 
 void Contact::onRemovedFromGroup(const QString &group)
 {
     kDebug() << "On removed from group " << group;
 
-    emit removedFromGroup(m_contact->id(), group);
+    emit groupsChanged(m_contact->id(), m_contact->groups());
 }
 
 void Contact::onBlockStatusChanged(bool blocked)
diff --git a/kpeople/nepomuk-feeder/contact.h b/kpeople/nepomuk-feeder/contact.h
index 03da0f8..ccc482a 100644
--- a/kpeople/nepomuk-feeder/contact.h
+++ b/kpeople/nepomuk-feeder/contact.h
@@ -47,8 +47,7 @@ Q_SIGNALS:
     void contactDestroyed(const QString &id, const Tp::ContactPtr &contact);
     void aliasChanged(const QString &id, const QString &alias);
     void presenceChanged(const QString &id, const Tp::SimplePresence &presence);
-    void addedToGroup(const QString &id, const QString &group);
-    void removedFromGroup(const QString &id, const QString &group);
+    void groupsChanged(const QString &id, const QStringList &groups);
     void blockStatusChanged(const QString &id, bool blocked);
     void publishStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
     void subscriptionStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
diff --git a/kpeople/nepomuk-feeder/controller.cpp b/kpeople/nepomuk-feeder/controller.cpp
index 501ebc3..f320326 100644
--- a/kpeople/nepomuk-feeder/controller.cpp
+++ b/kpeople/nepomuk-feeder/controller.cpp
@@ -132,10 +132,8 @@ void Controller::onNewAccount(const Tp::AccountPtr &account)
             m_storage, SLOT(setContactAlias(QString,QString,QString)));
     connect(acc, SIGNAL(contactPresenceChanged(QString,QString,Tp::SimplePresence)),
             m_storage, SLOT(setContactPresence(QString,QString,Tp::SimplePresence)));
-    connect(acc, SIGNAL(contactAddedToGroup(QString,QString,QString)),
-            m_storage, SLOT(addContactToGroup(QString,QString,QString)));
-    connect(acc, SIGNAL(contactRemovedFromGroup(QString,QString,QString)),
-            m_storage, SLOT(removeContactFromGroup(QString,QString,QString)));
+    connect(acc, SIGNAL(contactGroupsChanged(QString,QString,QStringList)),
+            m_storage, SLOT(setContactGroups(QString,QString,QStringList)));
     connect(acc, SIGNAL(contactBlockStatusChanged(QString,QString,bool)),
             m_storage, SLOT(setContactBlockStatus(QString,QString,bool)));
     connect(acc, SIGNAL(contactPublishStateChanged(QString,QString,Tp::Contact::PresenceState)),
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.cpp b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
index 68fd37f..63d029f 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.cpp
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
@@ -21,6 +21,7 @@
 
 #include "nepomuk-storage.h"
 
+#include "ontologies/contactgroup.h"
 #include "ontologies/nco.h"
 #include "ontologies/pimo.h"
 #include "ontologies/telepathy.h"
@@ -504,14 +505,68 @@ void NepomukStorage::setContactPresence(const QString &path,
     imAccount.setImStatusMessages(statusMessage);
 }
 
-void NepomukStorage::addContactToGroup(const QString &path, const QString &id, const QString &group)
+void NepomukStorage::setContactGroups(const QString &path,
+                                      const QString &id,
+                                      const QStringList &groups)
 {
-    // TODO: Implement me!
-}
+    ContactIdentifier identifier(path, id);
 
-void NepomukStorage::removeContactFromGroup(const QString &path, const QString &id, const QString &group)
-{
-    // TODO: Implement me!
+    // Check the Contact exists.
+    Q_ASSERT(m_contacts.contains(identifier));
+    if (!m_contacts.contains(identifier)) {
+        kWarning() << "Contact not found.";
+        return;
+    }
+
+    ContactResources resources = m_contacts.value(identifier);
+    Nepomuk::PersonContact personContact = resources.personContact();
+
+    // Set the contact groups.
+    // First remove any groups we are no longer a member of.
+    QList<Nepomuk::ContactGroup> newGroups = personContact.belongsToGroups();
+
+    foreach (const Nepomuk::ContactGroup &group, personContact.belongsToGroups()) {
+        if (!groups.contains(group.contactGroupName())) {
+            newGroups.removeAll(group);
+        }
+    }
+
+    // Now add any groups we are newly a member of.
+    bool found;
+    foreach (const QString &groupName, groups) {
+        found = false;
+        foreach (const Nepomuk::ContactGroup &cGroup, newGroups) {
+            if (cGroup.contactGroupName() == groupName) {
+                found = true;
+                break;
+            }
+        }
+
+        if (!found) {
+            // Not already in that group. Check the group exists.
+            // FIXME: Once we have a "ContactList" resource for Telepathy Contacts, we should only
+            //        get the groups associated with that.
+            Nepomuk::ContactGroup groupResource;
+            foreach (const Nepomuk::ContactGroup &g, Nepomuk::ContactGroup::allContactGroups()) {
+                if (g.contactGroupName() == groupName) {
+                    groupResource = g;
+                    break;
+                }
+            }
+
+            // If the group doesn't already exist, create it.
+            if (groupResource.resourceUri().isEmpty()) {
+                // FIXME: Once we have a "ContactList" resource for Telepathy Contacts, we should
+                //        create this group as a child of that resource.
+                groupResource.setContactGroupName(groupName);
+            }
+
+            newGroups.append(groupResource);
+        }
+    }
+
+    // Update the groups property with the new list
+    personContact.setBelongsToGroups(newGroups);
 }
 
 void NepomukStorage::setContactBlockStatus(const QString &path, const QString &id, bool blocked)
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.h b/kpeople/nepomuk-feeder/nepomuk-storage.h
index f0ea5ab..2162393 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.h
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.h
@@ -94,8 +94,7 @@ public Q_SLOTS:
     virtual void destroyContact(const QString &path, const QString &id);
     virtual void setContactAlias(const QString &path, const QString &id, const QString &alias);
     virtual void setContactPresence(const QString &path, const QString &id, const Tp::SimplePresence &presence);
-    virtual void addContactToGroup(const QString &path, const QString &id, const QString &group);
-    virtual void removeContactFromGroup(const QString &path, const QString &id, const QString &group);
+    virtual void setContactGroups(const QString &path, const QString &id, const QStringList &groups);
     virtual void setContactBlockStatus(const QString &path, const QString &id, bool blocked);
     virtual void setContactPublishState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
     virtual void setContactSubscriptionState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
diff --git a/kpeople/nepomuk-feeder/tests/controller-test.h b/kpeople/nepomuk-feeder/tests/controller-test.h
index cab6f07..cd85a67 100644
--- a/kpeople/nepomuk-feeder/tests/controller-test.h
+++ b/kpeople/nepomuk-feeder/tests/controller-test.h
@@ -95,8 +95,7 @@ public Q_SLOTS:
     virtual void destroyContact(const QString &, const QString &) { }
     virtual void setContactAlias(const QString &, const QString &, const QString &) { }
     virtual void setContactPresence(const QString &, const QString &, const Tp::SimplePresence &) { }
-    virtual void addContactToGroup(const QString &, const QString &, const QString &) { }
-    virtual void removeContactFromGroup(const QString &, const QString &, const QString &) { }
+    virtual void setContactGroups(const QString &, const QString &, const QStringList &) { }
     virtual void setContactBlockStatus(const QString &, const QString &, bool) { }
     virtual void setContactPublishState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
     virtual void setContactSubscriptionState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
@@ -124,8 +123,7 @@ public Q_SLOTS:
     virtual void destroyContact(const QString &, const QString &) { }
     virtual void setContactAlias(const QString &, const QString &, const QString &) { }
     virtual void setContactPresence(const QString &, const QString &, const Tp::SimplePresence &) { }
-    virtual void addContactToGroup(const QString &, const QString &, const QString &) { }
-    virtual void removeContactFromGroup(const QString &, const QString &, const QString &) { }
+    virtual void setContactGroups(const QString &, const QString &, const QStringList &) { }
     virtual void setContactBlockStatus(const QString &, const QString &, bool) { }
     virtual void setContactPublishState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
     virtual void setContactSubscriptionState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list