41 lines
988 B
C
41 lines
988 B
C
|
#ifndef NULLSOFT_DOWNLOADSTATUSH
|
||
|
#define NULLSOFT_DOWNLOADSTATUSH
|
||
|
|
||
|
#include "../nu/AutoLock.h"
|
||
|
#include <map>
|
||
|
|
||
|
|
||
|
class DownloadStatus
|
||
|
{
|
||
|
public:
|
||
|
class Status
|
||
|
{
|
||
|
public:
|
||
|
Status();
|
||
|
~Status();
|
||
|
const Status &operator =(const Status ©);
|
||
|
Status(size_t _downloaded, size_t _maxSize, const wchar_t *source, const wchar_t *title, const wchar_t *path);
|
||
|
size_t downloaded, maxSize;
|
||
|
|
||
|
int killswitch;
|
||
|
wchar_t *source;
|
||
|
wchar_t *title;
|
||
|
wchar_t *path;
|
||
|
private:
|
||
|
|
||
|
void Init();
|
||
|
void Reset();
|
||
|
};
|
||
|
|
||
|
void AddDownloadThread(DownloadToken token, const wchar_t *source, const wchar_t *title, const wchar_t *path);
|
||
|
void DownloadThreadDone(DownloadToken token);
|
||
|
bool UpdateStatus(DownloadToken token, size_t downloaded, size_t maxSize);
|
||
|
bool CurrentlyDownloading();
|
||
|
void GetStatusString(wchar_t *status, size_t len);
|
||
|
typedef std::map<DownloadToken, Status> Downloads;
|
||
|
Downloads downloads;
|
||
|
Nullsoft::Utility::LockGuard statusLock;
|
||
|
};
|
||
|
|
||
|
extern DownloadStatus downloadStatus;
|
||
|
#endif
|