/* WebDownloader for X-Window
* Copyright (C) 1999-2002 Koshelev Maxim
* This Program is free but not GPL!!! You can't modify it
* without agreement with author. You can't distribute modified
* program but you can distribute unmodified program.
*
* 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.
*/
#ifndef _D4X_SCHEDULER_HEADER_
#define _D4X_SCHEDULER_HEADER_
#include <time.h>
#include "dlist.h"
enum D4X_SCHEDULED_ACTION{
SACT_SET_SPEED,
SACT_POPUP_WINDOW,
SACT_EXIT,
SACT_DEL_COMPLETED,
SACT_DEL_FAILED,
SACT_RUN_DOWNLOAD,
SACT_PAUSE_DOWNLOAD,
SACT_DELETE_DOWNLOAD,
SACT_DEL_IF_COMPLETED,
SACT_ADD_DOWNLOAD,
SACT_SAVE_LIST,
SACT_EXECUTE,
SACT_LAST
};
class tMain;
/* actions */
struct d4xSchedAction{
time_t start_time,period;
int retries; // -1 - unlimited, 0 - no retries
GtkTreeIter *iter;
d4xSchedAction *next,*prev;
int lock; //locked if editor opened
/* methods */
d4xSchedAction(){iter=(GtkTreeIter*)NULL;};
virtual int type()=0; //type of action
virtual int load(int fd);
virtual int save(int fd);
virtual void run(tMain *papa)=0;
virtual ~d4xSchedAction();
};
struct d4xSASpeed:public d4xSchedAction{
int speed; // 1,2,3 speed level
int type();
int load(int fd);
int save(int fd);
void run(tMain *papa);
};
struct d4xSAPopup:public d4xSchedAction{
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSAExit:public d4xSchedAction{
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSADelCompleted:public d4xSchedAction{
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSADelFailed:public d4xSchedAction{
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSAUrl:public d4xSchedAction{
d4x::URL url;
d4xSAUrl():d4xSchedAction(){};
int load(int fd);
int save(int fd);
~d4xSAUrl(){};
};
struct d4xSADelDownload:public d4xSAUrl{
d4xSADelDownload();
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSADelIfCompleted:public d4xSAUrl{
d4xSADelIfCompleted();
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSARunDownload:public d4xSAUrl{
d4xSARunDownload();
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSAStopDownload:public d4xSAUrl{
d4xSAStopDownload();
int type();
int save(int fd);
void run(tMain *papa);
};
struct d4xSAAddDownload:public d4xSchedAction{
tDownload *dwn;
d4xSAAddDownload();
int type();
int load(int fd);
int save(int fd);
void run(tMain *papa);
~d4xSAAddDownload();
};
struct d4xSASaveList:public d4xSchedAction{
tPStr path;
int type();
int load(int fd);
int save(int fd);
void run(tMain *papa);
};
struct d4xSAExecute:public d4xSchedAction{
tPStr command;
int type();
int load(int fd);
int save(int fd);
void run(tMain *papa);
};
/* scheduler */
class d4xScheduler{
d4xSchedAction *FIRST; //sorted list of actions
int changed;
public:
d4xScheduler();
void run(tMain *papa);
void clear_old();
void add_scheduled(tDownload *what);
void add_action(d4xSchedAction *act);
void del_action(d4xSchedAction *act);
void redraw();
int load(int fd);
int save(int fd);
void load();
void save();
~d4xScheduler();
};
extern d4xScheduler *MainScheduler;
#endif
syntax highlighted by Code2HTML, v. 0.9.1