//============================================================================= // // DBus interface for KTorrent client. // // File : KTorrentDbusInterface.cpp // Creation date : Mon Nov 17 13:46:00 2008 GMT by Fabio Bas // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2008 Fabio Bas (ctrlaltca at gmail dot com) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "KTorrentDbusInterface.h" #ifdef COMPILE_KDE_SUPPORT #include "KviApplication.h" #include "KviLocale.h" #include TORR_IMPLEMENT_DESCRIPTOR( KTorrentDbusInterface, "ktorrentdbus", __tr2qs_ctx( "An interface for KDE's KTorrent client.\n" "Download it from http://www.ktorrent.org\n", "torrent")) KTorrentDbusInterface::KTorrentDbusInterface() { // make sure we have a list of files, // otherwise functions dealing would // fail if called the first time // slotTimer(); } KTorrentDbusInterface::~KTorrentDbusInterface() = default; bool KTorrentDbusInterface::findRunningApp() { QDBusReply reply = QDBusConnection::sessionBus().interface()->registeredServiceNames(); if(!reply.isValid()) /* something fishy with dbus, it won't work */ return false; foreach(QString name, reply.value()) if(name == "org.ktorrent.ktorrent") /* ktorrent is running */ return true; return false; /* dbus works, ktorrent may be closed */ } int KTorrentDbusInterface::detect() { QDBusReply reply = QDBusConnection::sessionBus().interface()->registeredServiceNames(); if(!reply.isValid()) /* something fishy with dbus, it won't work */ return 0; foreach(QString name, reply.value()) if(name == "org.ktorrent.ktorrent") /* ktorrent is running */ return 100; return 1; /* dbus works, ktorrent may be closed */ } #define KTDBUS_SIMPLE_CALL(__action) \ QDBusInterface dbus_iface("org.ktorrent.ktorrent", "/core", \ "org.ktorrent.KTorrent", QDBusConnection::sessionBus()); \ QDBusMessage reply = dbus_iface.call(QDBus::Block, __action); \ if(reply.type() == QDBusMessage::ErrorMessage) \ { \ QDBusError err = reply; \ qDebug("Error: %s\n%s\n", qPrintable(err.name()), qPrintable(err.message())); \ return false; \ } \ return true; bool KTorrentDbusInterface::startAll() { KTDBUS_SIMPLE_CALL("startAll"); return true; } bool KTorrentDbusInterface::stopAll() { KTDBUS_SIMPLE_CALL("stopAll"); return true; } bool KTorrentDbusInterface::start(int) { return true; } bool KTorrentDbusInterface::stop(int) { return true; } bool KTorrentDbusInterface::announce(int) { return true; } QString KTorrentDbusInterface::state(int) { return QString(); } QString KTorrentDbusInterface::name(int) { return QString(); } int KTorrentDbusInterface::fileCount(int) { return 0; } QString KTorrentDbusInterface::fileName(int, int) { return QString(); } QString KTorrentDbusInterface::filePriority(int, int) { return QString(); } bool KTorrentDbusInterface::setFilePriority(int, int, const QString &) { return true; } int KTorrentDbusInterface::count() { return 0; // return m_ti.size(); } float KTorrentDbusInterface::speedUp() { return 0.0; } float KTorrentDbusInterface::speedDown() { return 0.0; } float KTorrentDbusInterface::trafficUp() { return 0.0; } float KTorrentDbusInterface::trafficDown() { return 0.0; } int KTorrentDbusInterface::maxUploadSpeed() { return -1; } int KTorrentDbusInterface::maxDownloadSpeed() { return -1; } bool KTorrentDbusInterface::setMaxUploadSpeed(int) { return true; } bool KTorrentDbusInterface::setMaxDownloadSpeed(int) { return true; } #endif // COMPILE_KDE_SUPPORT