[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdenetwork/krdc
From:       George Kiagiadakis <kiagiadakis.george () gmail ! com>
Date:       2012-03-06 16:54:14
Message-ID: 20120306165414.CC8A3AC897 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1283919 by gkiagia:

Port telepathy tubes support to the new high level tubes api.

 M  +0 -1      CMakeLists.txt  
 M  +2 -7      mainwindow.cpp  
 M  +1 -6      mainwindow.h  
 D             tube.cpp  
 D             tube.h  
 M  +32 -76    tubesmanager.cpp  
 M  +17 -20    tubesmanager.h  


--- trunk/KDE/kdenetwork/krdc/CMakeLists.txt #1283918:1283919
@@ -84,7 +84,6 @@
 if(BUILD_EXPERIMENTAL_TUBES_SUPPORT AND TELEPATHY_QT4_FOUND)
     set(krdc_SRCS ${krdc_SRCS}
         tubesmanager.cpp
-        tube.cpp
     )
 endif(BUILD_EXPERIMENTAL_TUBES_SUPPORT AND TELEPATHY_QT4_FOUND)
 
--- trunk/KDE/kdenetwork/krdc/mainwindow.cpp #1283918:1283919
@@ -251,13 +251,8 @@
 
 #ifdef TELEPATHY_SUPPORT
     /* Start tube handler */
-    m_tubesManager = Tp::SharedPtr<TubesManager>(new TubesManager(this));
-    connect(m_tubesManager.data(),
-            SIGNAL(newConnection(KUrl)),
-            SLOT(newConnection(KUrl)));
-
-    m_registrar = Tp::ClientRegistrar::create();
-    m_registrar->registerClient(Tp::AbstractClientPtr::dynamicCast(m_tubesManager), "krdc_rfb_handler");
+    m_tubesManager = new TubesManager(this);
+    connect(m_tubesManager, SIGNAL(newConnection(KUrl)), SLOT(newConnection(KUrl)));
 #endif
 }
 
--- trunk/KDE/kdenetwork/krdc/mainwindow.h #1283918:1283919
@@ -32,10 +32,6 @@
 #include <KService>
 #include <KXmlGuiWindow>
 
-#ifdef TELEPATHY_SUPPORT
-#include <TelepathyQt4/ClientRegistrar>
-#endif
-
 class KComboBox;
 class KLineEdit;
 class KPushButton;
@@ -139,8 +135,7 @@
     QTableView *m_newConnectionTableView;
     QSortFilterProxyModel *m_remoteDesktopsModelProxy;
 #ifdef TELEPATHY_SUPPORT
-    Tp::SharedPtr<TubesManager> m_tubesManager;
-    Tp::ClientRegistrarPtr m_registrar;
+    TubesManager *m_tubesManager;
 #endif
     QWidget *m_newConnectionWidget;
 };
--- trunk/KDE/kdenetwork/krdc/tubesmanager.cpp #1283918:1283919
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
+** Copyright (C) 2009-2011 Collabora Ltd <info@collabora.co.uk>
 ** Copyright (C) 2009 Abner Silva <abner.silva@kdemail.net>
 **
 ** This file is part of KDE.
@@ -24,25 +24,14 @@
 
 #include "tubesmanager.h"
 
-#include <TelepathyQt4/ChannelClassSpecList>
+#include <TelepathyQt4/IncomingStreamTubeChannel>
 #include <TelepathyQt4/Debug>
 
 #include <KDebug>
 
-static inline Tp::ChannelClassSpecList channelClassSpecList()
-{
-    Tp::ChannelClassSpec spec = Tp::ChannelClassSpec();
-    spec.setChannelType(TP_QT4_IFACE_CHANNEL_TYPE_STREAM_TUBE);
-    spec.setTargetHandleType(Tp::HandleTypeContact);
-    spec.setRequested(false);
-    spec.setProperty(QString(TP_QT4_IFACE_CHANNEL_TYPE_STREAM_TUBE) + ".Service",
-                     QVariant("rfb"));
-    return Tp::ChannelClassSpecList() << spec;
-}
 
 TubesManager::TubesManager(QObject *parent)
-    : QObject(parent),
-      AbstractClientHandler(channelClassSpecList())
+    : QObject(parent)
 {
     kDebug() << "Initializing tubes manager";
 
@@ -51,82 +40,49 @@
 
     /* Registering telepathy types */
     Tp::registerTypes();
+
+    m_stubeClient = Tp::StreamTubeClient::create(
+            QStringList() << QLatin1String("rfb"),
+            QStringList(),
+            QLatin1String("krdc_rfb_handler"));
+
+    m_stubeClient->setToAcceptAsTcp();
+
+    connect(m_stubeClient.data(),
+            SIGNAL(tubeAcceptedAsTcp(QHostAddress,quint16,QHostAddress,quint16,
+                                     Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)),
+            SLOT(onTubeAccepted(QHostAddress,quint16,QHostAddress,quint16,
+                                Tp::AccountPtr,Tp::IncomingStreamTubeChannelPtr)));
 }
 
 TubesManager::~TubesManager()
 {
-    kDebug() << "Destroying tube manager";
+    kDebug() << "Destroying tubes manager";
 }
 
-bool TubesManager::bypassApproval() const
+void TubesManager::closeTube(const KUrl& url)
 {
-    kDebug() << "bypassing";
-    return false;
+    if (m_tubes.contains(url)) {
+        m_tubes.take(url)->requestClose();
 }
+}
 
-void TubesManager::handleChannels(const Tp::MethodInvocationContextPtr<> & context,
+void TubesManager::onTubeAccepted(
+        const QHostAddress & listenAddress, quint16 listenPort,
+        const QHostAddress & sourceAddress, quint16 sourcePort,
         const Tp::AccountPtr & account,
-        const Tp::ConnectionPtr & connection,
-        const QList<Tp::ChannelPtr> & channels,
-        const QList<Tp::ChannelRequestPtr> & requestsSatisfied,
-        const QDateTime & userActionTime,
-        const Tp::AbstractClientHandler::HandlerInfo & handlerInfo)
+        const Tp::IncomingStreamTubeChannelPtr & tube)
 {
+    Q_UNUSED(sourceAddress);
+    Q_UNUSED(sourcePort);
     Q_UNUSED(account);
-    Q_UNUSED(connection);
-    Q_UNUSED(requestsSatisfied);
-    Q_UNUSED(userActionTime);
-    Q_UNUSED(handlerInfo);
 
-    foreach(const Tp::ChannelPtr &channel, channels) {
-        kDebug() << "Handling new tube";
+    KUrl url;
+    url.setScheme("vnc");
+    url.setHost(listenAddress.toString());
+    url.setPort(listenPort);
 
-        QVariantMap properties = channel->immutableProperties();
-
-        if (properties[TELEPATHY_INTERFACE_CHANNEL ".ChannelType"] ==
-               TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAM_TUBE) {
-
-            kDebug() << "Handling:" << TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAM_TUBE;
-
-            /* New tube arrived */
-            Tube *tube = new Tube(channel, this);
-
-            /* Listening to tube status changed */
-            connect(tube,
-                    SIGNAL(statusChanged(Tube::Status)),
-                    SLOT(onTubeStateChanged(Tube::Status)));
-
-            m_tubes.append(tube);
-        }
-    }
-    context->setFinished();
-}
-
-void TubesManager::closeTube(KUrl url)
-{
-    kDebug() << "Closing tube:" << url;
-
-    foreach (Tube *tube, m_tubes)
-        if (tube->url() == url) {
-            m_tubes.removeOne(tube);
-            tube->close();
-        }
-}
-
-void TubesManager::onTubeStateChanged(Tube::Status status)
-{
-    kDebug() << "tube status changed:" << status;
-    Tube *tube = qobject_cast<Tube *>(sender());
-
-    if (status == Tube::Open) {
-        KUrl url = tube->url();
         kDebug() << "newConnection:" << url;
+    m_tubes.insert(url, tube);
         emit newConnection(url);
     }
-    else if (status == Tube::Close) {
-        kDebug() << "Tube:" << tube->url() << "closed";
-        m_tubes.removeOne(tube);
-        tube->deleteLater();
-        kDebug() << m_tubes;
-    }
-}
--- trunk/KDE/kdenetwork/krdc/tubesmanager.h #1283918:1283919
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
+** Copyright (C) 2009-2011 Collabora Ltd <info@collabora.co.uk>
 ** Copyright (C) 2009 Abner Silva <abner.silva@kdemail.net>
 **
 ** This file is part of KDE.
@@ -25,13 +25,11 @@
 #ifndef TUBESMANAGER_H
 #define TUBESMANAGER_H
 
-#include "tube.h"
-
-#include <TelepathyQt4/AbstractClientHandler>
-
+#include <TelepathyQt4/StreamTubeClient>
+#include <QtNetwork/QHostAddress>
 #include <KUrl>
 
-class TubesManager : public QObject, public Tp::AbstractClientHandler
+class TubesManager : public QObject
 {
     Q_OBJECT
 
@@ -39,24 +37,23 @@
     TubesManager(QObject *parent);
     virtual ~TubesManager();
 
-    void closeTube(KUrl url);
+    void closeTube(const KUrl & url);
 
-    virtual bool bypassApproval() const;
-    virtual void handleChannels(const Tp::MethodInvocationContextPtr<> & context,
-            const Tp::AccountPtr & account,
-            const Tp::ConnectionPtr & connection,
-            const QList<Tp::ChannelPtr> & channels,
-            const QList<Tp::ChannelRequestPtr> & requestsSatisfied,
-            const QDateTime & userActionTime,
-            const Tp::AbstractClientHandler::HandlerInfo & handlerInfo);
-
-private Q_SLOTS:
-    void onTubeStateChanged(Tube::Status);
-
 Q_SIGNALS:
     void newConnection(KUrl);
 
+private Q_SLOTS:
+    void onTubeAccepted(
+            const QHostAddress & listenAddress,
+            quint16 listenPort,
+            const QHostAddress & sourceAddress,
+            quint16 sourcePort,
+            const Tp::AccountPtr & account,
+            const Tp::IncomingStreamTubeChannelPtr & tube);
+
 private:
-    QList<Tube *> m_tubes;
+    Tp::StreamTubeClientPtr m_stubeClient;
+    QHash<KUrl, Tp::IncomingStreamTubeChannelPtr> m_tubes;
 };
+
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic