Relicense all GPLv2 only code to GPLv2+.
[kdenetwork.git] / kget / core / transfergroup.cpp
blob5bf315dabe4781e5c84b34b391c4862ccef5263d
1 /* This file is part of the KDE project
3 Copyright (C) 2005 Dario Massarin <nekkar@libero.it>
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 */
11 #include "core/transfergroup.h"
13 #include "core/transfer.h"
14 #include "core/transfergrouphandler.h"
15 #include "core/kget.h"
17 #include <kdebug.h>
19 #include <QDomElement>
22 TransferGroup::TransferGroup(TransferTreeModel * model, Scheduler * scheduler, const QString & name)
23 : JobQueue(scheduler),
24 m_model(model), m_handler(0), m_name(name),
25 m_totalSize(0), m_processedSize(0),
26 m_percent(0), m_speed(0)
31 TransferGroup::~TransferGroup()
33 handler()->postDeleteEvent();
36 void TransferGroup::setStatus(Status queueStatus)
38 JobQueue::setStatus(queueStatus);
40 handler()->postGroupChangedEvent();
43 void TransferGroup::append(Transfer * transfer)
45 kDebug(5001) << "TransferGroup::append";
47 Transfer * after;
48 if(size() == 0)
49 after = 0;
50 else
51 after = static_cast<Transfer *> (last());
53 JobQueue::append(transfer);
55 handler()->postAddedTransferEvent(transfer, after);
58 void TransferGroup::prepend(Transfer * transfer)
60 JobQueue::prepend(transfer);
62 handler()->postAddedTransferEvent(transfer, 0);
65 void TransferGroup::insert(Transfer * transfer, Transfer * after)
67 JobQueue::insert(transfer, after);
69 handler()->postAddedTransferEvent(transfer, after);
72 void TransferGroup::remove(Transfer * transfer)
74 JobQueue::remove(transfer);
76 handler()->postRemovedTransferEvent(transfer);
79 void TransferGroup::move(Transfer * transfer, Transfer * after)
81 if(transfer == after)
82 return;
84 TransferGroup * oldTransferGroup = transfer->group();
86 JobQueue::move(transfer, after);
88 if(oldTransferGroup == this)
89 handler()->postMovedTransferEvent(transfer, after);
90 else
92 handler()->postAddedTransferEvent(transfer, after);
93 oldTransferGroup->handler()->postRemovedTransferEvent(transfer);
97 Transfer * TransferGroup::findTransfer(const KUrl &src)
99 iterator it = begin();
100 iterator itEnd = end();
102 for(; it!=itEnd ; ++it)
104 Transfer * t = (Transfer *) *it;
105 if( t->source().url() == src.url() )
106 return t;
108 return 0;
111 Transfer *TransferGroup::findTransferByDestination(const KUrl &dest)
113 iterator it = begin();
114 iterator itEnd = end();
116 for(; it!=itEnd ; ++it) {
117 Transfer *t = (Transfer *) *it;
118 if(t->dest().url() == dest.url()) {
119 return t;
122 return 0;
125 Transfer * TransferGroup::operator[] (int i) const
127 // kDebug(5001) << "TransferGroup::operator[]";
129 return (Transfer *)((* (JobQueue *)this)[i]);
132 TransferGroupHandler * TransferGroup::handler()
134 if(!m_handler)
136 m_handler = new TransferGroupHandler(this, scheduler());
138 return m_handler;
141 void TransferGroup::transferChangedEvent(Transfer * transfer)
143 Q_UNUSED(transfer);
144 m_handler->postGroupChangedEvent();
147 void TransferGroup::save(QDomElement e) // krazy:exclude=passbyvalue
149 kDebug(5001) << "TransferGroup::save() --> " << name();
151 e.setAttribute("Name", m_name);
153 iterator it = begin();
154 iterator itEnd = end();
156 for( ; it!=itEnd; ++it )
158 kDebug(5001) << "TransferGroup::save() -->" << name() << " transfer: " << ((Transfer *) *it)->source();
159 QDomElement t = e.ownerDocument().createElement("Transfer");
160 e.appendChild(t);
161 ((Transfer *) *it)->save(t);
165 void TransferGroup::load(const QDomElement & e)
167 kDebug(5001) << "TransferGroup::load";
169 m_name = e.attribute("Name");
171 QDomNodeList nodeList = e.elementsByTagName("Transfer");
172 int nItems = nodeList.length();
174 for(int i=0; i<nItems; i++)
176 kDebug(5001) << "TransferGroup::load -> addTransfer";
177 KGet::addTransfer( nodeList.item(i).toElement(), name() );