• 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
  • transfer-plugins
  • multisegmentkio
transfermultisegkio.cpp
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) 2006 Manolo Valdes <nolis71cu@gmail.com>
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 #include "transfermultisegkio.h"
13 
14 #include "multisegkiosettings.h"
15 #include "core/kget.h"
16 #include "core/transferdatasource.h"
17 // #include "mirrors.h"
18 #include "core/filemodel.h"
19 #include "core/verifier.h"
20 #include "core/signature.h"
21 
22 #include <utime.h>
23 
24 #include <kiconloader.h>
25 #include <KIO/CopyJob>
26 #include <KIO/NetAccess>
27 #include <klocale.h>
28 #include <KMessageBox>
29 #include <kdebug.h>
30 
31 #include <QDomElement>
32 #include <QFile>
33 
34 TransferMultiSegKio::TransferMultiSegKio(TransferGroup *parent, TransferFactory *factory,
35  Scheduler *scheduler, const KUrl &source, const KUrl &dest,
36  const QDomElement *e)
37  : Transfer(parent, factory, scheduler, source, dest, e),
38  m_movingFile(false),
39  m_searchStarted(false),
40  m_verificationSearch(false),
41  m_dataSourceFactory(0),
42  m_fileModel(0)
43 {
44 }
45 
46 void TransferMultiSegKio::init()
47 {
48  Transfer::init();
49 
50  if (!m_dataSourceFactory) {
51  m_dataSourceFactory = new DataSourceFactory(this, m_dest);
52  connect(m_dataSourceFactory, SIGNAL(capabilitiesChanged()), this, SLOT(slotUpdateCapabilities()));
53  connect(m_dataSourceFactory, SIGNAL(dataSourceFactoryChange(Transfer::ChangesFlags)), this, SLOT(slotDataSourceFactoryChange(Transfer::ChangesFlags)));
54  connect(m_dataSourceFactory->verifier(), SIGNAL(verified(bool)), this, SLOT(slotVerified(bool)));
55  connect(m_dataSourceFactory, SIGNAL(log(QString,Transfer::LogLevel)), this, SLOT(setLog(QString,Transfer::LogLevel)));
56 
57  m_dataSourceFactory->addMirror(m_source, MultiSegKioSettings::segments());
58 
59  slotUpdateCapabilities();
60  }
61 }
62 
63 void TransferMultiSegKio::deinit(Transfer::DeleteOptions options)
64 {
65  if (options & Transfer::DeleteFiles)//if the transfer is not finished, we delete the *.part-file
66  {
67  m_dataSourceFactory->deinit();
68  }//TODO: Ask the user if he/she wants to delete the *.part-file? To discuss (boom1992)
69 }
70 
71 void TransferMultiSegKio::start()
72 {
73  kDebug(5001) << "Start TransferMultiSegKio";
74  if (status() == Running) {
75  return;
76  }
77 
78  m_dataSourceFactory->start();
79 
80  if (MultiSegKioSettings::useSearchEngines() && !m_searchStarted) {
81  m_searchStarted = true;
82  QDomDocument doc;
83  QDomElement element = doc.createElement("TransferDataSource");
84  element.setAttribute("type", "search");
85  doc.appendChild(element);
86 
87  TransferDataSource *mirrorSearch = KGet::createTransferDataSource(m_source, element, this);
88  if (mirrorSearch) {
89  connect(mirrorSearch, SIGNAL(data(QList<KUrl>)), this, SLOT(slotSearchUrls(QList<KUrl>)));
90  mirrorSearch->start();
91  }
92  }
93 }
94 
95 void TransferMultiSegKio::stop()
96 {
97  kDebug(5001);
98 
99  if ((status() == Stopped) || (status() == Finished)) {
100  return;
101  }
102 
103  if (m_dataSourceFactory)
104  {
105  m_dataSourceFactory->stop();
106  }
107 }
108 
109 bool TransferMultiSegKio::repair(const KUrl &file)
110 {
111  if (!file.isValid() || (m_dest == file))
112  {
113  if (m_dataSourceFactory && (m_dataSourceFactory->verifier()->status() == Verifier::NotVerified))
114  {
115  m_dataSourceFactory->repair();
116  return true;
117  }
118  }
119 
120  return false;
121 }
122 
123 bool TransferMultiSegKio::setDirectory(const KUrl& newDirectory)
124 {
125  KUrl newDest = newDirectory;
126  newDest.addPath(m_dest.fileName());
127  return setNewDestination(newDest);
128 }
129 
130 bool TransferMultiSegKio::setNewDestination(const KUrl &newDestination)
131 {
132  kDebug(5001) << "New destination: " << newDestination;
133  if (newDestination.isValid() && (newDestination != dest()) && m_dataSourceFactory)
134  {
135  m_movingFile = true;
136  stop();
137  m_dataSourceFactory->setNewDestination(newDestination);
138 
139  m_dest = newDestination;
140 
141  if (m_fileModel)
142  {
143  m_fileModel->setDirectory(directory());
144  }
145 
146  setTransferChange(Tc_FileName);
147  return true;
148  }
149  return false;
150 }
151 
152 void TransferMultiSegKio::load(const QDomElement *element)
153 {
154  kDebug(5001);
155 
156  Transfer::load(element);
157  m_dataSourceFactory->load(element);
158 }
159 
160 void TransferMultiSegKio::save(const QDomElement &element)
161 {
162  kDebug(5001);
163  Transfer::save(element);
164  m_dataSourceFactory->save(element);
165 }
166 
167 void TransferMultiSegKio::slotDataSourceFactoryChange(Transfer::ChangesFlags change)
168 {
169  if (change & Tc_FileName) {
170  QList<KUrl> urls = m_dataSourceFactory->mirrors().keys();
171  QString filename = urls.first().fileName();
172  if (filename.isEmpty())
173  return;
174  foreach (const KUrl url, urls) {
175  if (filename != url.fileName())
176  return;
177  }
178  KUrl path = m_dest.directory();
179  path.addPath(filename);
180  setNewDestination(path);
181  }
182  if (change & Tc_Source) {
183  m_source = KUrl();
184  QHash< KUrl, QPair<bool, int> >::const_iterator it = m_dataSourceFactory->mirrors().constBegin();
185  QHash< KUrl, QPair<bool, int> >::const_iterator end = m_dataSourceFactory->mirrors().constEnd();
186  for (; it != end; it++) {
187  if (it.value().first) {
188  m_source = it.key();
189  break;
190  }
191  }
192  }
193  if (change & Tc_Status) {
194  if ((m_dataSourceFactory->status() == Job::Finished) && m_source.protocol() == "ftp") {
195  KIO::StatJob * statJob = KIO::stat(m_source);
196  connect(statJob, SIGNAL(result(KJob*)), this, SLOT(slotStatResult(KJob*)));
197  statJob->start();
198  } else {
199  setStatus(m_dataSourceFactory->status());
200  }
201 
202  if (m_fileModel) {
203  QModelIndex statusIndex = m_fileModel->index(m_dest, FileItem::Status);
204  m_fileModel->setData(statusIndex, status());
205  }
206  }
207  if (change & Tc_TotalSize) {
208  m_totalSize = m_dataSourceFactory->size();
209  if (m_fileModel) {
210  QModelIndex sizeIndex = m_fileModel->index(m_dest, FileItem::Size);
211  m_fileModel->setData(sizeIndex, static_cast<qlonglong>(m_totalSize));
212  }
213  }
214  if (change & Tc_DownloadedSize) {
215  KIO::filesize_t processedSize = m_dataSourceFactory->downloadedSize();
216  //only start the verification search _after_ data has come in, that way only connections
217  //are requested if there is already a successful one
218  if ((processedSize != m_downloadedSize) && !m_verificationSearch && MultiSegKioSettings::useSearchVerification()) {
219  m_verificationSearch = true;
220  QDomDocument doc;
221  QDomElement element = doc.createElement("TransferDataSource");
222  element.setAttribute("type", "checksumsearch");
223  doc.appendChild(element);
224 
225  TransferDataSource *checksumSearch = KGet::createTransferDataSource(m_source, element, this);
226  if (checksumSearch) {
227  connect(checksumSearch, SIGNAL(data(QString,QString)), this, SLOT(slotChecksumFound(QString,QString)));
228  checksumSearch->start();
229  }
230  }
231  m_downloadedSize = m_dataSourceFactory->downloadedSize();
232  }
233  if (change & Tc_Percent) {
234  m_percent = m_dataSourceFactory->percent();
235  }
236  if (change & Tc_DownloadSpeed) {
237  kDebug(5001) << "speed:" << m_downloadSpeed;
238  m_downloadSpeed = m_dataSourceFactory->currentSpeed();
239  }
240 
241  setTransferChange(change, true);
242 }
243 
244 void TransferMultiSegKio::slotVerified(bool isVerified)
245 {
246  if (m_fileModel) {
247  QModelIndex checksumVerified = m_fileModel->index(m_dest, FileItem::ChecksumVerified);
248  m_fileModel->setData(checksumVerified, verifier()->status());
249  }
250 
251  if (!isVerified) {
252  QString text = i18n("The download (%1) could not be verified. Do you want to repair it?", m_dest.fileName());
253 
254  if (!verifier()->partialChunkLength()) {
255  text = i18n("The download (%1) could not be verified. Do you want to redownload it?", m_dest.fileName());
256  }
257  if (KMessageBox::warningYesNo(0,
258  text,
259  i18n("Verification failed.")) == KMessageBox::Yes) {
260  repair();
261  }
262  }
263 }
264 
265 void TransferMultiSegKio::slotStatResult(KJob* kioJob)
266 {
267  KIO::StatJob * statJob = qobject_cast<KIO::StatJob *>(kioJob);
268 
269  if (!statJob->error()) {
270  const KIO::UDSEntry entryResult = statJob->statResult();
271  struct utimbuf time;
272 
273  time.modtime = entryResult.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME);
274  time.actime = QDateTime::currentDateTime().toTime_t();
275  utime(m_dest.toLocalFile().toUtf8().constData(), &time);
276  }
277 
278  setStatus(Job::Finished);
279  setTransferChange(Tc_Status, true);
280 }
281 
282 void TransferMultiSegKio::slotSearchUrls(const QList<KUrl> &urls)
283 {
284  kDebug(5001) << "Found " << urls.size() << " urls.";
285 
286  foreach (const KUrl &url, urls)
287  {
288  m_dataSourceFactory->addMirror(url, MultiSegKioSettings::segments());
289  }
290 }
291 
292 void TransferMultiSegKio::slotChecksumFound(QString type, QString checksum)
293 {
294  m_dataSourceFactory->verifier()->addChecksum(type, checksum);
295 }
296 
297 QHash<KUrl, QPair<bool, int> > TransferMultiSegKio::availableMirrors(const KUrl &file) const
298 {
299  Q_UNUSED(file)
300 
301  return m_dataSourceFactory->mirrors();
302 }
303 
304 
305 void TransferMultiSegKio::setAvailableMirrors(const KUrl &file, const QHash<KUrl, QPair<bool, int> > &mirrors)
306 {
307  Q_UNUSED(file)
308 
309  m_dataSourceFactory->setMirrors(mirrors);
310 
311  m_source = KUrl();
312  QHash< KUrl, QPair<bool, int> >::const_iterator it = mirrors.begin();
313  QHash< KUrl, QPair<bool, int> >::const_iterator end = mirrors.end();
314  for (; it != end; it++) {
315  if (it.value().first) {
316  m_source = it.key();
317  break;
318  }
319  }
320  setTransferChange(Tc_Source, true);
321 }
322 
323 Verifier *TransferMultiSegKio::verifier(const KUrl &file)
324 {
325  Q_UNUSED(file)
326 
327  return m_dataSourceFactory->verifier();
328 }
329 
330 Signature *TransferMultiSegKio::signature(const KUrl &file)
331 {
332  Q_UNUSED(file)
333 
334  return m_dataSourceFactory->signature();
335 }
336 
337 FileModel *TransferMultiSegKio::fileModel()
338 {
339  if (!m_fileModel)
340  {
341  m_fileModel = new FileModel(QList<KUrl>() << m_dest, m_dest.upUrl(), this);
342  connect(m_fileModel, SIGNAL(rename(KUrl,KUrl)), this, SLOT(slotRename(KUrl,KUrl)));
343 
344  QModelIndex statusIndex = m_fileModel->index(m_dest, FileItem::Status);
345  m_fileModel->setData(statusIndex, m_dataSourceFactory->status());
346  QModelIndex sizeIndex = m_fileModel->index(m_dest, FileItem::Size);
347  m_fileModel->setData(sizeIndex, static_cast<qlonglong>(m_dataSourceFactory->size()));
348  QModelIndex checksumVerified = m_fileModel->index(m_dest, FileItem::ChecksumVerified);
349  m_fileModel->setData(checksumVerified, verifier()->status());
350  QModelIndex signatureVerified = m_fileModel->index(m_dest, FileItem::SignatureVerified);
351  m_fileModel->setData(signatureVerified, signature()->status());
352  }
353 
354  return m_fileModel;
355 }
356 
357 void TransferMultiSegKio::slotRename(const KUrl &oldUrl, const KUrl &newUrl)
358 {
359  Q_UNUSED(oldUrl)
360 
361  if (newUrl.isValid() && (newUrl != dest()) && m_dataSourceFactory)
362  {
363  m_movingFile = true;
364  stop();
365  m_dataSourceFactory->setNewDestination(newUrl);
366 
367  m_dest = newUrl;
368 
369  setTransferChange(Tc_FileName);
370  }
371 }
372 
373 void TransferMultiSegKio::slotUpdateCapabilities()
374 {
375  setCapabilities(m_dataSourceFactory->capabilities());
376 }
377 
378 #include "transfermultisegkio.moc"
QModelIndex
Transfer::ChangesFlags
int ChangesFlags
Definition: transfer.h:100
DataSourceFactory::save
void save(const QDomElement &element)
Definition: datasourcefactory.cpp:1117
Transfer::Tc_FileName
Definition: transfer.h:52
Transfer::m_dest
KUrl m_dest
Definition: transfer.h:357
TransferGroup
class TransferGroup:
Definition: transfergroup.h:46
Scheduler
Scheduler class: what handle all the jobs in kget.
Definition: scheduler.h:32
Job::Finished
The job is stopped, but this also indicates that it stopped because an error occurred.
Definition: job.h:47
DataSourceFactory::setMirrors
void setMirrors(const QHash< KUrl, QPair< bool, int > > &mirrors)
Sets the mirrors that should be used/not used for downloading.
Definition: datasourcefactory.cpp:538
QHash::key
const Key key(const T &value) const
Transfer::m_downloadedSize
KIO::filesize_t m_downloadedSize
Definition: transfer.h:361
QDomNode::appendChild
QDomNode appendChild(const QDomNode &newChild)
DataSourceFactory::size
KIO::filesize_t size() const
Definition: datasourcefactory.h:71
Transfer::LogLevel
LogLevel
Definition: transfer.h:81
TransferMultiSegKio::fileModel
FileModel * fileModel()
Definition: transfermultisegkio.cpp:337
DataSourceFactory::percent
ulong percent() const
Definition: datasourcefactory.h:74
TransferDataSource::start
virtual void start()=0
TransferMultiSegKio::repair
bool repair(const KUrl &file=KUrl())
Tries to repair file.
Definition: transfermultisegkio.cpp:109
Verifier::partialChunkLength
KIO::filesize_t partialChunkLength() const
Returns the length of the "best" partialChecksums.
Definition: verifier.cpp:532
DataSourceFactory
This class manages multiple DataSources and saves the received data to the file.
Definition: datasourcefactory.h:38
DataSourceFactory::start
void start()
Definition: datasourcefactory.cpp:193
DataSourceFactory::mirrors
QHash< KUrl, QPair< bool, int > > mirrors() const
Return all mirrors, where bool defines if the mirror is used, while in defines the number of paralell...
Definition: datasourcefactory.cpp:565
transfermultisegkio.h
TransferMultiSegKio::availableMirrors
QHash< KUrl, QPair< bool, int > > availableMirrors(const KUrl &file) const
The mirrors that are available bool if it is used, int how many paralell connections are allowed to t...
Definition: transfermultisegkio.cpp:297
multisegkiosettings.h
TransferDataSource
This Class is an interface for inter-plugins data change.
Definition: transferdatasource.h:26
DataSourceFactory::repair
void repair()
Tries to repair a broken download, via completely redownloading it or only the borken parts...
Definition: datasourcefactory.cpp:889
MultiSegKioSettings::useSearchVerification
static bool useSearchVerification()
Get UseSearchVerification.
Definition: multisegkiosettings.h:87
DataSourceFactory::capabilities
Transfer::Capabilities capabilities() const
The capabilities the DataSourceFactory supports.
Definition: datasourcefactory.h:55
QList::size
int size() const
Verifier::status
VerificationStatus status() const
Definition: verifier.cpp:206
Transfer::m_totalSize
KIO::filesize_t m_totalSize
Definition: transfer.h:360
Transfer::log
const QStringList log() const
Transfer history.
TransferMultiSegKio::TransferMultiSegKio
TransferMultiSegKio(TransferGroup *parent, TransferFactory *factory, Scheduler *scheduler, const KUrl &src, const KUrl &dest, const QDomElement *e=0)
Definition: transfermultisegkio.cpp:34
Transfer::Tc_Status
Definition: transfer.h:53
FileModel
This model represents the files that are being downloaded.
Definition: filemodel.h:101
Transfer::m_downloadSpeed
int m_downloadSpeed
Definition: transfer.h:364
DataSourceFactory::downloadedSize
KIO::filesize_t downloadedSize() const
Definition: datasourcefactory.h:72
Job::Running
Definition: job.h:43
TransferMultiSegKio::start
void start()
Definition: transfermultisegkio.cpp:71
DataSourceFactory::addMirror
void addMirror(const KUrl &url, bool used, int numParalellConnections=1)
Add a mirror that can be used for downloading.
Definition: datasourcefactory.cpp:378
Transfer::load
virtual void load(const QDomElement *element)
Loads the transfer's info from the QDomElement.
Definition: transfer.cpp:244
QHash
TransferMultiSegKio::setDirectory
virtual bool setDirectory(const KUrl &newDirectory)
Move the download to the new destination.
Definition: transfermultisegkio.cpp:123
QDomElement::setAttribute
void setAttribute(const QString &name, const QString &value)
DataSourceFactory::verifier
Verifier * verifier()
Definition: datasourcefactory.cpp:1222
QString::isEmpty
bool isEmpty() const
Transfer::save
virtual void save(const QDomElement &element)
Saves this transfer to the given QDomNode.
Definition: transfer.cpp:230
MultiSegKioSettings::useSearchEngines
static bool useSearchEngines()
Get UseSearchEngines.
Definition: multisegkiosettings.h:68
QHash::begin
iterator begin()
DataSourceFactory::load
void load(const QDomElement *e)
Definition: datasourcefactory.cpp:952
FileModel::setDirectory
void setDirectory(const KUrl &newDirectory)
Set the url to the directory the files are stored in, the filemodel stores its entries as relative pa...
Definition: filemodel.cpp:538
QList::first
T & first()
QString
QList< KUrl >
signature.h
TransferMultiSegKio::setAvailableMirrors
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: transfermultisegkio.cpp:305
verifier.h
QPair
MultiSegKioSettings::segments
static int segments()
Get Segments.
Definition: multisegkiosettings.h:30
Transfer::capabilitiesChanged
void capabilitiesChanged()
Emitted when the capabilities of the Transfer change.
QHash::value
const T value(const Key &key) const
transferdatasource.h
QDomDocument
TransferMultiSegKio::save
void save(const QDomElement &element)
Definition: transfermultisegkio.cpp:160
Transfer::directory
virtual KUrl directory() const
Definition: transfer.h:159
Transfer::Tc_DownloadSpeed
Definition: transfer.h:56
Transfer::setTransferChange
virtual void setTransferChange(ChangesFlags change, bool postEvent=false)
Makes the TransferHandler associated with this transfer know that a change in this transfer has occur...
Definition: transfer.cpp:338
QDateTime::toTime_t
uint toTime_t() const
FileItem::ChecksumVerified
Definition: filemodel.h:48
Job::Stopped
The job is being executed.
Definition: job.h:44
Transfer::init
virtual void init()
This function is called after the creation of a Transfer In transfer plugins you can put here whateve...
Definition: transfer.cpp:95
QDateTime::currentDateTime
QDateTime currentDateTime()
Verifier
Definition: verifier.h:68
KGet::createTransferDataSource
static TransferDataSource * createTransferDataSource(const KUrl &src, const QDomElement &type=QDomElement(), QObject *parent=0)
Scans for all the available plugins and creates the proper transfer DataSource object for transfers C...
Definition: kget.cpp:931
DataSourceFactory::currentSpeed
ulong currentSpeed() const
Definition: datasourcefactory.h:73
Job::status
Status status() const
Definition: job.h:93
Transfer::dest
const KUrl & dest() const
Definition: transfer.h:149
TransferMultiSegKio::setNewDestination
bool setNewDestination(const KUrl &newDestination)
Definition: transfermultisegkio.cpp:130
FileModel::setData
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Definition: filemodel.cpp:390
DataSourceFactory::setNewDestination
bool setNewDestination(const KUrl &newDest)
Definition: datasourcefactory.cpp:823
FileItem::Status
Definition: filemodel.h:46
kget.h
Transfer::setStatus
void setStatus(Job::Status jobStatus, const QString &text=QString(), const QPixmap &pix=QPixmap())
Sets the Job status to jobStatus, the status text to text and the status pixmap to pix...
Definition: transfer.cpp:292
Transfer::Tc_TotalSize
Definition: transfer.h:54
TransferMultiSegKio::stop
void stop()
Definition: transfermultisegkio.cpp:95
FileItem::SignatureVerified
Definition: filemodel.h:49
Signature
Class to verify signatures.
Definition: signature.h:38
Transfer::Tc_Percent
Definition: transfer.h:55
Transfer::Tc_DownloadedSize
Definition: transfer.h:63
Transfer::m_percent
int m_percent
Definition: transfer.h:363
TransferMultiSegKio::signature
virtual Signature * signature(const KUrl &file=KUrl())
Definition: transfermultisegkio.cpp:330
Transfer::DeleteFiles
Definition: transfer.h:97
QHash::end
iterator end()
QDomDocument::createElement
QDomElement createElement(const QString &tagName)
FileItem::Size
Definition: filemodel.h:47
TransferMultiSegKio::load
void load(const QDomElement *e)
Definition: transfermultisegkio.cpp:152
Verifier::addChecksum
void addChecksum(const QString &type, const QString &checksum, int verified=0)
Add a checksum that is later used in the verification process.
Definition: verifier.cpp:514
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
TransferFactory
TransferFactory.
Definition: transferfactory.h:52
Transfer::m_source
KUrl m_source
Definition: transfer.h:356
Transfer::setCapabilities
void setCapabilities(Capabilities capabilities)
Sets the capabilities and automatically emits capabilitiesChanged.
Definition: transfer.cpp:68
DataSourceFactory::deinit
void deinit()
Deletes the created (downloadInitialized() is true) file if the download was not finished Does not de...
Definition: datasourcefactory.cpp:112
QDomElement
TransferMultiSegKio::verifier
virtual Verifier * verifier(const KUrl &file=KUrl())
Definition: transfermultisegkio.cpp:323
Transfer::setLog
void setLog(const QString &message, Transfer::LogLevel level=Log_Info)
Set Transfer history.
Definition: transfer.cpp:201
DataSourceFactory::status
Job::Status status() const
Definition: datasourcefactory.h:152
Verifier::NotVerified
Definition: verifier.h:79
KJob
DataSourceFactory::stop
void stop()
Definition: datasourcefactory.cpp:327
DataSourceFactory::signature
Signature * signature()
Definition: datasourcefactory.cpp:1231
FileModel::index
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
Definition: filemodel.cpp:436
filemodel.h
Transfer::Tc_Source
Definition: transfer.h:51
Transfer
Definition: transfer.h:36
TransferMultiSegKio::slotChecksumFound
void slotChecksumFound(QString type, QString checksum)
Definition: transfermultisegkio.cpp:292
TransferMultiSegKio::deinit
virtual void deinit(Transfer::DeleteOptions options)
Definition: transfermultisegkio.cpp:63
TransferMultiSegKio::init
virtual void init()
This function is called after the creation of a Transfer In transfer plugins you can put here whateve...
Definition: transfermultisegkio.cpp:46
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