/*************************************************************************** * 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 #include #include #include #include #include #include "slave.h" class TQTimer; class KSimpleConfig; class TDEAction; class TDERadioAction; class DlgIndividual; class TransferList; class Transfer:public TQObject, public TDEListViewItem { 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 TQString & message); bool keepDialogOpen() const; TQDateTime getStartTime()const { return startTime; } unsigned int getRemainingTime()const { return remainingTimeSec; } TDEIO::filesize_t getTotalSize()const { return totalSize; } TDEIO::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(TQDateTime _startTime) { startTime = _startTime; }; void setSpeed(unsigned long _speed); // update methods void updateAll(); bool updateStatus(int counter); void showIndividual(); void UpdateRetry(); // actions TDEAction *m_paResume, *m_paPause, *m_paDelete, *m_paRestart; //TDEAction *m_paDock; TDERadioAction *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(TDEIO::filesize_t bytes); void slotProcessedSize(TDEIO::filesize_t); void slotStartTime(const TQDateTime &); void slotStop(); // stop all transfers when going offline signals: void statusChanged(Transfer *, int _operation); void log(uint, const TQString &, const TQString &); private: void init(const uint _id); void destroyGetFileJob(); void createGetFileJob(KURL, KURL, bool); Slave *m_pSlave; KURL src; KURL dest; /* the tranfer id number */ uint id; static uint idcount; // log TQString transferLog; // schedule time TQDateTime startTime; TDEIO::filesize_t totalSize; TDEIO::filesize_t processedSize; int percent; int speed; unsigned int remainingTimeSec; TQString 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 TQGuardedPtr dlgIndividual; }; #endif // _Transfer_h