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

KIO

  • sources
  • kde-4.14
  • kdelibs
  • kio
  • kio
job_p.h
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 2000 Stephan Kulow <coolo@kde.org>
3  2000-2009 David Faure <faure@kde.org>
4  Waldo Bastian <bastian@kde.org>
5  Copyright (C) 2007 Thiago Macieira <thiago@kde.org>
6  Copyright (C) 2013 Dawit Alemayehu <adawit@kde.org>
7 
8  This library is free software; you can redistribute it and/or
9  modify it under the terms of the GNU Library General Public
10  License as published by the Free Software Foundation; either
11  version 2 of the License, or (at your option) any later version.
12 
13  This library is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  Library General Public License for more details.
17 
18  You should have received a copy of the GNU Library General Public License
19  along with this library; see the file COPYING.LIB. If not, write to
20  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  Boston, MA 02110-1301, USA.
22 */
23 
24 #ifndef KIO_JOB_P_H
25 #define KIO_JOB_P_H
26 
27 #include "job.h"
28 #include "kcompositejob_p.h"
29 #include "jobuidelegate.h"
30 #include "kjobtrackerinterface.h"
31 
32 #include <QPointer>
33 
34 #define KIO_ARGS QByteArray packedArgs; QDataStream stream( &packedArgs, QIODevice::WriteOnly ); stream
35 
36 namespace KIO {
37  class Slave;
38 
39  class JobPrivate: public KCompositeJobPrivate
40  {
41  public:
42  JobPrivate()
43  : m_parentJob( 0L ), m_extraFlags(0)
44  {}
45 
50  enum { EF_TransferJobAsync = (1 << 0),
51  EF_TransferJobNeedData = (1 << 1),
52  EF_TransferJobDataSent = (1 << 2),
53  EF_ListJobUnrestricted = (1 << 3),
54  EF_KillCalled = (1 << 4) };
55 
56  // Maybe we could use the QObject parent/child mechanism instead
57  // (requires a new ctor, and moving the ctor code to some init()).
58  Job* m_parentJob;
59  int m_extraFlags;
60  MetaData m_incomingMetaData;
61  MetaData m_internalMetaData;
62  MetaData m_outgoingMetaData;
63 
64  inline KIO::JobUiDelegate *ui() const
65  { return static_cast<KIO::JobUiDelegate *>(uiDelegate); }
66 
67  void slotSpeed( KJob *job, unsigned long speed );
68 
69  static void emitMoving(KIO::Job*, const KUrl &src, const KUrl &dest);
70  static void emitCopying(KIO::Job*, const KUrl &src, const KUrl &dest);
71  static void emitCreatingDir(KIO::Job*, const KUrl &dir);
72  static void emitDeleting(KIO::Job*, const KUrl &url);
73  static void emitStating(KIO::Job*, const KUrl &url);
74  static void emitTransferring(KIO::Job*, const KUrl &url);
75  static void emitMounting(KIO::Job*, const QString &dev, const QString &point);
76  static void emitUnmounting(KIO::Job*, const QString &point);
77 
78  Q_DECLARE_PUBLIC(Job)
79  };
80 
81  class SimpleJobPrivate: public JobPrivate
82  {
83  public:
90  SimpleJobPrivate(const KUrl& url, int command, const QByteArray &packedArgs)
91  : m_slave(0), m_packedArgs(packedArgs), m_url(url), m_command(command),
92  m_checkOnHold(false), m_schedSerial(0), m_redirectionHandlingEnabled(true)
93  {
94  if (m_url.hasSubUrl())
95  {
96  KUrl::List list = KUrl::split(m_url);
97  list.removeLast();
98  m_subUrl = KUrl::join(list);
99  //kDebug(7007) << "New URL = " << m_url.url();
100  //kDebug(7007) << "Sub URL = " << m_subUrl.url();
101  }
102  }
103 
104  Slave * m_slave;
105  QByteArray m_packedArgs;
106  KUrl m_url;
107  KUrl m_subUrl;
108  int m_command;
109 
110  // for use in KIO::Scheduler
111  //
112  // There are two kinds of protocol:
113  // (1) The protocol of the url
114  // (2) The actual protocol that the io-slave uses.
115  //
116  // These two often match, but not necessarily. Most notably, they don't
117  // match when doing ftp via a proxy.
118  // In that case (1) is ftp, but (2) is http.
119  //
120  // JobData::protocol stores (2) while Job::url().protocol() returns (1).
121  // The ProtocolInfoDict is indexed with (2).
122  //
123  // We schedule slaves based on (2) but tell the slave about (1) via
124  // Slave::setProtocol().
125  QString m_protocol;
126  QStringList m_proxyList;
127  bool m_checkOnHold;
128  int m_schedSerial;
129  bool m_redirectionHandlingEnabled;
130 
131  void simpleJobInit();
132 
137  void slotConnected();
143  void slotProcessedSize( KIO::filesize_t data_size );
149  void slotSpeed( unsigned long speed );
155  void slotTotalSize( KIO::filesize_t data_size );
156 
162  void _k_slotSlaveInfoMessage( const QString &s );
163 
169  virtual void start( KIO::Slave *slave );
170 
175  void slaveDone();
176 
182  void restartAfterRedirection(KUrl *redirectionUrl);
183 
188  int requestMessageBox(int type, const QString& text,
189  const QString& caption,
190  const QString& buttonYes,
191  const QString& buttonNo,
192  const QString& iconYes = QString(),
193  const QString& iconNo = QString(),
194  const QString& dontAskAgainName = QString(),
195  const KIO::MetaData& sslMetaData = KIO::MetaData());
196 
197  Q_DECLARE_PUBLIC(SimpleJob)
198 
199  static inline SimpleJobPrivate *get(KIO::SimpleJob *job)
200  { return job->d_func(); }
201  static inline SimpleJob *newJobNoUi(const KUrl& url, int command, const QByteArray &packedArgs)
202  {
203  SimpleJob *job = new SimpleJob(*new SimpleJobPrivate(url, command, packedArgs));
204  return job;
205  }
206  static inline SimpleJob *newJob(const KUrl& url, int command, const QByteArray &packedArgs,
207  JobFlags flags = HideProgressInfo )
208  {
209  SimpleJob *job = new SimpleJob(*new SimpleJobPrivate(url, command, packedArgs));
210  job->setUiDelegate(new JobUiDelegate);
211  if (!(flags & HideProgressInfo))
212  KIO::getJobTracker()->registerJob(job);
213  return job;
214  }
215  };
216 
217  class MkdirJobPrivate;
222  class KIO_EXPORT MkdirJob : public SimpleJob {
223 
224  Q_OBJECT
225 
226  public:
227  ~MkdirJob();
228 
229  Q_SIGNALS:
237  void redirection( KIO::Job *job, const KUrl &url );
238 
246  void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
247 
248  protected Q_SLOTS:
249  virtual void slotFinished();
250 
251  public:
252  MkdirJob(MkdirJobPrivate &dd);
253 
254  private:
255  Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url))
256  Q_DECLARE_PRIVATE(MkdirJob)
257  };
258 
259  class TransferJobPrivate: public SimpleJobPrivate
260  {
261  public:
262  inline TransferJobPrivate(const KUrl& url, int command, const QByteArray &packedArgs,
263  const QByteArray &_staticData)
264  : SimpleJobPrivate(url, command, packedArgs),
265  m_internalSuspended(false), m_errorPage(false),
266  staticData(_staticData), m_isMimetypeEmitted(false), m_subJob(0)
267  { }
268 
269  inline TransferJobPrivate(const KUrl& url, int command, const QByteArray &packedArgs,
270  QIODevice* ioDevice)
271  : SimpleJobPrivate(url, command, packedArgs),
272  m_internalSuspended(false), m_errorPage(false),
273  m_isMimetypeEmitted(false), m_subJob(0),
274  m_outgoingDataSource(ioDevice)
275  { }
276 
277  bool m_internalSuspended;
278  bool m_errorPage;
279  QByteArray staticData;
280  KUrl m_redirectionURL;
281  KUrl::List m_redirectionList;
282  QString m_mimetype;
283  bool m_isMimetypeEmitted;
284  TransferJob *m_subJob;
285  QPointer<QIODevice> m_outgoingDataSource;
286 
290  void internalSuspend();
294  void internalResume();
301  virtual void start( KIO::Slave *slave );
308  virtual void slotDataReqFromDevice();
309 
310  void slotErrorPage();
311  void slotCanResume( KIO::filesize_t offset );
312  void slotPostRedirection();
313  void slotNeedSubUrlData();
314  void slotSubUrlData(KIO::Job*, const QByteArray &);
315 
316  Q_DECLARE_PUBLIC(TransferJob)
317  static inline TransferJob *newJob(const KUrl& url, int command,
318  const QByteArray &packedArgs,
319  const QByteArray &_staticData,
320  JobFlags flags)
321  {
322  TransferJob *job = new TransferJob(*new TransferJobPrivate(url, command, packedArgs, _staticData));
323  job->setUiDelegate(new JobUiDelegate);
324  if (!(flags & HideProgressInfo))
325  KIO::getJobTracker()->registerJob(job);
326  return job;
327  }
328 
329  static inline TransferJob *newJob(const KUrl& url, int command,
330  const QByteArray &packedArgs,
331  QIODevice* ioDevice,
332  JobFlags flags)
333  {
334  TransferJob *job = new TransferJob(*new TransferJobPrivate(url, command, packedArgs, ioDevice));
335  job->setUiDelegate(new JobUiDelegate);
336  if (!(flags & HideProgressInfo))
337  KIO::getJobTracker()->registerJob(job);
338  return job;
339  }
340  };
341 
342  class DirectCopyJobPrivate;
347  class DirectCopyJob : public SimpleJob
348  {
349  Q_OBJECT
350 
351  public:
352  DirectCopyJob(const KUrl &url, const QByteArray &packedArgs);
353  ~DirectCopyJob();
354 
355  public Q_SLOTS:
356  void slotCanResume( KIO::filesize_t offset );
357 
358  Q_SIGNALS:
364  void canResume( KIO::Job *job, KIO::filesize_t offset );
365 
366  private:
367  Q_DECLARE_PRIVATE(DirectCopyJob)
368  };
369 }
370 
371 #endif
QIODevice
KIO::JobPrivate::m_incomingMetaData
MetaData m_incomingMetaData
Definition: job_p.h:60
KIO::JobPrivate::emitUnmounting
static void emitUnmounting(KIO::Job *, const QString &point)
Definition: job.cpp:169
KCompositeJobPrivate
KIO::filesize_t
qulonglong filesize_t
64-bit file size
Definition: global.h:57
KUrl::split
static List split(const QString &_url)
KIO::JobPrivate::m_internalMetaData
MetaData m_internalMetaData
Definition: job_p.h:61
KIO::SimpleJobPrivate::m_proxyList
QStringList m_proxyList
Definition: job_p.h:126
KCompositeJob::setUiDelegate
void setUiDelegate(KJobUiDelegate *delegate)
KIO::TransferJobPrivate::staticData
QByteArray staticData
Definition: job_p.h:279
QByteArray
kjobtrackerinterface.h
KIO::JobPrivate::slotSpeed
void slotSpeed(KJob *job, unsigned long speed)
Definition: job.cpp:207
KIO::HideProgressInfo
Hide progress information dialog, i.e.
Definition: jobclasses.h:51
KIO::SimpleJobPrivate::m_checkOnHold
bool m_checkOnHold
Definition: job_p.h:127
QPointer< QIODevice >
KIO::get
TransferJob * get(const KUrl &url, LoadType reload=NoReload, JobFlags flags=DefaultFlags)
Get (a.k.a.
Definition: job.cpp:1369
KIO::TransferJobPrivate::m_redirectionURL
KUrl m_redirectionURL
Definition: job_p.h:280
KIO::JobPrivate::emitStating
static void emitStating(KIO::Job *, const KUrl &url)
Definition: job.cpp:150
KIO::DirectCopyJob
Definition: job_p.h:347
KIO::JobPrivate::EF_ListJobUnrestricted
Definition: job_p.h:53
KIO::SimpleJobPrivate::newJob
static SimpleJob * newJob(const KUrl &url, int command, const QByteArray &packedArgs, JobFlags flags=HideProgressInfo)
Definition: job_p.h:206
KIO::TransferJobPrivate::newJob
static TransferJob * newJob(const KUrl &url, int command, const QByteArray &packedArgs, QIODevice *ioDevice, JobFlags flags)
Definition: job_p.h:329
KIO::SimpleJobPrivate
Definition: job_p.h:81
KIO::MetaData
MetaData is a simple map of key/value strings.
Definition: global.h:396
kcompositejob_p.h
KIO::JobPrivate::emitMounting
static void emitMounting(KIO::Job *, const QString &dev, const QString &point)
Definition: job.cpp:162
KUrl
KIO::Slave
Definition: slave.h:48
KIO::TransferJobPrivate::m_mimetype
QString m_mimetype
Definition: job_p.h:282
KIO::JobPrivate::EF_TransferJobAsync
Definition: job_p.h:50
KIO::TransferJobPrivate::m_outgoingDataSource
QPointer< QIODevice > m_outgoingDataSource
Definition: job_p.h:285
KIO::TransferJobPrivate::m_errorPage
bool m_errorPage
Definition: job_p.h:278
KIO::SimpleJobPrivate::newJobNoUi
static SimpleJob * newJobNoUi(const KUrl &url, int command, const QByteArray &packedArgs)
Definition: job_p.h:201
KCompositeJobPrivate::uiDelegate
KJobUiDelegate * uiDelegate
KIO::SimpleJobPrivate::SimpleJobPrivate
SimpleJobPrivate(const KUrl &url, int command, const QByteArray &packedArgs)
Creates a new simple job.
Definition: job_p.h:90
KIO::JobPrivate::emitCreatingDir
static void emitCreatingDir(KIO::Job *, const KUrl &dir)
Definition: job.cpp:138
KIO::TransferJobPrivate::TransferJobPrivate
TransferJobPrivate(const KUrl &url, int command, const QByteArray &packedArgs, QIODevice *ioDevice)
Definition: job_p.h:269
KIO::JobUiDelegate
A UI delegate tuned to be used with KIO Jobs.
Definition: jobuidelegate.h:39
KIO::TransferJobPrivate::m_internalSuspended
bool m_internalSuspended
Definition: job_p.h:277
KIO::JobPrivate::m_outgoingMetaData
MetaData m_outgoingMetaData
Definition: job_p.h:62
KIO::TransferJobPrivate::m_subJob
TransferJob * m_subJob
Definition: job_p.h:284
KIO::SimpleJobPrivate::m_redirectionHandlingEnabled
bool m_redirectionHandlingEnabled
Definition: job_p.h:129
KIO::getJobTracker
KJobTrackerInterface * getJobTracker()
Definition: global.cpp:1246
QString
KIO::TransferJobPrivate::m_isMimetypeEmitted
bool m_isMimetypeEmitted
Definition: job_p.h:283
KIO::SimpleJobPrivate::m_protocol
QString m_protocol
Definition: job_p.h:125
QStringList
KIO::JobPrivate::EF_KillCalled
Definition: job_p.h:54
jobuidelegate.h
KIO::JobPrivate::emitTransferring
static void emitTransferring(KIO::Job *, const KUrl &url)
Definition: job.cpp:156
KIO::JobPrivate::emitDeleting
static void emitDeleting(KIO::Job *, const KUrl &url)
Definition: job.cpp:144
KIO::JobPrivate::m_extraFlags
int m_extraFlags
Definition: job_p.h:59
job.h
KUrl::List
KIO::JobPrivate::EF_TransferJobDataSent
Definition: job_p.h:52
KIO::SimpleJobPrivate::m_slave
Slave * m_slave
Definition: job_p.h:104
KIO::SimpleJobPrivate::m_packedArgs
QByteArray m_packedArgs
Definition: job_p.h:105
KRecentDirs::dir
QString dir(const QString &fileClass)
Returns the most recently used directory accociated with this file-class.
Definition: krecentdirs.cpp:68
KIO::TransferJobPrivate
Definition: job_p.h:259
KIO::Job
The base class for all jobs.
Definition: jobclasses.h:94
KIO::JobPrivate::emitMoving
static void emitMoving(KIO::Job *, const KUrl &src, const KUrl &dest)
Definition: job.cpp:124
QList::removeLast
void removeLast()
KIO::SimpleJobPrivate::m_subUrl
KUrl m_subUrl
Definition: job_p.h:107
KIO::SimpleJobPrivate::m_schedSerial
int m_schedSerial
Definition: job_p.h:128
KIO::TransferJobPrivate::m_redirectionList
KUrl::List m_redirectionList
Definition: job_p.h:281
KIO::JobPrivate::EF_TransferJobNeedData
Definition: job_p.h:51
KIO::JobPrivate::ui
KIO::JobUiDelegate * ui() const
Definition: job_p.h:64
KIO::SimpleJobPrivate::m_command
int m_command
Definition: job_p.h:108
KJobTrackerInterface::registerJob
virtual void registerJob(KJob *job)
KIO::TransferJob
The transfer job pumps data into and/or out of a Slave.
Definition: jobclasses.h:555
KIO::JobPrivate::m_parentJob
Job * m_parentJob
Definition: job_p.h:58
KIO::SimpleJobPrivate::m_url
KUrl m_url
Definition: job_p.h:106
KIO::JobPrivate
Definition: job_p.h:39
KIO::MkdirJob
A KIO job that creates a directory.
Definition: job_p.h:222
KJob
KIO::TransferJobPrivate::TransferJobPrivate
TransferJobPrivate(const KUrl &url, int command, const QByteArray &packedArgs, const QByteArray &_staticData)
Definition: job_p.h:262
KUrl::join
static KUrl join(const List &_list)
KIO::JobPrivate::JobPrivate
JobPrivate()
Definition: job_p.h:42
KRecentDirs::list
QStringList list(const QString &fileClass)
Returns a list of directories associated with this file-class.
Definition: krecentdirs.cpp:60
KIO::JobPrivate::emitCopying
static void emitCopying(KIO::Job *, const KUrl &src, const KUrl &dest)
Definition: job.cpp:131
KIO::SimpleJob
A simple job (one url and one command).
Definition: jobclasses.h:322
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:24:52 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KIO

Skip menu "KIO"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

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