• 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
transferhandler.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2005 Dario Massarin <nekkar@libero.it>
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 "core/transferhandler.h"
12 
13 #include "core/job.h"
14 #include "core/jobqueue.h"
15 #include "core/transfergroup.h"
16 #include "core/transfergrouphandler.h"
17 #include "core/transfertreemodel.h"
18 #include "core/plugin/transferfactory.h"
19 #include "settings.h"
20 #include "mainwindow.h"
21 #include "kgetkjobadapter.h"
22 
23 #include <kdebug.h>
24 #include <klocale.h>
25 #include <KPassivePopup>
26 #include <QAction>
27 #include <QVariant>
28 
29 TransferHandler::TransferHandler(Transfer * parent, Scheduler * scheduler)
30  : Handler(scheduler, parent),
31  m_transfer(parent),
32  m_changesFlags(Transfer::Tc_None)
33 {
34  static int dBusObjIdx = 0;
35  m_dBusObjectPath = "/KGet/Transfers/" + QString::number(dBusObjIdx++);
36 
37  m_kjobAdapter = new KGetKJobAdapter(this, this);
38 
39  connect(m_transfer, SIGNAL(capabilitiesChanged()), this, SIGNAL(capabilitiesChanged()));
40 }
41 
42 TransferHandler::~TransferHandler()
43 {
44 }
45 
46 Transfer::Capabilities TransferHandler::capabilities() const
47 {
48  return m_transfer->capabilities();
49 }
50 
51 void TransferHandler::start()
52 {
53  if(m_transfer->group()->status() == JobQueue::Running)
54  {
55  m_transfer->setPolicy(Job::None);
56  KGet::model()->moveTransfer(m_transfer, m_transfer->group());
57  }
58  else
59  {
60  m_transfer->setPolicy(Job::Start);
61  }
62 }
63 
64 void TransferHandler::stop()
65 {
66  if (m_transfer->group()->status() == JobQueue::Stopped)
67  {
68  m_transfer->setPolicy(Job::None);
69  }
70  else
71  {
72  m_transfer->setPolicy(Job::Stop);
73  }
74 }
75 
76 int TransferHandler::elapsedTime() const
77 {
78  return m_transfer->elapsedTime();
79 }
80 
81 int TransferHandler::remainingTime() const
82 {
83  return m_transfer->remainingTime();
84 }
85 
86 KIO::filesize_t TransferHandler::totalSize() const
87 {
88  return m_transfer->totalSize();
89 }
90 
91 KIO::filesize_t TransferHandler::downloadedSize() const
92 {
93  return m_transfer->downloadedSize();
94 }
95 
96 KIO::filesize_t TransferHandler::uploadedSize() const
97 {
98  return m_transfer->uploadedSize();
99 }
100 
101 int TransferHandler::percent() const
102 {
103  return m_transfer->percent();
104 }
105 
106 int TransferHandler::downloadSpeed() const
107 {
108  return m_transfer->downloadSpeed();
109 }
110 
111 int TransferHandler::averageDownloadSped() const
112 {
113  return m_transfer->averageDownloadSpeed();
114 }
115 
116 int TransferHandler::uploadSpeed() const
117 {
118  return m_transfer->uploadSpeed();
119 }
120 
121 QVariant TransferHandler::data(int column)
122 {
123 // kDebug(5001) << "TransferHandler::data(" << column << ")";
124 
125  switch(column)
126  {
127  case 0:
128  return dest().fileName();
129  case 1:
130  if (status() == Job::Aborted && !error().text.isEmpty())
131  return error().text;
132  return statusText();
133  case 2:
134  if (totalSize() != 0)
135  return KIO::convertSize(totalSize());
136  else
137  return i18nc("not available", "n/a");
138  case 3:
139 // return QString::number(percent())+'%'; // display progressbar instead
140  return QVariant();
141  case 4:
142  if (downloadSpeed() == 0)
143  {
144  if (m_transfer->isStalled())
145  return i18n("Stalled");
146  else
147  return QString();
148  }
149  else
150  return i18n("%1/s", KIO::convertSize(downloadSpeed()));
151  case 5:
152  if (status() == Job::Running && downloadSpeed() != 0)
153  return KIO::convertSeconds(remainingTime());
154  else
155  return QString();
156  default:
157  return QVariant();
158  }
159 }
160 
161 void TransferHandler::setSelected( bool select )
162 {
163  if( (select && !isSelected()) || (!select && isSelected()) )
164  {
165  m_transfer->m_isSelected = select;
166  setTransferChange( Transfer::Tc_Selection, true );
167  }
168 }
169 
170 bool TransferHandler::isSelected() const
171 {
172  return m_transfer->m_isSelected;
173 }
174 
175 Transfer::ChangesFlags TransferHandler::changesFlags() const
176 {
177  return m_changesFlags;
178 }
179 
180 void TransferHandler::resetChangesFlags()
181 {
182  m_changesFlags = 0;
183 }
184 
185 void TransferHandler::destroy()
186 {
187  kDebug(5001) << "TransferHandler::destroy() ENTERING";
188 
189  kDebug(5001) << "TransferHandler::destroy() LEAVING";
190 }
191 
192 void TransferHandler::setTransferChange(ChangesFlags change, bool notifyModel)
193 {
194  m_changesFlags |= change;
195 
196  if (notifyModel)
197  {
198  // Notify the TransferTreeModel
199  m_transfer->model()->postDataChangedEvent(this);
200 
201  m_kjobAdapter->slotUpdateDescription();
202  }
203 }
204 
205 QList<QAction*> TransferHandler::contextActions()
206 {
207  QList<QAction*> actions;
208  if (status() != Job::Finished)
209  {
210  actions << KGet::actionCollection()->action("start_selected_download")
211  << KGet::actionCollection()->action("stop_selected_download");
212  }
213  actions << KGet::actionCollection()->action("delete_selected_download")
214  << KGet::actionCollection()->action("redownload_selected_download")
215  << KGet::actionCollection()->action("select_all");
216 
217  return actions;
218 }
219 
220 QList<QAction*> TransferHandler::factoryActions()
221 {
222  QList<QAction*> actions;
223  foreach(QAction *action, m_transfer->factory()->actions(this))
224  actions.append(action);
225  return actions;
226 }
TransferHandler::status
Job::Status status() const
Definition: transferhandler.h:64
Transfer::ChangesFlags
int ChangesFlags
Definition: transfer.h:100
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
Job::Finished
The job is stopped, but this also indicates that it stopped because an error occurred.
Definition: job.h:47
Transfer::totalSize
KIO::filesize_t totalSize() const
Definition: transfer.h:169
TransferHandler::isSelected
bool isSelected() const
Definition: transferhandler.cpp:170
Transfer::remainingTime
virtual int remainingTime() const
Definition: transfer.h:182
TransferHandler::start
virtual void start()
These are all Job-related functions.
Definition: transferhandler.cpp:51
Transfer::capabilities
Capabilities capabilities() const
Returns the capabilities this Transfer supports.
Definition: transfer.h:111
Job::Stop
The scheduler should start this job even if its queue isn't in a Running status.
Definition: job.h:60
transfertreemodel.h
TransferHandler::contextActions
QList< QAction * > contextActions()
Definition: transferhandler.cpp:205
Transfer::elapsedTime
virtual int elapsedTime() const
Definition: transfer.cpp:116
Transfer::averageDownloadSpeed
int averageDownloadSpeed() const
Definition: transfer.cpp:124
TransferHandler::totalSize
KIO::filesize_t totalSize() const
Definition: transferhandler.cpp:86
JobQueue::Running
Definition: jobqueue.h:36
TransferHandler::capabilitiesChanged
void capabilitiesChanged()
Emitted when the capabilities of the Transfer change.
kgetkjobadapter.h
Transfer::group
TransferGroup * group() const
The owner group.
Definition: transfer.h:257
Transfer::percent
int percent() const
Definition: transfer.h:178
TransferTreeModel::postDataChangedEvent
void postDataChangedEvent(TransferHandler *transfer)
Definition: transfertreemodel.cpp:509
Transfer::m_isSelected
bool m_isSelected
Definition: transfer.h:370
Transfer::downloadSpeed
int downloadSpeed() const
Definition: transfer.h:179
TransferHandler::capabilities
Transfer::Capabilities capabilities() const
Returns the capabilities the Transfer supports.
Definition: transferhandler.cpp:46
transferfactory.h
jobqueue.h
TransferHandler::error
Job::Error error() const
Definition: transferhandler.h:65
Job::Running
Definition: job.h:43
TransferHandler::dest
const KUrl & dest() const
Definition: transferhandler.h:98
KGet::model
static TransferTreeModel * model()
Definition: kget.cpp:487
Transfer::isStalled
virtual bool isStalled() const
Definition: transfer.h:184
transfergrouphandler.h
TransferHandler::statusText
QString statusText() const
Definition: transferhandler.h:210
Transfer::Tc_Selection
Definition: transfer.h:67
mainwindow.h
TransferHandler::~TransferHandler
virtual ~TransferHandler()
Definition: transferhandler.cpp:42
Job::None
The scheduler shouldn't never start this job, even if if its queue is in a Running status...
Definition: job.h:62
KGet::actionCollection
static KActionCollection * actionCollection()
Definition: kget.cpp:631
TransferHandler::downloadSpeed
int downloadSpeed() const
Definition: transferhandler.cpp:106
Transfer::factory
TransferFactory * factory() const
Definition: transfer.h:272
transfergroup.h
TransferHandler::averageDownloadSped
int averageDownloadSped() const
Definition: transferhandler.cpp:111
Handler
Definition: handler.h:17
Job::Aborted
The job is stopped.
Definition: job.h:45
transferhandler.h
TransferHandler::percent
int percent() const
Definition: transferhandler.cpp:101
TransferHandler::data
QVariant data(int column)
Definition: transferhandler.cpp:121
job.h
JobQueue::Stopped
Definition: jobqueue.h:36
KGetKJobAdapter
Allows kget to register all transfers in kuiserver as kjobs.
Definition: kgetkjobadapter.h:23
TransferHandler::downloadedSize
KIO::filesize_t downloadedSize() const
Definition: transferhandler.cpp:91
JobQueue::status
Status status() const
Definition: jobqueue.h:52
Transfer::downloadedSize
KIO::filesize_t downloadedSize() const
Definition: transfer.h:170
settings.h
Transfer::uploadSpeed
int uploadSpeed() const
Definition: transfer.h:181
Job::setPolicy
void setPolicy(Policy jobPolicy)
Definition: job.cpp:54
KGetKJobAdapter::slotUpdateDescription
void slotUpdateDescription()
Definition: kgetkjobadapter.cpp:43
TransferTreeModel::moveTransfer
void moveTransfer(Transfer *transfer, TransferGroup *destGroup, Transfer *after=0)
Definition: transfertreemodel.cpp:399
TransferHandler::remainingTime
int remainingTime() const
Definition: transferhandler.cpp:81
TransferHandler::elapsedTime
int elapsedTime() const
Definition: transferhandler.cpp:76
TransferHandler::uploadSpeed
int uploadSpeed() const
Definition: transferhandler.cpp:116
TransferHandler::TransferHandler
TransferHandler(Transfer *parent, Scheduler *scheduler)
Definition: transferhandler.cpp:29
TransferFactory::actions
virtual const QList< KAction * > actions(TransferHandler *handler=0)
Definition: transferfactory.cpp:58
TransferHandler::setSelected
void setSelected(bool select)
Selects the current transfer.
Definition: transferhandler.cpp:161
TransferHandler::factoryActions
QList< QAction * > factoryActions()
Definition: transferhandler.cpp:220
Job::Error::text
QString text
Definition: job.h:75
TransferHandler::changesFlags
ChangesFlags changesFlags() const
Returns the changes flags.
Definition: transferhandler.cpp:175
TransferHandler::uploadedSize
KIO::filesize_t uploadedSize() const
Definition: transferhandler.cpp:96
Transfer::model
TransferTreeModel * model()
Definition: transfer.cpp:225
Job::Start
Definition: job.h:58
Transfer
Definition: transfer.h:36
TransferHandler::stop
virtual void stop()
Definition: transferhandler.cpp:64
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