[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:06:31 UTC 2016


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

The following commit has been merged in the master branch:
commit 0536d7216580111a87859b7c777b151d4b2c32d2
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Sun Mar 3 19:53:55 2013 +0000

    Persistent Contact now takes an AccountManager argument (not in the ctor) for easier loading removing the need for GlobalContactManager
---
 KTp/persistent-contact.cpp | 44 +++++++++++++++++++++++++++++++++++---------
 KTp/persistent-contact.h   | 21 ++++++++++++++++-----
 2 files changed, 51 insertions(+), 14 deletions(-)

diff --git a/KTp/persistent-contact.cpp b/KTp/persistent-contact.cpp
index 763e9cf..3bc15a9 100644
--- a/KTp/persistent-contact.cpp
+++ b/KTp/persistent-contact.cpp
@@ -19,9 +19,12 @@
 #include "persistent-contact.h"
 
 #include <TelepathyQt/Account>
+#include <TelepathyQt/AccountManager>
 #include <TelepathyQt/PendingContacts>
 #include <TelepathyQt/ContactManager>
 
+#include <KDebug>
+
 namespace KTp
 {
 class PersistentContact::Private
@@ -30,20 +33,26 @@ public:
     QString contactId;
     QString accountId;
     KTp::ContactPtr contact;
+    Tp::AccountPtr account;
 };
 }
 
-KTp::PersistentContact::PersistentContact(const QString &accountId, const QString contactId, KTp::GlobalContactManager *globalContactManager)
-    : QObject(globalContactManager)
+KTp::PersistentContactPtr KTp::PersistentContact::create(const QString &accountId, const QString contactId)
+{
+    return KTp::PersistentContactPtr(new KTp::PersistentContact(accountId, contactId));
+}
+
+KTp::PersistentContact::PersistentContact(const QString &accountId, const QString contactId)
+    : QObject(),
+      d(new PersistentContact::Private())
 {
     d->contactId = contactId;
     d->accountId = accountId;
+}
 
-    const Tp::AccountPtr account = globalContactManager->accountForAccountId(accountId);
-    if (account) {
-        connect(account.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged()));
-        onAccountConnectionChanged(account->connection());
-    }
+KTp::PersistentContact::~PersistentContact()
+{
+    delete d;
 }
 
 QString KTp::PersistentContact::contactId() const
@@ -56,21 +65,38 @@ QString KTp::PersistentContact::accountId() const
     return d->accountId;
 }
 
+void KTp::PersistentContact::setAccountManager(const Tp::AccountManagerPtr &accountManager)
+{
+    Q_FOREACH(const Tp::AccountPtr &account, accountManager->allAccounts()) {
+        if (account->uniqueIdentifier() == d->accountId) {
+            d->account = account;
+            connect(account.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), SLOT(onAccountConnectionChanged(Tp::ConnectionPtr)));
+            onAccountConnectionChanged(account->connection());
+            return;
+        }
+    }
+    kWarning() << "Could not find account " << d->accountId;
+}
+
 KTp::ContactPtr KTp::PersistentContact::contact() const
 {
     return d->contact;
 }
 
+Tp::AccountPtr KTp::PersistentContact::account() const
+{
+    return d->account;
+}
 
 void KTp::PersistentContact::onAccountConnectionChanged(const Tp::ConnectionPtr &connection)
 {
     if (connection) {
         Tp::ContactManagerPtr manager = connection->contactManager();
-        connect(manager->contactsForIdentifiers(QStringList() << d->contactId), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onPendingContactsFinished(Tp::PendingContacts*)));
+        connect(manager->contactsForIdentifiers(QStringList() << d->contactId), SIGNAL(finished(Tp::PendingOperation*)), SLOT(onPendingContactsFinished(Tp::PendingOperation*)));
     }
 }
 
-void KTp::PersistentContact::onPendingContactsFinished(Tp::PendingContacts *op)
+void KTp::PersistentContact::onPendingContactsFinished(Tp::PendingOperation *op)
 {
     Tp::PendingContacts* pendingContactsOp = qobject_cast<Tp::PendingContacts*>(op);
     Q_ASSERT(pendingContactsOp);
diff --git a/KTp/persistent-contact.h b/KTp/persistent-contact.h
index 8fbfc4a..40f454d 100644
--- a/KTp/persistent-contact.h
+++ b/KTp/persistent-contact.h
@@ -21,27 +21,34 @@
 
 #include <QObject>
 
-#include "KTp/global-contact-manager.h"
 #include "KTp/contact.h"
 
+#include "ktp-export.h"
+
 namespace KTp {
 
 /** Object monitors a specific account/contact identifier and will populate it with the most up-to-date contact as connections get destroyed/created
  *
  */
-class PersistentContact : public QObject
+class KTP_EXPORT PersistentContact : public QObject, public Tp::RefCounted
 {
     Q_OBJECT
 public:
-    explicit PersistentContact(const QString &accountId, const QString contactId, KTp::GlobalContactManager *globalContactManager);
+    static Tp::SharedPtr<KTp::PersistentContact> create(const QString &accountId, const QString contactId);
+    virtual ~PersistentContact();
 
     QString contactId() const;
     QString accountId() const;
 
+    void setAccountManager(const Tp::AccountManagerPtr &accountManager);
+
     /** The contact object for these ID
-      @warning This may be null
+      @warning This may be null if no accountManager is set or if you are offline
     */
     KTp::ContactPtr contact() const;
+    /**
+     * @warning This may be null if no accountManager is set or the account has been deleted
+     */
     Tp::AccountPtr account() const;
 
 Q_SIGNALS:
@@ -50,12 +57,16 @@ Q_SIGNALS:
 
 private Q_SLOTS:
     void onAccountConnectionChanged(const Tp::ConnectionPtr &connection);
-    void onPendingContactsFinished(Tp::PendingContacts*);
+    void onPendingContactsFinished(Tp::PendingOperation*);
 
 private:
+    PersistentContact(const QString &accountId, const QString contactId);
+
     class Private;
     Private *d;
 };
 
+typedef Tp::SharedPtr<KTp::PersistentContact> PersistentContactPtr;
+
 }
 #endif // PERSISTENTCONTACT_H

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list