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.
11 #include "core/transfergroup.h"
13 #include "core/transfer.h"
14 #include "core/transfergrouphandler.h"
15 #include "core/kget.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";
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
)
84 TransferGroup
* oldTransferGroup
= transfer
->group();
86 JobQueue::move(transfer
, after
);
88 if(oldTransferGroup
== this)
89 handler()->postMovedTransferEvent(transfer
, after
);
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() )
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()) {
125 Transfer
* TransferGroup::operator[] (int i
) const
127 // kDebug(5001) << "TransferGroup::operator[]";
129 return (Transfer
*)((* (JobQueue
*)this)[i
]);
132 TransferGroupHandler
* TransferGroup::handler()
136 m_handler
= new TransferGroupHandler(this, scheduler());
141 void TransferGroup::transferChangedEvent(Transfer
* 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");
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() );