/programs/cmm/aelia/aelia.c |
---|
15,7 → 15,6 |
#include "../lib/patterns/simple_open_dialog.h" |
#include "../lib/patterns/history.h" |
#include "../lib/patterns/http_downloader.h" |
#include "../browser/download_manager.h" |
char default_dir[] = "/rd/1"; |
od_filter filter2 = {0,0}; |
69,7 → 68,7 |
#include "prepare_page.h" |
//#include "special_symbols.h" |
#define SANDWICH_MENU "Refresh page\nEdit page\nHistory\nDownloader\nAbout" |
#define SANDWICH_MENU "Refresh page\nEdit page\nHistory\nAbout" |
void InitDlls() |
{ |
118,8 → 117,7 |
if (menu.list.cur_y==0) EventPageRefresh(); |
if (menu.list.cur_y==1) EventRunEdit(); |
if (menu.list.cur_y==2) EventShowHistory(); |
if (menu.list.cur_y==3) EventShowDownloader(); |
if (menu.list.cur_y==4) EventShowInfo(); |
if (menu.list.cur_y==3) EventShowInfo(); |
menu.list.cur_y = 0; |
} |
} |
393,14 → 391,6 |
EventOpenAddress(history.current()); |
} |
void EventShowDownloader() |
{ |
if (!downloader_opened) { |
downloader_edit = NULL; |
CreateThread(#Downloader,#downloader_stak+4092); |
} |
} |
/* ------------------------------------------- */ |
/programs/cmm/aelia/buidin_pages/about.htm |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/cmm/browser/WebView.c |
---|
565,4 → 565,6 |
return; |
} |
char downloader_stak[4096]; |
stop: |
/programs/cmm/browser/download_manager.h |
---|
3,7 → 3,7 |
#define START_DOWNLOADING " ç âì § ª çªã" |
#define STOP_DOWNLOADING "áâ ®¢¨âì" |
#define SHOW_IN_FOLDER "®ª § âì ¢ ¯ ¯ª¥" |
#define OPEN_FILE_TEXT "âªàëâì ä ©«" |
#define OPEN_FILE "âªàëâì ä ©«" |
#define FILE_SAVED_AS "'¥¥¤¦¥à § £à㧮ª\n ©« á®åà ¥ ª ª " |
#define KB_RECEIVED " ¯®«ã祮" |
#else |
11,11 → 11,11 |
#define START_DOWNLOADING "Start downloading" |
#define STOP_DOWNLOADING "Stop downloading" |
#define SHOW_IN_FOLDER "Show in folder" |
#define OPEN_FILE_TEXT "Open file" |
#define OPEN_FILE "Open file" |
#define FILE_SAVED_AS "'Download manager\nFile saved as " |
#define KB_RECEIVED " received" |
#endif |
char save_to[4096] = "/tmp0/1/Downloads"; |
char save_to[4096] = "/tmp0/1/Downloads/"; |
proc_info DL_Form; |
char downloader_edit[10000]; |
25,7 → 25,6 |
progress_bar pb = {0, 170, 51, 225, 12, 0, 0, 100, 0xFFFfff, 0x74DA00, 0x9F9F9F}; |
byte downloader_opened; |
char downloader_stak[4096]; |
void Downloader() |
81,11 → 80,9 |
} |
if (downloader.state == STATE_COMPLETED) |
{ |
if (!dir_exists(#save_to)) CreateDir(#save_to); |
strcpy(#filepath, #save_to); |
chrcat(#filepath, '/'); |
strcat(#filepath, #downloader_edit+strrchr(#downloader_edit, '/')); |
if (WriteFile(downloader.data_downloaded_size, downloader.bufpointer, #filepath)==0) |
strcat(#filepath, #save_to+strrchr(#save_to, '/')); |
if (WriteFile(downloader.bufsize, downloader.bufpointer, #filepath)==0) |
sprintf(#notify_message, "%s%s%s",FILE_SAVED_AS,#filepath,"' -Dt"); |
else |
sprintf(#notify_message, "%s%s%s","'Download manager\nError! Can\96t save file as ",#filepath,"' -Et"); |
125,7 → 122,7 |
if (downloader.state == STATE_COMPLETED) |
{ |
DrawCaptButton(cleft+140, 50, 110, 27, 305, system.color.work_button, system.color.work_button_text, SHOW_IN_FOLDER); |
DrawCaptButton(cleft+260, 50, 120, 27, 306, system.color.work_button, system.color.work_button_text, OPEN_FILE_TEXT); |
DrawCaptButton(cleft+260, 50, 120, 27, 306, system.color.work_button, system.color.work_button_text, OPEN_FILE); |
} |
WriteText(cleft, ed.top + 4, 0x80, system.color.work_text, "URL:"); |
ed.left = strlen("URL:")*6 + 10 + cleft; |
/programs/cmm/browser/http_downloader.h |
---|
0,0 → 1,66 |
enum { |
STATE_NOT_STARTED, |
STATE_IN_PROGRESS, |
STATE_COMPLETED |
}; |
struct DOWNLOADER { |
int data_downloaded_size, data_full_size; |
dword bufpointer, bufsize; |
byte state; |
dword http_transfer; |
dword Start(); |
void Stop(); |
void Completed(); |
int MonitorProgress(); |
} downloader; |
dword DOWNLOADER::Start(dword _url) |
{ |
state = STATE_IN_PROGRESS; |
http_get stdcall (_url, 0, 0, #accept_language); |
http_transfer = EAX; |
return http_transfer; |
} |
void DOWNLOADER::Stop() |
{ |
state = STATE_NOT_STARTED; |
if (http_transfer!=0) |
{ |
EAX = http_transfer; |
EAX = EAX.http_msg.content_ptr; // get pointer to data |
$push EAX // save it on the stack |
http_free stdcall (http_transfer); // abort connection |
$pop EAX |
mem_Free(EAX); // free data |
http_transfer=0; |
bufsize = 0; |
bufpointer = mem_Free(bufpointer); |
} |
data_downloaded_size = data_full_size = 0; |
} |
void DOWNLOADER::Completed() |
{ |
state = STATE_COMPLETED; |
ESI = http_transfer; |
bufpointer = ESI.http_msg.content_ptr; |
bufsize = ESI.http_msg.content_received; |
http_free stdcall (http_transfer); |
http_transfer=0; |
} |
int DOWNLOADER::MonitorProgress() |
{ |
dword receive_result; |
if (http_transfer <= 0) return false; |
http_receive stdcall (http_transfer); |
receive_result = EAX; |
EDI = http_transfer; |
data_full_size = EDI.http_msg.content_length; |
data_downloaded_size = EDI.http_msg.content_received; |
if (receive_result == 0) Completed(); |
return true; |
} |