• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kget

  • sources
  • kde-4.14
  • kdenetwork
  • kget
  • core
transfer.h
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2004 Dario Massarin <nekkar@libero.it>
4  Copyright (C) 2008 - 2011 Lukas Appelhans <l.appelhans@gmx.de>
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 */
11 
12 #ifndef TRANSFER_H
13 #define TRANSFER_H
14 
15 #include "job.h"
16 #include "../kget_export.h"
17 
18 #include <QPixmap>
19 #include <QTime>
20 
21 #include <kurl.h>
22 #include <kio/global.h>
23 
24 class QDomElement;
25 
26 class Signature;
27 class TransferHandler;
28 class TransferFactory;
29 class TransferGroup;
30 class Scheduler;
31 class TransferTreeModel;
32 class NepomukHandler;
33 class FileModel;
34 class Verifier;
35 
36 class KGET_EXPORT Transfer : public Job
37 {
38  Q_OBJECT
39  friend class TransferHandler;
40  friend class TransferTreeModel;
41  public:
42 
47  enum TransferChange
48  {
49  Tc_None = 0x00000000,
50  // These flags respect the Model columns order NOTE: The model only checks the last 8 bits, so all values which need to be updated by the model should look like: 0x000000xx
51  Tc_Source = 0x00000001,
52  Tc_FileName = 0x00000002,
53  Tc_Status = 0x00000004,
54  Tc_TotalSize = 0x00000008,
55  Tc_Percent = 0x00000010,
56  Tc_DownloadSpeed = 0x00000020,
57  Tc_RemainingTime = 0x00000040,
58  // Misc
59  Tc_UploadSpeed = 0x00000100,
60  Tc_UploadLimit = 0x00000200,
61  Tc_DownloadLimit = 0x00000400,
62  Tc_CanResume = 0x00000800,
63  Tc_DownloadedSize = 0x00001000,
64  Tc_UploadedSize = 0x00002000,
65  Tc_Log = 0x00004000,
66  Tc_Group = 0x00008000,
67  Tc_Selection = 0x00010000
68  };
69 
70  enum Capability
71  {
72  Cap_SpeedLimit = 0x00000001,
73  Cap_MultipleMirrors = 0x00000002,
74  Cap_Resuming = 0x00000004,
75  Cap_Renaming = 0x00000008,
76  Cap_Moving = 0x00000010,
77  Cap_FindFilesize = 0x00000020
78  };
79  Q_DECLARE_FLAGS(Capabilities, Capability)
80 
81  enum LogLevel
82  {
83  Log_Info,
84  Log_Warning,
85  Log_Error
86  };
87 
88  enum SpeedLimit
89  {
90  VisibleSpeedLimit = 0x01,
91  InvisibleSpeedLimit = 0x02
92  };
93 
94  enum DeleteOption
95  {
96  DeleteTemporaryFiles = 0x00000001,
97  DeleteFiles = 0x00000002
98  };
99  Q_DECLARE_FLAGS(DeleteOptions, DeleteOption)
100  typedef int ChangesFlags;
101 
102  Transfer(TransferGroup * parent, TransferFactory * factory,
103  Scheduler * scheduler, const KUrl & src, const KUrl & dest,
104  const QDomElement * e = 0);
105 
106  virtual ~Transfer();
107 
111  Capabilities capabilities() const {return m_capabilities;}
112 
118  void create();
119 
125  void destroy(DeleteOptions options);
126 
132  virtual void init();
133 
138  virtual void deinit(DeleteOptions options) {Q_UNUSED(options);}
139 
146  virtual bool repair(const KUrl &file = KUrl()) {Q_UNUSED(file) return false;}
147 
148  const KUrl & source() const {return m_source;}
149  const KUrl & dest() const {return m_dest;}
150 
154  virtual QList<KUrl> files() const {return QList<KUrl>() << m_dest;}
155 
159  virtual KUrl directory() const {return m_dest.upUrl();}
160 
166  virtual bool setDirectory(const KUrl &newDirectory);
167 
168  //Transfer status
169  KIO::filesize_t totalSize() const {return m_totalSize;}
170  KIO::filesize_t downloadedSize() const {return m_downloadedSize;}
171  KIO::filesize_t uploadedSize() const {return m_uploadedSize;}
172  QString statusText() const {return m_statusText;}
173  QPixmap statusPixmap() const {return (error().pixmap.isNull() ? m_statusPixmap : error().pixmap);}
174 
175  static QString statusText(Job::Status status);
176  static QPixmap statusPixmap(Job::Status status);
177 
178  int percent() const {return m_percent;}
179  int downloadSpeed() const {return m_downloadSpeed;}
180  int averageDownloadSpeed() const;
181  int uploadSpeed() const {return m_uploadSpeed;}
182  virtual int remainingTime() const {return KIO::calculateRemainingSeconds(totalSize(), downloadedSize(), downloadSpeed());}
183  virtual int elapsedTime() const;
184  virtual bool isStalled() const {return (status() == Job::Running && downloadSpeed() == 0);}
185  virtual bool isWorking() const {return downloadSpeed() > 0;}
186 
193  virtual QHash<KUrl, QPair<bool, int> > availableMirrors(const KUrl &file) const;
194 
200  virtual void setAvailableMirrors(const KUrl &file, const QHash<KUrl, QPair<bool, int> > &mirrors) {Q_UNUSED(file) Q_UNUSED(mirrors)}
201 
207  void setUploadLimit(int ulLimit, SpeedLimit limit);
208 
214  void setDownloadLimit(int dlLimit, SpeedLimit limit);
215 
219  int uploadLimit(SpeedLimit limit) const;
220 
224  int downloadLimit(SpeedLimit limit) const;
225 
230  void setMaximumShareRatio(double ratio);
231 
235  double maximumShareRatio() {return m_ratio;}
236 
240  void checkShareRatio();
241 
242  bool isSelected() const {return m_isSelected;}
243 
247  const QStringList log() const;
248 
252  bool operator<(const Transfer& t2) const;
253 
257  TransferGroup * group() const {return (TransferGroup *) m_jobQueue;}
258 
262  TransferHandler * handler();
263 
267  TransferTreeModel * model();
268 
272  TransferFactory * factory() const {return m_factory;}
273 
277  virtual FileModel * fileModel() {return 0;}
278 
283  virtual Verifier * verifier(const KUrl &file) {Q_UNUSED(file) return 0;}
284 
289  virtual Signature * signature(const KUrl &file) {Q_UNUSED(file) return 0;}
290 
291 #ifdef HAVE_NEPOMUK
292 
296  void setNepomukHandler(NepomukHandler *handler);
297 
301  NepomukHandler * nepomukHandler() {return m_nepomukHandler;}
302 #endif
303 
309  virtual void save(const QDomElement &element);
310 
316  virtual void load(const QDomElement *element);
317 
318  signals:
322  void capabilitiesChanged();
323 
324  public slots:
328  void setLog(const QString& message, Transfer::LogLevel level = Log_Info);
329 
330  protected:
335  void setStatus(Job::Status jobStatus, const QString &text = QString(), const QPixmap &pix = QPixmap());
336 
340  void setCapabilities(Capabilities capabilities);
341 
348  virtual void setTransferChange(ChangesFlags change, bool postEvent=false);
349 
353  virtual void setSpeedLimits(int uploadLimit, int downloadLimit) {Q_UNUSED(uploadLimit) Q_UNUSED(downloadLimit) }
354 
355  // --- Transfer information ---
356  KUrl m_source;
357  KUrl m_dest;
358 
359  QStringList m_log;
360  KIO::filesize_t m_totalSize;
361  KIO::filesize_t m_downloadedSize;
362  KIO::filesize_t m_uploadedSize;
363  int m_percent;
364  int m_downloadSpeed;
365  int m_uploadSpeed;
366 
367  int m_uploadLimit;
368  int m_downloadLimit;
369 
370  bool m_isSelected;
371 
372  private:
373  Capabilities m_capabilities;
374  int m_visibleUploadLimit;
375  int m_visibleDownloadLimit;
376  int m_runningSeconds;
377  double m_ratio;
378 
379  QString m_statusText;
380  QPixmap m_statusPixmap;
381  QTime m_runningTime;
382 
383  TransferHandler * m_handler;
384  TransferFactory * m_factory;
385 #ifdef HAVE_NEPOMUK
386  NepomukHandler * m_nepomukHandler;
387 #endif
388 };
389 
390 Q_DECLARE_OPERATORS_FOR_FLAGS(Transfer::Capabilities)
391 Q_DECLARE_OPERATORS_FOR_FLAGS(Transfer::DeleteOptions)
392 
393 #endif
Transfer::source
const KUrl & source() const
Definition: transfer.h:148
Transfer::fileModel
virtual FileModel * fileModel()
Definition: transfer.h:277
Transfer::Log_Info
Definition: transfer.h:83
Transfer::ChangesFlags
int ChangesFlags
Definition: transfer.h:100
Job::Error::pixmap
QPixmap pixmap
Definition: job.h:76
TransferHandler
Class TransferHandler:
Definition: transferhandler.h:48
Transfer::statusPixmap
QPixmap statusPixmap() const
Definition: transfer.h:173
Transfer::m_dest
KUrl m_dest
Definition: transfer.h:357
TransferGroup
class TransferGroup:
Definition: transfergroup.h:46
Transfer::uploadedSize
KIO::filesize_t uploadedSize() const
Definition: transfer.h:171
Scheduler
Scheduler class: what handle all the jobs in kget.
Definition: scheduler.h:32
Transfer::setSpeedLimits
virtual void setSpeedLimits(int uploadLimit, int downloadLimit)
Function used to set the SpeedLimits to the transfer.
Definition: transfer.h:353
Transfer::totalSize
KIO::filesize_t totalSize() const
Definition: transfer.h:169
Transfer::maximumShareRatio
double maximumShareRatio()
Definition: transfer.h:235
Transfer::remainingTime
virtual int remainingTime() const
Definition: transfer.h:182
Job::error
Error error() const
Definition: job.h:96
Transfer::m_downloadedSize
KIO::filesize_t m_downloadedSize
Definition: transfer.h:361
Job::Status
Status
The status property describes the current job status.
Definition: job.h:42
Transfer::LogLevel
LogLevel
Definition: transfer.h:81
Transfer::Log_Warning
Definition: transfer.h:84
Transfer::repair
virtual bool repair(const KUrl &file=KUrl())
Tries to repair file.
Definition: transfer.h:146
Job
Definition: job.h:35
Transfer::group
TransferGroup * group() const
The owner group.
Definition: transfer.h:257
Transfer::percent
int percent() const
Definition: transfer.h:178
QTime
TransferTreeModel
Definition: transfertreemodel.h:108
Transfer::Capability
Capability
Definition: transfer.h:70
Transfer::m_uploadLimit
int m_uploadLimit
Definition: transfer.h:367
Transfer::m_isSelected
bool m_isSelected
Definition: transfer.h:370
Transfer::downloadSpeed
int downloadSpeed() const
Definition: transfer.h:179
Transfer::m_totalSize
KIO::filesize_t m_totalSize
Definition: transfer.h:360
FileModel
This model represents the files that are being downloaded.
Definition: filemodel.h:101
Transfer::TransferChange
TransferChange
Here we define the flags that should be shared by all the transfers.
Definition: transfer.h:47
Transfer::m_downloadSpeed
int m_downloadSpeed
Definition: transfer.h:364
Job::Running
Definition: job.h:43
QHash
Transfer::isStalled
virtual bool isStalled() const
Definition: transfer.h:184
Transfer::m_uploadSpeed
int m_uploadSpeed
Definition: transfer.h:365
Job::setStatus
void setStatus(Status jobStatus)
Definition: job.cpp:34
Transfer::deinit
virtual void deinit(DeleteOptions options)
This function is called before the deletion of a Transfer In transfer plugins you can put here whatev...
Definition: transfer.h:138
Transfer::factory
TransferFactory * factory() const
Definition: transfer.h:272
QString
QList< KUrl >
Transfer::SpeedLimit
SpeedLimit
Definition: transfer.h:88
QStringList
QPair
QPixmap
Transfer::directory
virtual KUrl directory() const
Definition: transfer.h:159
Transfer::m_log
QStringList m_log
Definition: transfer.h:359
job.h
Transfer::files
virtual QList< KUrl > files() const
Definition: transfer.h:154
Transfer::statusText
QString statusText() const
Definition: transfer.h:172
Verifier
Definition: verifier.h:68
Transfer::downloadedSize
KIO::filesize_t downloadedSize() const
Definition: transfer.h:170
Job::status
Status status() const
Definition: job.h:93
Transfer::uploadSpeed
int uploadSpeed() const
Definition: transfer.h:181
Transfer::dest
const KUrl & dest() const
Definition: transfer.h:149
Transfer::DeleteOption
DeleteOption
Definition: transfer.h:94
Transfer::signature
virtual Signature * signature(const KUrl &file)
Definition: transfer.h:289
Job::elapsedTime
virtual int elapsedTime() const =0
Signature
Class to verify signatures.
Definition: signature.h:38
Transfer::isWorking
virtual bool isWorking() const
Definition: transfer.h:185
Transfer::m_percent
int m_percent
Definition: transfer.h:363
NepomukHandler
Definition: nepomukhandler.h:24
KGET_EXPORT
#define KGET_EXPORT
Definition: kget_export.h:24
Transfer::verifier
virtual Verifier * verifier(const KUrl &file)
Definition: transfer.h:283
Job::m_jobQueue
JobQueue * m_jobQueue
Definition: job.h:118
TransferFactory
TransferFactory.
Definition: transferfactory.h:52
Transfer::m_source
KUrl m_source
Definition: transfer.h:356
QObject::parent
QObject * parent() const
QDomElement
Transfer::m_downloadLimit
int m_downloadLimit
Definition: transfer.h:368
Transfer::setAvailableMirrors
virtual void setAvailableMirrors(const KUrl &file, const QHash< KUrl, QPair< bool, int > > &mirrors)
Set the mirrors, int the number of paralell connections to the mirror bool if the mirror should be us...
Definition: transfer.h:200
Transfer::m_uploadedSize
KIO::filesize_t m_uploadedSize
Definition: transfer.h:362
Transfer::isSelected
bool isSelected() const
Definition: transfer.h:242
Transfer
Definition: transfer.h:36
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:28:43 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kget

Skip menu "kget"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal