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 "transferdetails.h"
13 #include "ui_transferdetailsfrm.h"
14 #include "core/kget.h"
17 #include <kio/global.h>
19 #include <QVBoxLayout>
21 TransferDetails::TransferDetails(TransferHandler
* transfer
)
22 : m_transfer(transfer
)
24 m_genericWidget
= new QWidget(this);
26 Ui::TransferDetailsFrm frm
;
27 frm
.setupUi(m_genericWidget
);
29 m_detailsWidget
= KGet::factory(transfer
)->createDetailsWidget(transfer
);
31 m_layout
= new QVBoxLayout(this);
32 m_layout
->addWidget(m_genericWidget
);
34 m_layout
->addWidget(m_detailsWidget
);
37 frm
.sourceLabel
->setText(i18nc("@label transfer source", "Source:"));
38 frm
.destLabel
->setText(i18n("Saving to:"));
39 frm
.statusLabel
->setText(i18n("Status:"));
41 frm
.sourceContentEdit
->setText(transfer
->source().url());
42 frm
.destContentEdit
->setText(transfer
->dest().url());
44 m_statusPixmapLabel
= frm
.statusPixmapContentLabel
;
45 m_statusTextLabel
= frm
.statusTextContentLabel
;
46 m_completedLabel
= frm
.completedContentLabel
;
47 m_speedLabel
= frm
.speedContentLabel
;
48 m_progressBar
= frm
.progressBar
;
49 m_remainingTimeLabel
= frm
.remainingTimeLabel
;
51 transfer
->addObserver(this);
52 //This updates the widget with the right values
53 transferChangedEvent(transfer
);
56 TransferDetails::~TransferDetails()
58 m_transfer
->delObserver(this);
61 void TransferDetails::transferChangedEvent(TransferHandler
* transfer
)
65 TransferHandler::ChangesFlags transferFlags
= m_transfer
->changesFlags(this);
67 if(transferFlags
& Transfer::Tc_Status
)
69 m_statusPixmapLabel
->setPixmap(m_transfer
->statusPixmap());
70 m_statusTextLabel
->setText(m_transfer
->statusText());
73 if((transferFlags
& Transfer::Tc_TotalSize
) || (transferFlags
& Transfer::Tc_DownloadedSize
))
75 m_completedLabel
->setText(i18n("%1 of %2", KIO::convertSize(m_transfer
->downloadedSize()), KIO::convertSize(m_transfer
->totalSize())));
78 if(transferFlags
& Transfer::Tc_Percent
)
80 m_progressBar
->setValue(m_transfer
->percent());
83 if(transferFlags
& Transfer::Tc_DownloadSpeed
)
85 int speed
= m_transfer
->downloadSpeed();
89 if(m_transfer
->status() == Job::Running
)
90 m_speedLabel
->setText(i18n("Stalled") );
92 m_speedLabel
->setText(QString());
95 m_speedLabel
->setText(i18n("%1/s", KIO::convertSize(speed
)));
97 m_remainingTimeLabel
->setText(KIO::convertSeconds(m_transfer
->remainingTime()));
99 m_transfer
->resetChangesFlags(this);
102 QWidget
*TransferDetails::detailsWidget(TransferHandler
*handler
)
104 QWidget
*details
= KGet::factory(handler
)->createDetailsWidget(handler
);
106 if (!details
) { // the transfer factory doesn't override the details widget so use the generic one
107 details
= new TransferDetails(handler
);
113 #include "transferdetails.moc"