[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:08:22 UTC 2016


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

The following commit has been merged in the master branch:
commit f223bde62eb72ea829f768fa3b999a5f5e2ad522
Author: Marcin Ziemiński <zieminn at gmail.com>
Date:   Wed Aug 6 21:24:13 2014 +0200

    Wait for account to become ready.
    
    Signed-off-by: Marcin Ziemiński <zieminn at gmail.com>
---
 otr-proxy/KTpProxy/proxy-observer.cpp        | 49 +++++++++++++++++++++++++---
 otr-proxy/KTpProxy/proxy-service-adaptee.cpp |  4 +--
 otr-proxy/KTpProxy/proxy-service.cpp         |  9 +++--
 3 files changed, 53 insertions(+), 9 deletions(-)

diff --git a/otr-proxy/KTpProxy/proxy-observer.cpp b/otr-proxy/KTpProxy/proxy-observer.cpp
index 1df7372..92dec25 100644
--- a/otr-proxy/KTpProxy/proxy-observer.cpp
+++ b/otr-proxy/KTpProxy/proxy-observer.cpp
@@ -19,12 +19,50 @@
 
 #include "proxy-observer.h"
 #include "proxy-service.h"
+#include "pending-curry-operation.h"
 
 #include <TelepathyQt/ChannelClassSpecList>
 #include <TelepathyQt/Channel>
+#include <TelepathyQt/PendingReady>
 
 #include <KDebug>
 
+// class to wait for all account fields to be ready
+// (displayName is not properly initializted sometimes)
+// and magic things happen
+class PendingAccountReady : public PendingCurryOperation
+{
+    public:
+        PendingAccountReady(
+                Tp::PendingOperation *op,
+                const Tp::AccountPtr &account,
+                const QList<Tp::ChannelPtr> &channels,
+                const Tp::MethodInvocationContextPtr<> &context,
+                ProxyService *ps)
+            : PendingCurryOperation(op, Tp::SharedPtr<Tp::RefCounted>::dynamicCast(account)),
+            account(account),
+            channels(channels),
+            context(context),
+            ps(ps)
+        {
+        }
+
+        virtual void extract(Tp::PendingOperation *op)
+        {
+            Q_UNUSED(op);
+
+            Q_FOREACH(const Tp::ChannelPtr &chan, channels) {
+                ps->addChannel(chan, account);
+            }
+            context->setFinished();
+        }
+
+    private:
+        Tp::AccountPtr account;
+        QList<Tp::ChannelPtr> channels;
+        Tp::MethodInvocationContextPtr<> context;
+        ProxyService *ps;
+};
 
 ProxyObserver::ProxyObserver(ProxyService *ps)
     : Tp::AbstractClientObserver(Tp::ChannelClassSpecList() << Tp::ChannelClassSpec::textChat()),
@@ -49,10 +87,11 @@ void ProxyObserver::observeChannels(
     Q_UNUSED(dispatchOperation);
     Q_UNUSED(requestsSatisfied);
     Q_UNUSED(observerInfo);
-
     kDebug() << "Observed a channel";
-    Q_FOREACH(const Tp::ChannelPtr &chan, channels) {
-        ps->addChannel(chan, account);
-    }
-    context->setFinished();
+
+    PendingAccountReady *ready = new PendingAccountReady(
+            account->becomeReady(Tp::Features() << Tp::Account::FeatureCore),
+            account, channels, context, ps);
+
+    QObject::connect(ready, SIGNAL(finished(Tp::PendingOperation*)), ready, SLOT(deleteLater()));
 }
diff --git a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp b/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
index eb503fb..1fc505a 100644
--- a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
+++ b/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
@@ -93,7 +93,7 @@ void ProxyServiceAdaptee::generatePrivateKey(const QDBusObjectPath &accountPath,
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
     if(ac && ac->isValidAccount() &&
-            ps->createNewPrivateKey(OTR::utils::accountIdFor(accountPath), ac->normalizedName())) {
+            ps->createNewPrivateKey(OTR::utils::accountIdFor(accountPath), ac->displayName())) {
         context->setFinished();
     } else {
         // TODO better errors
@@ -107,7 +107,7 @@ void ProxyServiceAdaptee::getFingerprintForAccount(QDBusObjectPath accountPath,
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
     if(ac && ac->isValidAccount()) {
-        context->setFinished(ps->getFingerprintFor(OTR::utils::accountIdFor(accountPath), ac->normalizedName()));
+        context->setFinished(ps->getFingerprintFor(OTR::utils::accountIdFor(accountPath), ac->displayName()));
     } else {
         context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such valid account"));
     }
diff --git a/otr-proxy/KTpProxy/proxy-service.cpp b/otr-proxy/KTpProxy/proxy-service.cpp
index c0bb282..cda0bdf 100644
--- a/otr-proxy/KTpProxy/proxy-service.cpp
+++ b/otr-proxy/KTpProxy/proxy-service.cpp
@@ -153,7 +153,7 @@ void ProxyService::onChannelReady(Tp::PendingOperation *pendingChanReady)
     OTR::SessionContext ctx =
     {
         OTR::utils::accountIdFor(QDBusObjectPath(pendingReady->account->objectPath())),
-        pendingReady->account->normalizedName(),
+        pendingReady->account->displayName(),
         textChannel->targetId(),
         textChannel->connection()->protocolName()
     };
@@ -180,7 +180,12 @@ void ProxyService::onChannelReady(Tp::PendingOperation *pendingChanReady)
             &adaptee, SLOT(onProxyDisconnected(const QDBusObjectPath&)));
 
     kDebug() << "Installed proxy: " << proxyChannel->objectPath() << "
"
-        << " for the channel: " << textChannel->objectPath();
+        << " for the channel: " << textChannel->objectPath() << "
"
+        << "Context: " << "
"
+        << "	 id: " << ctx.accountId << "
"
+        << "	 name: " << ctx.accountName << "
"
+        << "	 protocol: " << ctx.protocol << "
"
+        << "	 recipient: " << ctx.recipientName;
 }
 
 bool ProxyService::createNewPrivateKey(const QString &accountId, const QString &accountName)

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list