• 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
  • transfer-plugins
  • bittorrent
bttransferfactory.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2007 - 2010 Lukas Appelhans <l.appelhans@gmx.de>
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 */
10 
11 #include "bttransferfactory.h"
12 
13 // header inclusion order is crucial because of signal emit clashes
14 #include "bttransfer.h"
15 #include "btdatasource.h"
16 #include "bttransferhandler.h"
17 #include "btdetailswidget.h"
18 #include "advanceddetails/btadvanceddetailswidget.h"
19 
20 #include <kdebug.h>
21 #include <util/functions.h>
22 #include <version.h>
23 #include <torrent/job.h>
24 
25 KGET_EXPORT_PLUGIN(BTTransferFactory)
26 
27 BTTransferFactory::BTTransferFactory(QObject *parent, const QVariantList &args)
28  : TransferFactory(parent, args)
29 {
30 #if LIBKTORRENT_VERSION >= 0x010100
31  if (!bt::InitLibKTorrent())
32  {
33  kError(5001) << "Failed to initialize libktorrent";
34  KGet::showNotification(0, "error", i18n("Cannot initialize libktorrent. Torrent support might not work."));
35  }
36 #endif
37 }
38 
39 BTTransferFactory::~BTTransferFactory()
40 {
41 }
42 
43 Transfer * BTTransferFactory::createTransfer(const KUrl &srcUrl, const KUrl &destUrl,
44  TransferGroup * parent,
45  Scheduler * scheduler,
46  const QDomElement * e )
47 {
48  kDebug(5001) << "BTTransferFactory::createTransfer";
49 
50  if (isSupported(srcUrl))
51  {
52  return new BTTransfer(parent, this, scheduler, srcUrl, destUrl, e);
53  }
54  return 0;
55 }
56 
57 TransferHandler * BTTransferFactory::createTransferHandler(Transfer * transfer, Scheduler * scheduler)
58 {
59  BTTransfer * bttransfer = qobject_cast<BTTransfer *>(transfer);
60 
61  if (!bttransfer)
62  {
63  kError(5001) << "WARNING! passing a non-BTTransfer pointer!!";
64  return 0;
65  }
66 
67  return new BTTransferHandler(bttransfer, scheduler);
68 }
69 
70 QWidget * BTTransferFactory::createDetailsWidget( TransferHandler * transfer )
71 {
72  BTTransferHandler * bttransfer = static_cast<BTTransferHandler *>(transfer);
73 
74  return new BTDetailsWidget(bttransfer);
75 }
76 
77 const QList<KAction *> BTTransferFactory::actions(TransferHandler *handler)
78 {
79  BTTransferHandler * bttransfer = static_cast<BTTransferHandler *>(handler);
80 
81  QList<KAction*> actions;
82  if (bttransfer && bttransfer->torrentControl())
83  {
84  KAction *openAdvancedDetailsAction = new KAction(KIcon("document-open"), i18n("&Advanced Details"), this);
85 
86  connect(openAdvancedDetailsAction, SIGNAL(triggered()), bttransfer, SLOT(createAdvancedDetails()));
87 
88  actions.append(openAdvancedDetailsAction);
89 
90  KAction *openScanDlg = new KAction(KIcon("document-open"), i18n("&Scan Files"), this);
91 
92  connect(openScanDlg, SIGNAL(triggered()), bttransfer, SLOT(createScanDlg()));
93 
94  actions.append(openScanDlg);
95  }
96 
97  if (bttransfer)
98  return actions;
99  else
100  return QList<KAction *>();
101 }
102 
103 TransferDataSource * BTTransferFactory::createTransferDataSource(const KUrl &srcUrl, const QDomElement &type, QObject *parent)
104 {
105  Q_UNUSED(srcUrl)
106  Q_UNUSED(type)
107  Q_UNUSED(parent)
108  /*if (srcUrl.fileName().endsWith(".torrent"))
109  return new BTDataSource();*/
110  return 0;
111 }
112 
113 bool BTTransferFactory::isSupported(const KUrl &url) const
114 {
115  return url.url().endsWith(QLatin1String(".torrent"));
116 }
bttransferfactory.h
TransferHandler
Class TransferHandler:
Definition: transferhandler.h:48
TransferGroup
class TransferGroup:
Definition: transfergroup.h:46
Scheduler
Scheduler class: what handle all the jobs in kget.
Definition: scheduler.h:32
BTTransferFactory
Definition: bttransferfactory.h:15
bttransferhandler.h
QWidget
TransferDataSource
This Class is an interface for inter-plugins data change.
Definition: transferdatasource.h:26
BTTransferHandler::torrentControl
bt::TorrentControl * torrentControl() const
Definition: bttransferhandler.h:44
QObject
BTTransferFactory::actions
const QList< KAction * > actions(TransferHandler *handler=0)
Definition: bttransferfactory.cpp:77
bttransfer.h
BTTransferFactory::createTransferHandler
TransferHandler * createTransferHandler(Transfer *transfer, Scheduler *scheduler)
Definition: bttransferfactory.cpp:57
BTTransfer
Definition: bttransfer.h:30
BTTransferFactory::createTransferDataSource
TransferDataSource * createTransferDataSource(const KUrl &srcUrl, const QDomElement &type, QObject *parent)
Returns a Data Source.
Definition: bttransferfactory.cpp:103
BTTransferFactory::createDetailsWidget
QWidget * createDetailsWidget(TransferHandler *transfer)
Definition: bttransferfactory.cpp:70
btdatasource.h
BTDetailsWidget
Definition: btdetailswidget.h:25
BTTransferFactory::createTransfer
Transfer * createTransfer(const KUrl &srcUrl, const KUrl &destUrl, TransferGroup *parent, Scheduler *scheduler, const QDomElement *e=0)
Definition: bttransferfactory.cpp:43
BTTransferFactory::isSupported
bool isSupported(const KUrl &url) const
Definition: bttransferfactory.cpp:113
btadvanceddetailswidget.h
BTTransferFactory::~BTTransferFactory
~BTTransferFactory()
Definition: bttransferfactory.cpp:39
KGet::showNotification
static KNotification * showNotification(QWidget *parent, const QString &eventType, const QString &text, const QString &icon=QString("dialog-error"), const QString &title=i18n("KGet"), const KNotification::NotificationFlags &flags=KNotification::CloseOnTimeout)
Shows a knotification.
Definition: kget.cpp:1281
KGET_EXPORT_PLUGIN
#define KGET_EXPORT_PLUGIN(classname)
Declares a class as plugin.
Definition: kget_export.h:40
btdetailswidget.h
TransferFactory
TransferFactory.
Definition: transferfactory.h:52
BTTransferHandler
Definition: bttransferhandler.h:29
Transfer
Definition: transfer.h:36
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:17 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