00001 #include <qprogressbar.h>
00002 #include <qlabel.h>
00003 #include <qvbox.h>
00004
00005 #include "dcctransfer.h"
00006 #include "dcctransferrecv.h"
00007 #include "dccprogress.h"
00008
00009 DCCProgress::DCCProgress(DCCTransfer::Type type, Q_UINT32 ip4Addr, Q_UINT16 port,
00010 const QString &filename, const QString &nickname, unsigned int size, QWidget *parent, char *name, WFlags f)
00011 : QWidget(parent, name, f), m_vbox(new QVBox(this)),
00012 m_label(new QLabel(m_vbox)),
00013 m_bar(new QProgressBar(m_vbox))
00014 {
00015
00016 if (DCCTransfer::Recv == type)
00017 m_transfer = new DCCTransferRecv(ip4Addr, port, filename, size);
00018
00019
00020 connect(m_transfer, SIGNAL(progress(int)), this, SLOT(slotSetProgress(int)));
00021 connect(m_transfer, SIGNAL(finished(DCCTransfer *, DCCTransfer::EndCode)),
00022 this, SLOT(slotFinished(DCCTransfer *, DCCTransfer::EndCode)));
00023
00024 m_label->setText(tr("Receiving file %1 from %2...").arg(m_transfer->filename()).arg(nickname));
00025
00026 m_label->show();
00027 m_bar->show();
00028 show();
00029
00030 }
00031
00032 bool DCCProgress::finished()
00033 {
00034 return ( m_transfer == 0);
00035 }
00036
00037 void DCCProgress::cancel()
00038 {
00039 if (m_transfer)
00040 m_transfer->cancel();
00041 }
00042
00043 void DCCProgress::slotSetProgress(int progress)
00044 {
00045 m_bar->setProgress(progress);
00046 }
00047
00048 void DCCProgress::slotFinished(DCCTransfer *transfer, DCCTransfer::EndCode code)
00049 {
00050 if(transfer != m_transfer)
00051
00052 return;
00053
00054 QString msg;
00055
00056 switch(code) {
00057 case DCCTransfer::Successfull:
00058 msg = tr("Successfully received %1").arg(m_transfer->filename());
00059 break;
00060 case DCCTransfer::SelfAborted:
00061 msg = tr("Aborted");
00062 break;
00063 case DCCTransfer::PeerAborted:
00064 msg = tr("Peer Aborted");
00065 break;
00066 case DCCTransfer::Timeout:
00067 msg = tr("Timeout");
00068 break;
00069 }
00070
00071 m_label->setText(msg);
00072 delete m_transfer;
00073 m_transfer = 0;
00074 }
00075