diff options
Diffstat (limited to 'kget/transfer.h')
-rw-r--r-- | kget/transfer.h | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/kget/transfer.h b/kget/transfer.h new file mode 100644 index 00000000..845995d8 --- /dev/null +++ b/kget/transfer.h @@ -0,0 +1,241 @@ +/*************************************************************************** +* transfer.h +* ------------------- +* +* Revision : $Id$ +* begin : Tue Jan 29 2002 +* copyright : (C) 2002 by Patrick Charbonnier +* : Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss +* email : pch@freeshell.org +* +****************************************************************************/ + +/*************************************************************************** + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + ***************************************************************************/ + + +#ifndef _Transfer_h +#define _Transfer_h + +#include <klistview.h> +#include <qdatetime.h> +#include <qguardedptr.h> +#include <qmap.h> + +#include <kurl.h> +#include <kio/jobclasses.h> + +#include "slave.h" + +class QTimer; + +class KSimpleConfig; +class KAction; +class KRadioAction; + + + +class DlgIndividual; +class TransferList; + + +class Transfer:public QObject, public KListViewItem +{ + Q_OBJECT +public: + enum TransferMode { MD_QUEUED, MD_DELAYED, MD_SCHEDULED, MD_NONE, MD_NEW }; + + enum TransferStatus { ST_TRYING, ST_RUNNING, ST_STOPPED, ST_FINISHED }; + + enum TransferOperation { + OP_FINISHED, OP_RESUMED, OP_PAUSED, OP_REMOVED, OP_ABORTED, + OP_QUEUED, OP_SCHEDULED, OP_DELAYED, OP_CONNECTED + }; + + + + Transfer(TransferList * view, const KURL & _src, const KURL & _dest, const uint _id=0); + Transfer(TransferList * view, Transfer * after, const KURL & _src, const KURL & _dest, const uint _id=0); + ~Transfer(); + + void synchronousAbort(); + + bool read(KSimpleConfig * config, int id); + void write(KSimpleConfig * config, int id); + void logMessage(const QString & message); + + bool keepDialogOpen() const; + + + QDateTime getStartTime()const + { + return startTime; + } + unsigned int getRemainingTime()const + { + return remainingTimeSec; + } + + KIO::filesize_t getTotalSize()const + { + return totalSize; + } + KIO::filesize_t getProcessedSize()const + { + return processedSize; + } + + KURL getSrc()const + { + return src; + } + KURL getDest()const + { + return dest; + } + int getPercent()const + { + return percent; + } + + int getSpeed()const + { + return speed; + } + TransferStatus getStatus()const + { + return status; + } + int getMode()const + { + return mode; + } + + void setMode(TransferMode _mode) + { + mode = _mode; + } + void setStatus(TransferStatus _status) + { + status = _status; + }; + void setStartTime(QDateTime _startTime) + { + startTime = _startTime; + }; + void setSpeed(unsigned long _speed); + + // update methods + void updateAll(); + bool updateStatus(int counter); + + void showIndividual(); + void UpdateRetry(); + + + // actions + KAction *m_paResume, *m_paPause, *m_paDelete, *m_paRestart; + //KAction *m_paDock; + KRadioAction *m_paQueue, *m_paTimer, *m_paDelay; + +public: + void slotExecPause(); + void slotExecResume(); + void slotExecRemove(); + void slotExecDelay(); + void slotExecSchedule(); + void slotExecConnected(); + void slotExecError(); + void slotExecBroken(); + void slotCanResume(bool _bCanResume); + void slotSpeed(unsigned long); + void checkCache(); + + bool isVisible() const; + void maybeShow(); + + bool retryOnError(); + bool retryOnBroken(); + +public slots: + // operation methods + void slotResume(); + void slotRequestPause(); + void slotRequestRemove(); + void slotRequestSchedule(); + void slotRequestDelay(); + void NotInCache(); + void slotRequestRestart(); + void slotUpdateActions(); + + void slotQueue(); + void slotFinished(); + + void slotTotalSize(KIO::filesize_t bytes); + void slotProcessedSize(KIO::filesize_t); + + void slotStartTime(const QDateTime &); + void slotStop(); // stop all transfers when going offline + +signals: + void statusChanged(Transfer *, int _operation); + void log(uint, const QString &, const QString &); + +private: + void init(const uint _id); + + Slave *m_pSlave; + + KURL src; + KURL dest; + + /* the tranfer id number */ + uint id; + + static uint idcount; + + // log + QString transferLog; + + // schedule time + QDateTime startTime; + + KIO::filesize_t totalSize; + KIO::filesize_t processedSize; + int percent; + + int speed; + unsigned int remainingTimeSec; + QString remainingTime; + + TransferStatus status; + TransferMode mode; + + TransferStatus prevStatus; + TransferMode prevMode; + + // how many times have we retried already + unsigned int retryCount; + + bool canResume; + + TransferList *view; + + // individual download window + QGuardedPtr<DlgIndividual> dlgIndividual; + +}; + + +#endif // _Transfer_h |