You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kget/transfer.h

245 lines
5.4 KiB

/***************************************************************************
* 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 <tdelistview.h>
#include <tqdatetime.h>
#include <tqguardedptr.h>
#include <tqmap.h>
#include <kurl.h>
#include <tdeio/jobclasses.h>
#include "slave.h"
class TQTimer;
class KSimpleConfig;
class TDEAction;
class TDERadioAction;
class DlgIndividual;
class TransferList;
class Transfer:public TQObject, public TDEListViewItem
{
TQ_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> dlgIndividual;
};
#endif // _Transfer_h