[SCM] ktp-filetransfer-handler packaging branch, master, updated. debian/15.12.1-2-226-g825cd93

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


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-filetransfer-handler.git;a=commitdiff;h=cccaa8b

The following commit has been merged in the master branch:
commit cccaa8bf4295a73d039890b9a0b21ad5fd075caa
Author: Daniele E. Domenichelli <daniele.domenichelli at gmail.com>
Date:   Tue Jun 7 11:19:03 2011 +0200

    Exit after 2 seconds if no channels are received
    
    Also add --persist command line option to avoid exiting
---
 TODO                         |  1 -
 src/filetransfer-handler.cpp | 24 ++++++++++++++++++++----
 src/filetransfer-handler.h   |  7 ++++++-
 src/main.cpp                 |  6 +++++-
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/TODO b/TODO
index 94b409c..4aaab23 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,4 @@
 General:
- * Exit after a couple of seconds if no other file transfer is received
  * Use Nepomuk describeResource and storeResource to send somehow an additional
    trig or rdf file.
  * Stop transfer button.
diff --git a/src/filetransfer-handler.cpp b/src/filetransfer-handler.cpp
index 592a0ef..fd6badb 100644
--- a/src/filetransfer-handler.cpp
+++ b/src/filetransfer-handler.cpp
@@ -37,11 +37,15 @@
 #include <KNotification>
 #include <kio/global.h>
 #include <kjobtrackerinterface.h>
+#include <QApplication>
 
 
-FileTransferHandler::FileTransferHandler(QObject *parent) : QObject(parent),
-    Tp::AbstractClientHandler(Tp::ChannelClassSpecList() << Tp::ChannelClassSpec::incomingFileTransfer()
-                                                         << Tp::ChannelClassSpec::outgoingFileTransfer())
+FileTransferHandler::FileTransferHandler(bool persist, QObject *parent)
+    : QObject(parent),
+      Tp::AbstractClientHandler(Tp::ChannelClassSpecList() << Tp::ChannelClassSpec::incomingFileTransfer()
+                                                           << Tp::ChannelClassSpec::outgoingFileTransfer()),
+      m_persist(persist),
+      m_jobCount(0)
 {
 }
 
@@ -77,6 +81,7 @@ void FileTransferHandler::handleChannels(const Tp::MethodInvocationContextPtr<>
 
         KJob* job = NULL;
         if (Tp::IncomingFileTransferChannelPtr incomingFileTransferChannel = Tp::IncomingFileTransferChannelPtr::dynamicCast(channel)) {
+            m_jobCount.fetchAndAddOrdered(1);
             context->setFinished();
 
             kDebug() << "Incoming File Transfer";
@@ -96,6 +101,7 @@ void FileTransferHandler::handleChannels(const Tp::MethodInvocationContextPtr<>
                 context->setFinishedWithError(QLatin1String(TELEPATHY_QT4_ERROR_INCONSISTENT),
                                               QLatin1String("Cannot handle outgoing file transfer without URI"));
             }
+            m_jobCount.fetchAndAddOrdered(1);
             context->setFinished();
             job = new HandleOutgoingFileTransferChannelJob(outgoingFileTransferChannel, this);
         } else {
@@ -133,4 +139,14 @@ void FileTransferHandler::handleResult(KJob* job)
         kWarning() << job->errorString();
         // TODO do something;
     }
-}
\ No newline at end of file
+
+    QTimer::singleShot(2000, this, SLOT(onTimeout()));
+}
+
+void FileTransferHandler::onTimeout()
+{
+    if (!m_persist && m_jobCount.fetchAndAddOrdered(-1) <= 1) {
+        kDebug() << "Exiting";
+        QApplication::quit();
+    }
+}
diff --git a/src/filetransfer-handler.h b/src/filetransfer-handler.h
index d01c308..6fd6c4b 100644
--- a/src/filetransfer-handler.h
+++ b/src/filetransfer-handler.h
@@ -33,7 +33,7 @@ class FileTransferHandler : public QObject, public Tp::AbstractClientHandler
     Q_DISABLE_COPY(FileTransferHandler);
 
 public:
-    FileTransferHandler(QObject* parent = 0);
+    FileTransferHandler(bool persist, QObject* parent = 0);
     virtual ~FileTransferHandler();
 
     virtual bool bypassApproval() const;
@@ -45,11 +45,16 @@ public:
                         const QDateTime &userActionTime,
                         const Tp::AbstractClientHandler::HandlerInfo &handlerInfo);
 
+public Q_SLOTS:
+    void onTimeout();
+
 private Q_SLOTS:
     void onInfoMessage(KJob* job, const QString &plain, const QString &rich);
     void handleResult(KJob* job);
 
 private:
+    bool m_persist;
+    QAtomicInt m_jobCount;
 };
 
 #endif // TELEPATHY_KDE_FILETRANSFER_HANDLER_H
diff --git a/src/main.cpp b/src/main.cpp
index 0bfc682..fa83a4f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -37,6 +37,7 @@ int main(int argc, char* argv[])
     // Add --debug as commandline option
     KCmdLineOptions options;
     options.add("debug", ki18n("Show telepathy debugging information"));
+    options.add("persist", ki18n("Persistant mode (doesn't exit on timeout)"));
     KCmdLineArgs::addCmdLineOptions(options);
 
     KCmdLineArgs::init(argc, argv, &aboutData);
@@ -64,9 +65,12 @@ int main(int argc, char* argv[])
                                                                    channelFactory,
                                                                    contactFactory);
 
-    Tp::SharedPtr<FileTransferHandler> fth = Tp::SharedPtr<FileTransferHandler>(new FileTransferHandler);
+    Tp::SharedPtr<FileTransferHandler> fth = Tp::SharedPtr<FileTransferHandler>(
+            new FileTransferHandler(KCmdLineArgs::parsedArgs()->isSet("persist")));
     registrar->registerClient(Tp::AbstractClientPtr(fth),
                               QLatin1String("KDE.FileTransfer"));
 
+    QTimer::singleShot(2000, fth.data(), SLOT(onTimeout()));
+
     return app.exec();
 }

-- 
ktp-filetransfer-handler packaging



More information about the pkg-kde-commits mailing list