Итак, ключевые моменты:
Менеджер - это практически только GUI, который получит в своё распоряжение интерфейс качалки. Сама качалка будет создаваться/уничтожаться внутрях САС, наружу будут выведены только её методы Пауза/Продолжить/Отменить + статистика да лог.
Вот этот интерфейс (в таком виде он сейчас в САС):
Код: Выделить всё
IRegionTilesDownload = interface
['{4BF3D0E8-3971-4EDC-97F3-44461D6A54FD}']
procedure SaveSession(ASessionFileName: string);
procedure Abort;
function GetPaused: Boolean;
procedure SetPaused(APaused: Boolean);
property Paused: Boolean read GetPaused write SetPaused;
function GetFinished: Boolean;
property Finished: Boolean read GetFinished;
function GetTotalInRegion: Int64;
property TotalInRegion: Int64 read GetTotalInRegion;
function GetDownloaded: Int64;
property Downloaded: Int64 read GetDownloaded;
function GetProcessed: Int64;
property Processed: Int64 read GetProcessed;
function GetDownloadSize: Double;
property DownloadSize: Double read GetDownloadSize;
function GetElapsedTime: TDateTime;
property ElapsedTime: TDateTime read GetElapsedTime;
function GetStartTime: TDateTime;
property StartTime: TDateTime read GetStartTime;
function GetZoom: Byte;
property Zoom: Byte read GetZoom;
end; Интерфейс лога (сообщения которые сейчас выводятся в Memo):
Код: Выделить всё
ILogForTaskThread = interface(ILogSimple)
['{8583BE82-1239-4E0F-9B96-D2810232282A}']
function GetLastMessages(AMaxRowsCount: Cardinal; var ALastId: Cardinal; out AcntLines: Cardinal): WideString; safecall;
end;Это, что касается со стороны САС. Со стороны dll, должна экспортироваться одна функция:
Код: Выделить всё
function GetDownloadManager(ASASCommonAPI: ISASCommonAPI): IDownloadManager;В этом интерфейсе должны быть как минимум метод:
Код: Выделить всё
procedure ShowUI; Код: Выделить всё
procedure AddTask(ADownloader: IRegionTilesDownload; ALog: ILogForTaskThread); Вот, с большего и всё. Менеджеру даётся полная свобода действий над закачками (расписание, очерёдность и проч.), плюс, можно будет сделать чтобы при сворачивании менеджера он скрывал главное окно САС, а сам прятался в трей.

