1 /* This file is part of the KDE project
3 Copyright (C) 2007 by Javier Goday <jgoday@gmail.com>
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.
12 #include "dbusmodelobserver.h"
13 #include "core/kget.h"
14 #include "core/transfergrouphandler.h"
15 #include "core/transferhandler.h"
20 DBusModelObserver::DBusModelObserver(QObject
*parent
)
22 m_transferGroupObserver(this),
23 m_transferGroupHandlers()
27 // Add the observer to kget to see all operations through the transferGroups
28 KGet::addObserver(this);
30 QObject::connect(&m_transferGroupObserver
, SIGNAL(transferAdded(TransferHandler
*)),
31 this, SLOT(addTransferHandler(TransferHandler
*)));
32 QObject::connect(&m_transferGroupObserver
, SIGNAL(transferDeleted(TransferHandler
*)) ,
33 this, SLOT(deleteTransferHandler(TransferHandler
*)));
34 QObject::connect(&m_transferGroupObserver
, SIGNAL(transferGroupChanged(TransferGroupHandler
*)),
35 this, SLOT(slotTransferGroupChanged(TransferGroupHandler
*)));
38 void DBusModelObserver::addedTransferGroupEvent(TransferGroupHandler
*group
)
40 group
->addObserver(&m_transferGroupObserver
);
42 m_transferGroupHandlers
.append(group
);
45 void DBusModelObserver::removedTransferGroupEvent(TransferGroupHandler
*group
)
47 group
->delObserver(&m_transferGroupObserver
);
49 m_transferGroupHandlers
.removeAll(group
);
52 QVariantMap
DBusModelObserver::transfers() const
57 int DBusModelObserver::transfersSpeed() const
62 void DBusModelObserver::addTransferHandler(TransferHandler
*handler
)
64 m_transfers
[handler
->source().pathOrUrl()] = getAttributesFromTransfer(handler
);
67 void DBusModelObserver::deleteTransferHandler(TransferHandler
*handler
)
69 m_transfers
.remove(handler
->source().pathOrUrl());
72 void DBusModelObserver::slotTransferGroupChanged(TransferGroupHandler
*handler
)
74 // TODO: update the this transfers in the transfers map
75 foreach(TransferHandler
*t_handler
, handler
->transfers()) {
76 m_transfers
[t_handler
->source().pathOrUrl()] = getAttributesFromTransfer(t_handler
);
79 m_speed
= handler
->speed();
80 // emit transfersChanged(m_transfers);
83 QStringList
DBusModelObserver::getAttributesFromTransfer(TransferHandler
*handler
)
85 QStringList attributes
;
86 QString status
= (handler
->status () == Job::Running
) ? "1" : "0";
88 attributes
<< handler
->source().fileName();
89 attributes
<< QString::number(handler
->percent());
90 attributes
<< QString::number(handler
->totalSize());
92 attributes
<< QString::number(handler
->downloadSpeed());