kget
dbusmodelobserver.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "dbusmodelobserver.h"
00013 #include "core/kget.h"
00014 #include "core/transfergrouphandler.h"
00015 #include "core/transferhandler.h"
00016 #include "core/job.h"
00017
00018 #include <QObject>
00019
00020 DBusModelObserver::DBusModelObserver(QObject *parent)
00021 : m_transfers(),
00022 m_transferGroupObserver(this),
00023 m_transferGroupHandlers()
00024 {
00025 Q_UNUSED(parent)
00026
00027
00028 KGet::addObserver(this);
00029
00030 QObject::connect(&m_transferGroupObserver, SIGNAL(transferAdded(TransferHandler *)),
00031 this, SLOT(addTransferHandler(TransferHandler *)));
00032 QObject::connect(&m_transferGroupObserver, SIGNAL(transferDeleted(TransferHandler *)) ,
00033 this, SLOT(deleteTransferHandler(TransferHandler *)));
00034 QObject::connect(&m_transferGroupObserver, SIGNAL(transferGroupChanged(TransferGroupHandler *)),
00035 this, SLOT(slotTransferGroupChanged(TransferGroupHandler *)));
00036 }
00037
00038 void DBusModelObserver::addedTransferGroupEvent(TransferGroupHandler *group)
00039 {
00040 group->addObserver(&m_transferGroupObserver);
00041
00042 m_transferGroupHandlers.append(group);
00043 }
00044
00045 void DBusModelObserver::removedTransferGroupEvent(TransferGroupHandler *group)
00046 {
00047 group->delObserver(&m_transferGroupObserver);
00048
00049 m_transferGroupHandlers.removeAll(group);
00050 }
00051
00052 QVariantMap DBusModelObserver::transfers() const
00053 {
00054 return m_transfers;
00055 }
00056
00057 int DBusModelObserver::transfersSpeed() const
00058 {
00059 return m_speed;
00060 }
00061
00062 void DBusModelObserver::addTransferHandler(TransferHandler *handler)
00063 {
00064 m_transfers[handler->source().pathOrUrl()] = getAttributesFromTransfer(handler);
00065 }
00066
00067 void DBusModelObserver::deleteTransferHandler(TransferHandler *handler)
00068 {
00069 m_transfers.remove(handler->source().pathOrUrl());
00070 }
00071
00072 void DBusModelObserver::slotTransferGroupChanged(TransferGroupHandler *handler)
00073 {
00074
00075 foreach(TransferHandler *t_handler, handler->transfers()) {
00076 m_transfers[t_handler->source().pathOrUrl()] = getAttributesFromTransfer(t_handler);
00077 }
00078
00079 m_speed = handler->speed();
00080
00081 }
00082
00083 QStringList DBusModelObserver::getAttributesFromTransfer(TransferHandler *handler)
00084 {
00085 QStringList attributes;
00086 QString status = (handler->status () == Job::Running) ? "1" : "0";
00087
00088 attributes << handler->source().fileName();
00089 attributes << QString::number(handler->percent());
00090 attributes << QString::number(handler->totalSize());
00091 attributes << status;
00092 attributes << QString::number(handler->speed());
00093
00094 return attributes;
00095 }