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

kget

  • sources
  • kde-4.12
  • kdenetwork
  • kget
  • core
transferhistorystore.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2007 by Lukas Appelhans <l.appelhans@gmx.de>
4  Copyright (C) 2008 by Javier Goday <jgoday@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 #include "core/transferhistorystore.h"
12 #include "core/transferhistorystore_xml_p.h"
13 #include "core/transfer.h"
14 #include "settings.h"
15 
16 #include <QDateTime>
17 #include <QDomDocument>
18 #include <QFile>
19 #include <QList>
20 #include <QThread>
21 #include <QTimer>
22 
23 #ifdef HAVE_SQLITE
24  #include "core/transferhistorystore_sqlite_p.h"
25  #include <QSqlDatabase>
26  #include <QSqlError>
27  #include <QSqlQuery>
28  #include <QSqlRecord>
29 #endif
30 
31 #ifdef HAVE_NEPOMUK
32  #include <core/transferhistorystore_nepomuk_p.h>
33  #include <historyitem.h>
34 
35  #include <Soprano/Vocabulary/RDF>
36  #include <Nepomuk2/Variant>
37  #include <Nepomuk2/Query/QueryServiceClient>
38  #include <Nepomuk2/Query/ResourceTypeTerm>
39  #include <Nepomuk2/Query/Result>
40 #endif
41 
42 #include <KDebug>
43 #include <kio/global.h>
44 #include <KLocale>
45 #include <KMessageBox>
46 #include <KStandardDirs>
47 
48 TransferHistoryItem::TransferHistoryItem() : QObject()
49 {}
50 
51 TransferHistoryItem::TransferHistoryItem(const Transfer &transfer) : QObject()
52 {
53  setDest(transfer.dest().pathOrUrl());
54  setSource(transfer.source().url());
55  setSize(transfer.totalSize());
56  setDateTime(QDateTime::currentDateTime());
57 
58  setState(transfer.status());
59 }
60 
61 TransferHistoryItem::TransferHistoryItem(const TransferHistoryItem &item) : QObject()
62 {
63  setDest(item.dest());
64  setSource(item.source());
65  setState(item.state());
66  setSize(item.size());
67  setDateTime(item.dateTime());
68 }
69 
70 void TransferHistoryItem::setDest(const QString &dest)
71 {
72  m_dest = dest;
73 }
74 
75 void TransferHistoryItem::setSource(const QString &source)
76 {
77  m_source = source;
78 }
79 
80 void TransferHistoryItem::setState(int state)
81 {
82  m_state = state;
83 }
84 
85 void TransferHistoryItem::setSize(int size)
86 {
87  m_size = size;
88 }
89 
90 void TransferHistoryItem::setDateTime(const QDateTime &dateTime)
91 {
92  m_dateTime = dateTime;
93 }
94 
95 QString TransferHistoryItem::dest() const
96 {
97  return m_dest;
98 }
99 
100 QString TransferHistoryItem::source() const
101 {
102  return m_source;
103 }
104 
105 int TransferHistoryItem::state() const
106 {
107  return m_state;
108 }
109 
110 int TransferHistoryItem::size() const
111 {
112  return m_size;
113 }
114 
115 QDateTime TransferHistoryItem::dateTime() const
116 {
117  return m_dateTime;
118 }
119 
120 TransferHistoryItem& TransferHistoryItem::operator=(const TransferHistoryItem &item)
121 {
122  setDest(item.dest());
123  setSource(item.source());
124  setState(item.state());
125  setSize(item.size());
126  setDateTime(item.dateTime());
127 
128  return *this;
129 }
130 
131 bool TransferHistoryItem::operator==(const TransferHistoryItem& item) const
132 {
133  return dest() == item.dest() && source() == item.source();
134 }
135 
136 TransferHistoryStore::TransferHistoryStore() : QObject(),
137  m_items()
138 {
139 }
140 
141 TransferHistoryStore::~TransferHistoryStore()
142 {
143 }
144 
145 QList <TransferHistoryItem> TransferHistoryStore::items() const
146 {
147  return m_items;
148 }
149 
150 TransferHistoryStore *TransferHistoryStore::getStore()
151 {
152  switch(Settings::historyBackend())
153  {
154  case TransferHistoryStore::SQLite:
155 #ifdef HAVE_SQLITE
156  return new SQLiteStore(KStandardDirs::locateLocal("appdata", "transferhistory.db"));
157  break;
158 #endif
159  case TransferHistoryStore::Nepomuk:
160 #ifdef HAVE_NEPOMUK
161  return new NepomukStore(QString());
162  break;
163 #endif
164  case TransferHistoryStore::Xml:
165  default:
166  return new XmlStore(KStandardDirs::locateLocal("appdata", "transferhistory.kgt"));
167  }
168 }
169 
170 XmlStore::SaveThread::SaveThread(QObject *parent, const QString &url, const QList<TransferHistoryItem> &list) : QThread(parent),
171  m_url(url),
172  m_items(list),
173  m_item()
174 {
175 }
176 
177 XmlStore::SaveThread::SaveThread(QObject *parent, const QString &url, const TransferHistoryItem &item) : QThread(parent),
178  m_url(url),
179  m_items(),
180  m_item(item)
181 {
182 }
183 
184 void XmlStore::SaveThread::run()
185 {
186  QFile file(m_url);
187  QDomDocument *doc;
188  QDomElement root;
189 
190  if (!file.exists())
191  {
192  doc = new QDomDocument("Transfers");
193  root = doc->createElement("Transfers");
194  doc->appendChild(root);
195  }
196  else
197  {
198  doc = new QDomDocument();
199  doc->setContent(&file);
200  file.close();
201  root = doc->documentElement();
202  doc->appendChild(root);
203  }
204 
205  QDomElement e = doc->createElement("Transfer");
206  root.appendChild(e);
207 
208  e.setAttribute("Source", m_item.source());
209  e.setAttribute("Dest", m_item.dest());
210  e.setAttribute("Time", QDateTime::currentDateTime().toTime_t());
211  e.setAttribute("Size", QString::number(m_item.size()));
212  e.setAttribute("State", QString::number(m_item.state()));
213 
214  if (file.open(QFile::WriteOnly | QFile::Truncate)) {
215  QTextStream stream( &file );
216  doc->save( stream, 0 );
217  file.close();
218  }
219  delete doc;
220 }
221 
222 XmlStore::DeleteThread::DeleteThread(QObject *parent, const QString &url, const TransferHistoryItem &item) : QThread(parent),
223  m_url(url),
224  m_item(item),
225  m_items()
226 {
227 }
228 
229 void XmlStore::DeleteThread::run()
230 {
231  QDomDocument doc("tempHistory");
232  QFile file(m_url);
233 
234  QString error;
235  int line;
236  int column;
237 
238  if (!doc.setContent(&file, &error, &line, &column))
239  {
240  kDebug(5001) << "Error1" << error << line << column;
241  return;
242  }
243  file.close();
244 
245  QDomElement root = doc.documentElement();
246 
247  QDomNodeList list = root.elementsByTagName("Transfer");
248 
249  int nItems = list.length();
250 
251  for (int i = 0 ; i < nItems ; i++) {
252  QDomElement element = list.item(i).toElement();
253 
254  if(QString::compare(element.attribute("Source"), m_item.source()) == 0) {
255  root.removeChild(element);
256  }
257  else {
258  TransferHistoryItem item;
259  item.setDest(element.attribute("Dest"));
260  item.setSource(element.attribute("Source"));
261  item.setSize(element.attribute("Size").toInt());
262  item.setDateTime(QDateTime::fromTime_t(element.attribute("Time").toUInt()));
263  item.setState(element.attribute("State").toInt());
264  m_items << item;
265  }
266  }
267 
268  if (file.open(QFile::WriteOnly | QFile::Truncate)) {
269  QTextStream stream( &file );
270  doc.save(stream, 0);
271  file.close();
272  doc.clear();
273  }
274 }
275 
276 XmlStore::LoadThread::LoadThread(QObject *parent, const QString &url) : QThread(parent),
277  m_url(url)
278 {
279 }
280 
281 void XmlStore::LoadThread::run()
282 {
283  qRegisterMetaType<TransferHistoryItem>("TransferHistoryItem");
284  QDomDocument doc("tempHistory");
285  QFile file(m_url);
286 
287  QString error;
288  int line;
289  int column;
290  int total;
291 
292  if (!doc.setContent(&file, &error, &line, &column))
293  {
294  kDebug(5001) << "Error1" << error << line << column;
295  file.close();
296  return;
297  }
298 
299  QDomElement root = doc.documentElement();
300  total = root.childNodes().size();
301 
302  QDomNodeList list = root.elementsByTagName("Transfer");
303 
304  int nItems = list.length();
305 
306  for (int i = 0 ; i < nItems ; i++)
307  {
308  QDomElement dom = list.item(i).toElement();
309 
310  TransferHistoryItem item;
311  item.setDest(dom.attribute("Dest"));
312  item.setSource(dom.attribute("Source"));
313  item.setSize(dom.attribute("Size").toInt());
314  item.setDateTime(QDateTime::fromTime_t(dom.attribute("Time").toUInt()));
315  item.setState(dom.attribute("State").toInt());
316 
317  emit elementLoaded(i, total, item);
318  }
319  doc.clear();
320  file.close();
321 }
322 
323 XmlStore::XmlStore(const QString &url) : TransferHistoryStore(),
324  m_storeUrl(url),
325  m_loadThread(0),
326  m_saveThread(0),
327  m_deleteThread(0)
328 {
329 }
330 
331 XmlStore::~XmlStore()
332 {
333  if(m_loadThread && m_loadThread->isRunning()) {
334  m_loadThread->terminate();
335  }
336 
337  if(m_saveThread && m_saveThread->isRunning()) {
338  m_saveThread->terminate();
339  }
340 
341  if(m_deleteThread && m_deleteThread->isRunning()) {
342  m_deleteThread->terminate();
343  }
344 
345  delete m_loadThread;
346  delete m_saveThread;
347  delete m_deleteThread;
348 }
349 
350 void XmlStore::load()
351 {
352  m_items.clear();
353  // TODO: only load if necessary
354  m_loadThread = new XmlStore::LoadThread(this, m_storeUrl);
355 
356  connect(m_loadThread, SIGNAL(finished()), SIGNAL(loadFinished()));
357  connect(m_loadThread, SIGNAL(elementLoaded(int,int,TransferHistoryItem)),
358  SIGNAL(elementLoaded(int,int,TransferHistoryItem)));
359  connect(m_loadThread, SIGNAL(elementLoaded(int,int,TransferHistoryItem)),
360  SLOT(slotLoadElement(int,int,TransferHistoryItem)));
361  m_loadThread->start();
362 }
363 
364 void XmlStore::clear()
365 {
366  QFile::remove(m_storeUrl);
367 }
368 
369 void XmlStore::saveItem(const TransferHistoryItem &item)
370 {
371  m_saveThread = new XmlStore::SaveThread(this, m_storeUrl, item);
372 
373  connect(m_saveThread, SIGNAL(finished()), SIGNAL(saveFinished()));
374  connect(m_saveThread, SIGNAL(elementLoaded(int,int,TransferHistoryItem)),
375  SIGNAL(elementLoaded(int,int,TransferHistoryItem)));
376  m_saveThread->start();
377 }
378 
379 void XmlStore::deleteItem(const TransferHistoryItem &item)
380 {
381  Q_UNUSED(item)
382 
383  m_deleteThread = new XmlStore::DeleteThread(this, m_storeUrl, item);
384 
385  connect(m_deleteThread, SIGNAL(finished()), SLOT(slotDeleteElement()));
386 
387  m_deleteThread->start();
388 }
389 
390 void XmlStore::slotLoadElement(int number, int total, const TransferHistoryItem &item)
391 {
392  Q_UNUSED(number)
393  Q_UNUSED(total)
394  m_items.append(item);
395 }
396 
397 void XmlStore::slotDeleteElement()
398 {
399  m_items.clear();
400  m_items << m_deleteThread->items();
401 
402  emit loadFinished();
403 }
404 
405 #ifdef HAVE_SQLITE
406 SQLiteStore::SQLiteStore(const QString &database) : TransferHistoryStore(),
407  m_dbName(database),
408  m_sql()
409 {
410 }
411 
412 SQLiteStore::~SQLiteStore()
413 {
414  if (m_sql.isOpen()) {
415  m_sql.close();
416  }
417 }
418 
419 void SQLiteStore::load()
420 {
421  m_items.clear();
422  if (sql().open()) {
423  if (!sql().tables().contains("transfer_history_item")) {
424  createTables();
425  }
426 
427  QSqlQuery query = sql().exec("SELECT * FROM transfer_history_item");
428 
429  if (query.lastError().isValid()) {
430  kDebug(5001) << query.lastError().text();
431  }
432  else {
433  QSqlRecord rec = query.record();
434 
435  while (query.next()) {
436  TransferHistoryItem item;
437  item.setDest(query.value(rec.indexOf("dest")).toString());
438  item.setSource(query.value(rec.indexOf("source")).toString());
439  item.setState(query.value(rec.indexOf("state")).toInt());
440  item.setDateTime(QDateTime::fromTime_t(query.value(rec.indexOf("time")).toUInt()));
441  item.setSize(query.value(rec.indexOf("size")).toInt());
442 
443  m_items << item;
444  emit elementLoaded(query.at(), query.size(), item);
445  }
446  }
447  }
448 
449  sql().close();
450 
451  emit loadFinished();
452 }
453 
454 void SQLiteStore::clear()
455 {
456  QFile::remove(m_dbName);
457 }
458 
459 void SQLiteStore::saveItem(const TransferHistoryItem &item)
460 {
461  saveItems(QList<TransferHistoryItem>() << item);
462 }
463 
464 void SQLiteStore::saveItems(const QList<TransferHistoryItem> &items)
465 {
466  if (sql().open()) {
467  if (!sql().tables().contains("transfer_history_item")) {
468  createTables();
469  }
470 
471  if (!sql().transaction()) {
472  kWarning(5001) << "Could not establish a transaction, might be slow.";
473  }
474 
475  foreach (const TransferHistoryItem &item, items) {
476  QSqlQuery query = sql().exec("insert into transfer_history_item(source, dest, size, time, state)"
477  "values ('"+item.source()+"', '"+item.dest()+"', "
478  + QString::number(item.size()) + ", "
479  + QString::number(item.dateTime().toTime_t()) + ", '"
480  + QString::number(item.state())+"')");
481 
482  if (query.lastError().isValid()) {
483  kDebug(5001) << query.lastError().text();
484  }
485  m_items << item;
486  }
487 
488  if (!sql().commit()) {
489  kWarning(5001) << "Could not commit changes.";
490  }
491  }
492  sql().close();
493 
494  emit saveFinished();
495 }
496 
497 void SQLiteStore::deleteItem(const TransferHistoryItem &item)
498 {
499  if (sql().open()) {
500  if (!sql().tables().contains("transfer_history_item")) {
501  createTables();
502  }
503 
504  QSqlQuery query = sql().exec("delete from transfer_history_item where "
505  " source = '" + item.source() + "';");
506 
507  if (query.lastError().isValid()) {
508  kDebug(5001) << query.lastError().text();
509  }
510 
511  sql().commit();
512  m_items.removeAll(item);
513  }
514  sql().close();
515 
516  emit deleteFinished();
517 }
518 
519 QSqlDatabase SQLiteStore::sql()
520 {
521  if (!m_sql.isValid()) {
522  m_sql = QSqlDatabase::addDatabase("QSQLITE");
523  m_sql.setDatabaseName(m_dbName);
524  }
525 
526  return m_sql;
527 }
528 
529 void SQLiteStore::createTables()
530 {
531  QSqlQuery query = sql().exec("CREATE TABLE transfer_history_item(dest VARCHAR NOT NULL, "
532  "source VARCHAR NOT NULL, size int NOT NULL, time int not null, "
533  "state int, PRIMARY KEY(dest, source));");
534 
535  if (query.lastError().isValid()) {
536  kDebug(5001) << query.lastError().text();
537  }
538 }
539 #endif
540 
541 #ifdef HAVE_NEPOMUK
542 NepomukStore::NepomukStore(const QString &database)
543  : TransferHistoryStore()
544 {
545  Q_UNUSED(database)
546 }
547 
548 NepomukStore::~NepomukStore()
549 {
550 }
551 
552 void NepomukStore::load()
553 {
554  Nepomuk2::Query::QueryServiceClient * queryService = new Nepomuk2::Query::QueryServiceClient(this);
555  Nepomuk2::Query::ResourceTypeTerm historyTypeTerm((Nepomuk2::Types::Class(Nepomuk2::HistoryItem::resourceTypeUri())));
556  Nepomuk2::Query::Query historyQuery(historyTypeTerm);
557 
558  connect(queryService, SIGNAL(newEntries(const QList<Nepomuk2::Query::Result>&)), this, SLOT(loadResult(const QList<Nepomuk2::Query::Result>&)));
559  connect(queryService, SIGNAL(finishedListing()), this, SIGNAL(loadFinished()));
560  queryService->query(historyQuery);
561 }
562 
563 void NepomukStore::loadResult(const QList<Nepomuk2::Query::Result>& entries)
564 {
565  int newItemsCount = m_items.count() + entries.count();
566 
567  for (int i = 0; i != entries.count(); i++) {
568  Nepomuk2::HistoryItem current = entries.at(i).resource();
569  TransferHistoryItem item;
570 
571  item.setDest(current.destination());
572  item.setSource(current.source());
573  item.setState(current.state());
574  item.setDateTime(current.dateTime());
575  item.setSize(current.size());
576  m_items << item;
577 
578  emit elementLoaded(m_items.count(), newItemsCount, item);
579  }
580 }
581 
582 void NepomukStore::clear()
583 {
584  for(int i = 0; i < m_items.count(); i++) {
585  deleteItem(m_items.at(i));
586  }
587 
588  m_items.clear();
589 }
590 
591 void NepomukStore::saveItem(const TransferHistoryItem &item)
592 {
593  Nepomuk2::HistoryItem historyItem(item.source());
594 
595  historyItem.addType(Nepomuk2::HistoryItem::resourceTypeUri());
596  historyItem.setDestination(item.dest());
597  historyItem.setSource(item.source());
598  historyItem.setState(item.state());
599  historyItem.setSize(item.size());
600  historyItem.setDateTime(item.dateTime());
601 }
602 
603 void NepomukStore::deleteItem(const TransferHistoryItem &item)
604 {
605  Nepomuk2::HistoryItem historyItem(item.source());
606  historyItem.remove();
607 }
608 #endif
609 
610 #include "transferhistorystore.moc"
611 #include "transferhistorystore_xml_p.moc"
612 #ifdef HAVE_SQLITE
613  #include "transferhistorystore_sqlite_p.moc"
614 #endif
615 #ifdef HAVE_NEPOMUK
616  #include "transferhistorystore_nepomuk_p.moc"
617 #endif
Transfer::source
const KUrl & source() const
Definition: transfer.h:148
NepomukStore
Definition: transferhistorystore_nepomuk_p.h:26
NepomukStore::clear
void clear()
TransferHistoryStore::m_items
QList< TransferHistoryItem > m_items
Definition: transferhistorystore.h:96
NepomukStore::deleteItem
void deleteItem(const TransferHistoryItem &item)
NepomukStore::~NepomukStore
~NepomukStore()
TransferHistoryStore::SQLite
Definition: transferhistorystore.h:59
XmlStore::~XmlStore
~XmlStore()
Definition: transferhistorystore.cpp:331
Transfer::totalSize
KIO::filesize_t totalSize() const
Definition: transfer.h:169
NepomukStore::saveItem
void saveItem(const TransferHistoryItem &item)
XmlStore::DeleteThread::items
QList< TransferHistoryItem > items() const
Definition: transferhistorystore_xml_p.h:92
TransferHistoryItem::setState
void setState(int state)
Definition: transferhistorystore.cpp:80
TransferHistoryItem::setSize
void setSize(int size)
Definition: transferhistorystore.cpp:85
XmlStore::DeleteThread::run
void run()
Definition: transferhistorystore.cpp:229
XmlStore::SaveThread
Definition: transferhistorystore_xml_p.h:67
TransferHistoryStore::deleteFinished
void deleteFinished()
TransferHistoryItem
Definition: transferhistorystore.h:23
transferhistorystore.h
XmlStore::LoadThread::LoadThread
LoadThread(QObject *parent, const QString &url)
Definition: transferhistorystore.cpp:276
TransferHistoryItem::state
int state() const
Definition: transferhistorystore.cpp:105
transferhistorystore_sqlite_p.h
NepomukStore::NepomukStore
NepomukStore(const QString &database)
TransferHistoryItem::setDest
void setDest(const QString &dest)
Definition: transferhistorystore.cpp:70
XmlStore::SaveThread::run
void run()
Definition: transferhistorystore.cpp:184
TransferHistoryItem::dateTime
QDateTime dateTime() const
Definition: transferhistorystore.cpp:115
TransferHistoryStore::~TransferHistoryStore
~TransferHistoryStore()
Definition: transferhistorystore.cpp:141
XmlStore::XmlStore
XmlStore(const QString &url)
Definition: transferhistorystore.cpp:323
TransferHistoryStore
Definition: transferhistorystore.h:53
XmlStore
Definition: transferhistorystore_xml_p.h:20
QObject
TransferHistoryStore::Xml
Definition: transferhistorystore.h:58
TransferHistoryStore::saveFinished
void saveFinished()
transferhistorystore_xml_p.h
TransferHistoryItem::dest
QString dest() const
Definition: transferhistorystore.cpp:95
TransferHistoryItem::operator==
bool operator==(const TransferHistoryItem &) const
Definition: transferhistorystore.cpp:131
XmlStore::load
void load()
Definition: transferhistorystore.cpp:350
XmlStore::DeleteThread
Definition: transferhistorystore_xml_p.h:85
SQLiteStore::clear
void clear()
SQLiteStore::~SQLiteStore
~SQLiteStore()
NepomukStore::load
void load()
NepomukStore::loadResult
void loadResult(const QList< Nepomuk2::Query::Result > &entries)
TransferHistoryItem::setSource
void setSource(const QString &source)
Definition: transferhistorystore.cpp:75
XmlStore::DeleteThread::DeleteThread
DeleteThread(QObject *parent, const QString &url, const TransferHistoryItem &item)
Definition: transferhistorystore.cpp:222
transferhistorystore_nepomuk_p.h
TransferHistoryStore::loadFinished
void loadFinished()
SQLiteStore
Definition: transferhistorystore_sqlite_p.h:20
TransferHistoryStore::Nepomuk
Definition: transferhistorystore.h:60
XmlStore::LoadThread::run
void run()
Definition: transferhistorystore.cpp:281
settings.h
Job::status
Status status() const
Definition: job.h:93
TransferHistoryStore::items
QList< TransferHistoryItem > items() const
Definition: transferhistorystore.cpp:145
SQLiteStore::deleteItem
void deleteItem(const TransferHistoryItem &item)
TransferHistoryItem::TransferHistoryItem
TransferHistoryItem()
Definition: transferhistorystore.cpp:48
Transfer::dest
const KUrl & dest() const
Definition: transfer.h:149
XmlStore::SaveThread::SaveThread
SaveThread(QObject *parent, const QString &url, const QList< TransferHistoryItem > &list)
Definition: transferhistorystore.cpp:170
XmlStore::saveItem
void saveItem(const TransferHistoryItem &item)
Definition: transferhistorystore.cpp:369
Settings::historyBackend
static int historyBackend()
Get HistoryBackend.
Definition: settings.h:506
SQLiteStore::saveItems
void saveItems(const QList< TransferHistoryItem > &items)
transfer.h
TransferHistoryStore::TransferHistoryStore
TransferHistoryStore()
Definition: transferhistorystore.cpp:136
SQLiteStore::SQLiteStore
SQLiteStore(const QString &database)
TransferHistoryItem::setDateTime
void setDateTime(const QDateTime &time)
Definition: transferhistorystore.cpp:90
XmlStore::clear
void clear()
Definition: transferhistorystore.cpp:364
SQLiteStore::saveItem
void saveItem(const TransferHistoryItem &item)
TransferHistoryStore::getStore
static TransferHistoryStore * getStore()
Definition: transferhistorystore.cpp:150
TransferHistoryStore::elementLoaded
void elementLoaded(int number, int total, const TransferHistoryItem &item)
TransferHistoryItem::operator=
TransferHistoryItem & operator=(const TransferHistoryItem &)
Definition: transferhistorystore.cpp:120
QThread
TransferHistoryItem::size
int size() const
Definition: transferhistorystore.cpp:110
SQLiteStore::load
void load()
XmlStore::LoadThread
Definition: transferhistorystore_xml_p.h:52
XmlStore::slotLoadElement
void slotLoadElement(int number, int total, const TransferHistoryItem &item)
Definition: transferhistorystore.cpp:390
XmlStore::deleteItem
void deleteItem(const TransferHistoryItem &item)
Definition: transferhistorystore.cpp:379
Transfer
Definition: transfer.h:36
TransferHistoryItem::source
QString source() const
Definition: transferhistorystore.cpp:100
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:18 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