20 #ifndef BTTORRENTINTERFACE_H
21 #define BTTORRENTINTERFACE_H
23 #include <QSharedPointer>
27 #include <ktorrent_export.h>
28 #include <util/constants.h>
29 #include <interfaces/trackerslist.h>
30 #include <torrent/torrentstats.h>
31 #include <torrent/torrentfilestream.h>
43 class MonitorInterface;
44 class TorrentFileInterface;
47 class WebSeedInterface;
49 class ChunkSelectorInterface;
52 enum TorrentStartResponse
57 MAX_SHARE_RATIO_REACHED,
89 class KTORRENT_EXPORT TorrentInterface :
public QObject
94 ~TorrentInterface()
override;
97 void setLoadUrl(
const QUrl &u) {url = u;}
100 QUrl loadUrl()
const {
return url;}
105 virtual void update() = 0;
110 virtual void pause() = 0;
115 virtual void unpause() = 0;
120 virtual void start() = 0;
133 virtual void updateTracker() = 0;
138 virtual void scrapeTracker() = 0;
148 virtual bool readyForPreview()
const = 0;
151 virtual bool isMultimedia()
const = 0;
157 virtual QString getTorDir()
const = 0;
160 virtual QString getDataDir()
const = 0;
166 virtual Uint32 getRunningTimeDL()
const = 0;
172 virtual Uint32 getRunningTimeUL()
const = 0;
180 virtual bool changeTorDir(
const QString & new_dir) = 0;
182 enum ChangeOutputFlags
184 MOVE_FILES = 1,FULL_PATH = 2
194 virtual bool changeOutputDir(
const QString& new_dir,
int flags) = 0;
200 virtual void rollback() = 0;
205 virtual const bt::BitSet & downloadedChunksBitSet()
const = 0;
210 virtual const bt::BitSet & availableChunksBitSet()
const = 0;
215 virtual const bt::BitSet & excludedChunksBitSet()
const = 0;
220 virtual const bt::BitSet & onlySeedChunksBitSet()
const = 0;
226 virtual Uint32 getNumFiles()
const = 0;
247 virtual bool moveTorrentFiles(
const QMap<TorrentFileInterface*,QString> & files) = 0;
258 virtual TorrentFileStream::Ptr createTorrentFileStream(bt::Uint32 index,
bool streaming_mode,QObject* parent) = 0;
264 virtual const TrackersList* getTrackersList()
const = 0;
267 virtual int getPriority()
const = 0;
270 virtual void setPriority(
int p) = 0;
273 virtual void setMaxShareRatio(
float ratio) = 0;
276 virtual float getMaxShareRatio()
const = 0;
279 virtual void setMaxSeedTime(
float hours) = 0;
282 virtual float getMaxSeedTime()
const = 0;
285 virtual QString getComments()
const = 0;
288 virtual void updateStatus() = 0;
291 virtual bool announceAllowed() = 0;
298 virtual int getETA() = 0;
307 virtual Job* startDataCheck(
bool auto_import, bt::Uint32 from, bt::Uint32 to) = 0;
314 virtual bool isStorageMounted(QStringList & missing) = 0;
320 virtual bool hasMissingFiles(QStringList & sl) = 0;
325 virtual void recreateMissingFiles() = 0;
330 virtual void dndMissingFiles() = 0;
334 virtual Uint32 getNumDHTNodes()
const = 0;
337 virtual const DHTNode & getDHTNode(Uint32 i)
const = 0;
342 virtual void deleteDataFiles() = 0;
345 virtual bool overMaxRatio() = 0;
348 virtual bool overMaxSeedTime() = 0;
351 virtual void handleError(
const QString & err) = 0;
369 virtual bool isFeatureEnabled(TorrentFeature tf) = 0;
372 virtual void setFeatureEnabled(TorrentFeature tf,
bool on) = 0;
375 virtual const bt::PeerID & getOwnPeerID()
const = 0;
378 virtual void setTrafficLimits(Uint32 up,Uint32 down) = 0;
381 virtual void getTrafficLimits(Uint32 & up,Uint32 & down) = 0;
384 virtual void setAssuredSpeeds(Uint32 up,Uint32 down) = 0;
387 virtual void getAssuredSpeeds(Uint32 & up,Uint32 & down) = 0;
390 virtual bool checkDiskSpace(
bool emit_sig =
true) = 0;
393 virtual const QTextCodec* getTextCodec()
const = 0;
396 virtual void changeTextCodec(QTextCodec* tc) = 0;
399 virtual Uint32 getNumWebSeeds()
const = 0;
408 virtual bool addWebSeed(
const QUrl &url) = 0;
411 virtual bool removeWebSeed(
const QUrl &url) = 0;
414 virtual void markExistingFilesAsDownloaded() = 0;
417 virtual void setUserModifiedFileName(
const QString & n) {user_modified_name = n;}
420 QString getUserModifiedFileName()
const {
return user_modified_name.isEmpty() ? stats.torrent_name : user_modified_name;}
423 virtual void setDisplayName(
const QString & n) = 0;
426 QString getDisplayName()
const {
return display_name.isEmpty() ? stats.torrent_name : display_name;}
429 virtual void setAllowedToStart(
bool on) = 0;
435 bool isAllowedToStart()
const {
return stats.qm_can_start;}
440 virtual void setQueued(
bool queued) = 0;
443 virtual const JobQueue* getJobQueue()
const = 0;
449 virtual void networkUp() = 0;
455 virtual void setMoveWhenCompletedDir(
const QString &dir) = 0;
460 virtual QString getMoveWhenCompletedDir()
const = 0;
465 virtual void setSuperSeeding(
bool on) = 0;
467 typedef QSharedPointer<TorrentInterface> Ptr;
468 typedef QPointer<TorrentInterface> WPtr;
564 QString user_modified_name;
565 QString display_name;