From 9ad5c7b5e23b4940e7a3ea3ca3a6fb77e6a8fab0 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 20 Jan 2010 02:37:40 +0000 Subject: Updated to final KDE3 ktorrent release (2.2.6) git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ktorrent@1077377 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- libktorrent/interfaces/coreinterface.h | 258 +++++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 libktorrent/interfaces/coreinterface.h (limited to 'libktorrent/interfaces/coreinterface.h') diff --git a/libktorrent/interfaces/coreinterface.h b/libktorrent/interfaces/coreinterface.h new file mode 100644 index 0000000..613ba8e --- /dev/null +++ b/libktorrent/interfaces/coreinterface.h @@ -0,0 +1,258 @@ +/*************************************************************************** + * Copyright (C) 2005 by Joris Guisson * + * joris.guisson@gmail.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. * + ***************************************************************************/ +#ifndef KTCOREINTERFACE_H +#define KTCOREINTERFACE_H + +#include +#include +#include +#include + +///Stats struct +struct CurrentStats +{ + bt::Uint32 download_speed; + bt::Uint32 upload_speed; + bt::Uint64 bytes_downloaded; + bt::Uint64 bytes_uploaded; +}; + +namespace bt +{ + class QueueManager; +} +namespace kt +{ + class TorrentInterface; + + /** + * @author Joris Guisson + * @brief Interface for plugins to communicate with the application's core + * + * This interface provides the plugin with the functionality to modify + * the applications core, the core is responsible for managing all + * TorrentControl objects. + */ + class CoreInterface : public QObject + { + Q_OBJECT + public: + CoreInterface(); + virtual ~CoreInterface(); + + /** + * Set the maximum number of simultanious downloads. + * @param max The max num (0 == no limit) + */ + virtual void setMaxDownloads(int max) = 0; + + virtual void setMaxSeeds(int max) = 0; + + virtual void setMaxDownloadSpeed(int v) = 0; + virtual void setMaxUploadSpeed(int v) = 0; + + /** + * Set wether or not we should keep seeding after + * a download has finished. + * @param ks Keep seeding yes or no + */ + virtual void setKeepSeeding(bool ks) = 0; + + /** + * Change the data dir. This involves copying + * all data from the old dir to the new. + * This can offcourse go horribly wrong, therefore + * if it doesn't succeed it returns false + * and leaves everything where it supposed to be. + * @param new_dir The new directory + */ + virtual bool changeDataDir(const QString & new_dir) = 0; + + /** + * Start all, takes into account the maximum number of downloads. + * @param type - Weather to start downloads, seeds or both. 1=Downloads, 2=Seeds, 3=All + */ + virtual void startAll(int type) = 0; + + /** + * Stop all torrents. + * @param type - Weather to start downloads, seeds or both. 1=Downloads, 2=Seeds, 3=All + */ + virtual void stopAll(int type) = 0; + + /** + * Start a torrent, takes into account the maximum number of downloads. + * @param tc The TorrentControl + */ + virtual void start(TorrentInterface* tc) = 0; + + /** + * Stop a torrent, may start another download if it hasn't been started. + * @param tc The TorrentControl + * @param user true if user stopped the torrent, false otherwise + */ + virtual void stop(TorrentInterface* tc, bool user = false) = 0; + + /** + * Enqueue/Dequeue function. Places a torrent in queue. + * If the torrent is already in queue this will remove it from queue. + * @param tc TorrentControl pointer. + */ + virtual void queue(kt::TorrentInterface* tc) = 0; + + virtual bt::QueueManager* getQueueManager() = 0; + + virtual CurrentStats getStats() = 0; + + /** + * Switch the port when no torrents are running. + * @param port The new port + * @return true if we can, false if there are torrents running + */ + virtual bool changePort(bt::Uint16 port) = 0; + + /// Get the number of torrents running (including seeding torrents). + virtual bt::Uint32 getNumTorrentsRunning() const = 0; + + /// Get the number of torrents not running. + virtual bt::Uint32 getNumTorrentsNotRunning() const = 0; + + /** + * Load a torrent file. Pops up an error dialog + * if something goes wrong. + * @param file The torrent file + * @param savedir Dir to save the data + * @param silently Wether or not to do this silently + */ + virtual bool load(const QString & file,const QString & savedir,bool silently) = 0; + + /** + * Load a torrent file. Pops up an error dialog + * if something goes wrong. Will ask the user for a save location, or use + * the default. + * @param url The torrent file + */ + virtual void load(const KURL& url) = 0; + + /** + * Load a torrent file. Pops up an error dialog + * if something goes wrong. Will ask the user for a save location, or use + * the default. This will not popup a file selection dialog for multi file torrents. + * @param url The torrent file + */ + virtual void loadSilently(const KURL& url) = 0; + + /** + * Remove a download.This will delete all temp + * data from this TorrentControl And delete the + * TorrentControl itself. It can also potentially + * start a new download (when one is waiting to be downloaded). + * @param tc The torrent + * @param data_to Wether or not to delete the file data to + */ + virtual void remove(TorrentInterface* tc,bool data_to) = 0; + + /** + * Inserts IP range to be blocked into IPBlocklist + * @param ip QString reference to single IP or IP range. For example: + * single - 127.0.0.5 + * range - 127.0.*.* + **/ + virtual void addBlockedIP(QString& ip) = 0; + + /** + * Removes IP range from IPBlocklist + * @param ip QString reference to single IP or IP range. For example: + * single - 127.0.0.5 + * range - 127.0.*.* + **/ + virtual void removeBlockedIP(QString& ip) = 0; + + /** + * Find the next free torX dir. + * @return Path to the dir (including the torX part) + */ + virtual QString findNewTorrentDir() const = 0; + + /** + * Load an existing torrent, which has already a properly set up torX dir. + * @param tor_dir The torX dir + */ + virtual void loadExistingTorrent(const QString & tor_dir) = 0; + + /** + * Returns maximum allowed download speed. + */ + virtual int getMaxDownloadSpeed() = 0; + + /** + * Returns maximum allowed upload speed. + */ + virtual int getMaxUploadSpeed() = 0; + + /** + * Sets global paused state for all torrents (QueueManager) and stopps all torrents. + * No torrents will be automatically started/stopped. + */ + virtual void setPausedState(bool pause) = 0; + + /// Get the global share ratio limit + virtual float getGlobalMaxShareRatio() const = 0; + + signals: + /** + * Seeing that when load returns the loading process may not have finished yet, + * and some code expects this. We emit this signal to notify that code of it. + * @param url The url which has been loaded + * @param success Wether or not it succeeded + * @param canceled Wether or not it was canceled by the user + */ + void loadingFinished(const KURL & url,bool success,bool canceled); + + /** + * A TorrentInterface was added + * @param tc + */ + void torrentAdded(kt::TorrentInterface* tc); + + + /** + * A TorrentInterface was removed + * @param tc + */ + void torrentRemoved(kt::TorrentInterface* tc); + + /** + * A TorrentInterface has finished downloading. + * @param tc + */ + void finished(kt::TorrentInterface* tc); + + /** + * Torrent download is stopped by error + * @param tc TorrentInterface + * @param msg Error message + */ + void torrentStoppedByError(kt::TorrentInterface* tc, QString msg); + }; + +} + +#endif -- cgit v1.2.1