00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JOB_H
00022 #define __JOB_H
00023
00024 #include <QTreeWidgetItem>
00025 #include <QObject>
00026 #include <QHttp>
00027 #include <QUrl>
00028 #include <QTimer>
00029 #include <QFile>
00030 #include <QBuffer>
00031
00033 enum jobStatus { jsStopped = 0, jsQueue, jsReadyWait, jsRunning, jsDone, jsError };
00034
00036 class Job : public QObject, public QTreeWidgetItem
00037 {
00038 Q_OBJECT
00039 private:
00041 static char * mStatusTable[];
00043 static int mActiveJobs;
00048 static QString size2str(int size);
00053 static QString time2str(int secs);
00055 QString mFile;
00057 QUrl mLink;
00059 int mStatus;
00061 int mTimeout;
00063 int mDone;
00065 int mDoneOld;
00067 int mTotal;
00069 int mSpeed;
00071 QHttp * mHttp;
00073 QTimer * mTimer;
00075 QFile * mOutputFile;
00077 void httpError(void);
00082 void setStatus(int status, QString msg = "");
00084 void startNextJob(void);
00085 private slots:
00086 void prepareDone(bool error, bool restart = false);
00087 void freeSelected(bool error);
00088 void freeWait(void);
00089 void downloadDone(bool error);
00090 void progressUpdate(int done, int total);
00091 void updateStatus(void);
00092 void waitForRestart(void);
00093 public:
00094 Job(QTreeWidget * parent, QString link);
00095 ~Job();
00097 void start(void);
00099 void stop(void);
00101 static int activeJobs(void);
00105 int status(void);
00106 signals:
00110 void done(QString fileName);
00114 void fatalError(QString msg);
00115 };
00116
00117 #endif