forked from KolibriOS/kolibrios
Separate Downloader from WebView into /sys/network/dl
+ Multi-threaded now! + Some small fixes git-svn-id: svn://kolibrios.org@8278 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
270aed5ffa
commit
894aad564d
@ -641,6 +641,7 @@ tup.append_table(img_files, {
|
|||||||
{"GAMES/MINE", PROGS .. "/games/mine/trunk/mine"},
|
{"GAMES/MINE", PROGS .. "/games/mine/trunk/mine"},
|
||||||
{"MEDIA/PIXIE", PROGS .. "/cmm/pixie2/pixie.com"},
|
{"MEDIA/PIXIE", PROGS .. "/cmm/pixie2/pixie.com"},
|
||||||
{"MEDIA/ICONEDIT", PROGS .. "/cmm/iconedit/iconedit.com"},
|
{"MEDIA/ICONEDIT", PROGS .. "/cmm/iconedit/iconedit.com"},
|
||||||
|
{"NETWORK/DL", PROGS .. "/cmm/downloader/dl.com"},
|
||||||
{"NETWORK/WEBVIEW", PROGS .. "/cmm/browser/WebView.com"},
|
{"NETWORK/WEBVIEW", PROGS .. "/cmm/browser/WebView.com"},
|
||||||
})
|
})
|
||||||
tup.append_table(extra_files, {
|
tup.append_table(extra_files, {
|
||||||
|
@ -30,14 +30,15 @@
|
|||||||
#include "..\lib\patterns\toolbar_button.h"
|
#include "..\lib\patterns\toolbar_button.h"
|
||||||
#include "..\lib\patterns\restart_process.h"
|
#include "..\lib\patterns\restart_process.h"
|
||||||
|
|
||||||
|
char editbox_icons[] = FROM "res/editbox_icons.raw";
|
||||||
|
|
||||||
#define URL_SIZE 4000
|
#define URL_SIZE 4000
|
||||||
|
|
||||||
char version[]="WebView 2.65b";
|
char version[]="WebView 2.66";
|
||||||
|
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "show_src.h"
|
#include "show_src.h"
|
||||||
#include "download_manager.h"
|
|
||||||
|
|
||||||
bool debug_mode = false;
|
bool debug_mode = false;
|
||||||
|
|
||||||
@ -101,8 +102,6 @@ char editURL[URL_SIZE+1];
|
|||||||
edit_box address_box = {, PADDING+TSZE*2+PADDING+6, PADDING+3, 0xffffff,
|
edit_box address_box = {, PADDING+TSZE*2+PADDING+6, PADDING+3, 0xffffff,
|
||||||
0x94AECE, 0xffffff, 0xffffff,0x10000000,URL_SIZE-2,#editURL,0,,19,19};
|
0x94AECE, 0xffffff, 0xffffff,0x10000000,URL_SIZE-2,#editURL,0,,19,19};
|
||||||
|
|
||||||
char editbox_icons[] = FROM "editbox_icons.raw";
|
|
||||||
|
|
||||||
dword shared_url;
|
dword shared_url;
|
||||||
|
|
||||||
dword http_get_type;
|
dword http_get_type;
|
||||||
@ -120,17 +119,10 @@ void LoadLibraries()
|
|||||||
|
|
||||||
void HandleParam()
|
void HandleParam()
|
||||||
{
|
{
|
||||||
if (param) {
|
if (!param) {
|
||||||
if (!strncmp(#param, "-download_and_exit ", 19)) {
|
history.add(URL_SERVICE_HOMEPAGE);
|
||||||
download_and_exit = true;
|
} else {
|
||||||
strcpy(#downloader_edit, #param+19);
|
if (!strncmp(#param, "-source ", 8)) {
|
||||||
Downloader();
|
|
||||||
ExitProcess();
|
|
||||||
} else if (!strncmp(#param, "-download ", 10)) {
|
|
||||||
strcpy(#downloader_edit, #param+10);
|
|
||||||
Downloader();
|
|
||||||
ExitProcess();
|
|
||||||
} else if (!strncmp(#param, "-source ", 8)) {
|
|
||||||
source_mode = true;
|
source_mode = true;
|
||||||
history.add(#param + 8);
|
history.add(#param + 8);
|
||||||
} else if (!strncmp(#param, "-new ", 5)) {
|
} else if (!strncmp(#param, "-new ", 5)) {
|
||||||
@ -144,8 +136,6 @@ void HandleParam()
|
|||||||
ExitProcess();
|
ExitProcess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
history.add(URL_SERVICE_HOMEPAGE);
|
|
||||||
}
|
}
|
||||||
shared_url = memopen(#webview_shared, URL_SIZE+1, SHM_CREATE + SHM_WRITE);
|
shared_url = memopen(#webview_shared, URL_SIZE+1, SHM_CREATE + SHM_WRITE);
|
||||||
ESDWORD[shared_url] = '\0';
|
ESDWORD[shared_url] = '\0';
|
||||||
@ -155,7 +145,6 @@ void main()
|
|||||||
{
|
{
|
||||||
int i, redirect_count=0;
|
int i, redirect_count=0;
|
||||||
LoadLibraries();
|
LoadLibraries();
|
||||||
CreateDir("/tmp0/1/Downloads");
|
|
||||||
//CreateDir("/tmp0/1/WebView_Cache");
|
//CreateDir("/tmp0/1/WebView_Cache");
|
||||||
HandleParam();
|
HandleParam();
|
||||||
WB1.list.SetFont(8, 14, 10011000b);
|
WB1.list.SetFont(8, 14, 10011000b);
|
||||||
@ -438,10 +427,7 @@ void ProcessEvent(dword id__)
|
|||||||
OpenPage(URL_SERVICE_HISTORY);
|
OpenPage(URL_SERVICE_HISTORY);
|
||||||
return;
|
return;
|
||||||
case DOWNLOAD_MANAGER:
|
case DOWNLOAD_MANAGER:
|
||||||
if (!downloader_opened) {
|
EventOpenDownloader("");
|
||||||
downloader_edit = NULL;
|
|
||||||
CreateThread(#Downloader,#downloader_stak+4092);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
case UPDATE_BROWSER:
|
case UPDATE_BROWSER:
|
||||||
EventUpdateBrowser();
|
EventUpdateBrowser();
|
||||||
@ -462,11 +448,7 @@ void ProcessEvent(dword id__)
|
|||||||
notify("'URL copied to clipboard'O");
|
notify("'URL copied to clipboard'O");
|
||||||
return;
|
return;
|
||||||
case DOWNLOAD_LINK_CONTENTS:
|
case DOWNLOAD_LINK_CONTENTS:
|
||||||
if (!downloader_opened) {
|
EventOpenDownloader( GetAbsoluteActiveURL() );
|
||||||
id__ = GetAbsoluteActiveURL();
|
|
||||||
strcpy(#downloader_edit, id__);
|
|
||||||
CreateThread(#Downloader,#downloader_stak+4092);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
case OPEN_FILE:
|
case OPEN_FILE:
|
||||||
EventOpenDialog();
|
EventOpenDialog();
|
||||||
@ -594,10 +576,10 @@ void OpenPage(dword _open_URL)
|
|||||||
|
|
||||||
} else if (!strncmp(#new_url,"WebView:",8)) {
|
} else if (!strncmp(#new_url,"WebView:",8)) {
|
||||||
//INTERNAL PAGE
|
//INTERNAL PAGE
|
||||||
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buidin_page_home, sizeof(buidin_page_home));
|
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home));
|
||||||
else if (streq(#new_url, URL_SERVICE_HELP)) LoadInternalPage(#buidin_page_help, sizeof(buidin_page_help));
|
else if (streq(#new_url, URL_SERVICE_HELP)) LoadInternalPage(#buildin_page_help, sizeof(buildin_page_help));
|
||||||
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
||||||
else LoadInternalPage(#buidin_page_error, sizeof(buidin_page_error));
|
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
|
|
||||||
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
||||||
//WEB PAGE
|
//WEB PAGE
|
||||||
@ -618,7 +600,7 @@ void OpenPage(dword _open_URL)
|
|||||||
|
|
||||||
if (!http.transfer) {
|
if (!http.transfer) {
|
||||||
StopLoading();
|
StopLoading();
|
||||||
LoadInternalPage(#buidin_page_error, sizeof(buidin_page_error));
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//LOCAL PAGE
|
//LOCAL PAGE
|
||||||
@ -630,11 +612,16 @@ void OpenPage(dword _open_URL)
|
|||||||
strcpy(#new_url, "/tmp0/1/temp/word/document.xml");
|
strcpy(#new_url, "/tmp0/1/temp/word/document.xml");
|
||||||
}
|
}
|
||||||
if (!GetLocalFileData(#new_url)) {
|
if (!GetLocalFileData(#new_url)) {
|
||||||
LoadInternalPage(#buidin_page_error, sizeof(buidin_page_error));
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dword EventOpenDownloader(dword _url)
|
||||||
|
{
|
||||||
|
//char download_params[URL_SIZE+50];
|
||||||
|
return RunProgram("/sys/network/dl", _url);
|
||||||
|
}
|
||||||
|
|
||||||
bool EventClickAnchor()
|
bool EventClickAnchor()
|
||||||
{
|
{
|
||||||
@ -720,11 +707,7 @@ void EventClickLink(dword _target)
|
|||||||
if (UrlExtIs(#new_url,".png")==true) || (UrlExtIs(#new_url,".jpg")==true)
|
if (UrlExtIs(#new_url,".png")==true) || (UrlExtIs(#new_url,".jpg")==true)
|
||||||
|| (UrlExtIs(#new_url,".zip")==true) || (UrlExtIs(#new_url,".kex")==true) || (UrlExtIs(#new_url,".pdf")==true)
|
|| (UrlExtIs(#new_url,".zip")==true) || (UrlExtIs(#new_url,".kex")==true) || (UrlExtIs(#new_url,".pdf")==true)
|
||||||
|| (UrlExtIs(#new_url,".7z")==true) {
|
|| (UrlExtIs(#new_url,".7z")==true) {
|
||||||
if (!downloader_opened) {
|
EventOpenDownloader(#new_url);
|
||||||
strcpy(#downloader_edit, #new_url);
|
|
||||||
CreateThread(#Downloader,#downloader_stak+4092);
|
|
||||||
}
|
|
||||||
else notify("'WebView\nPlease, start a new download only when previous ended.'Et");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -747,7 +730,7 @@ void EventSubmitOmnibox()
|
|||||||
|
|
||||||
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
||||||
if (!_bufdata) || (!_in_bufsize) {
|
if (!_bufdata) || (!_in_bufsize) {
|
||||||
LoadInternalPage(#buidin_page_error, sizeof(buidin_page_error));
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
} else {
|
} else {
|
||||||
WB1.list.first = 0; //scroll page to the top
|
WB1.list.first = 0; //scroll page to the top
|
||||||
DrawOmnibox();
|
DrawOmnibox();
|
||||||
@ -892,7 +875,7 @@ void EventUpdateBrowser()
|
|||||||
|
|
||||||
draw_window();
|
draw_window();
|
||||||
|
|
||||||
downloader_id = RunProgram(#program_path, #update_param);
|
downloader_id = EventOpenDownloader(#update_param);
|
||||||
do {
|
do {
|
||||||
slot_n = GetProcessSlot(downloader_id);
|
slot_n = GetProcessSlot(downloader_id);
|
||||||
pause(10);
|
pause(10);
|
||||||
|
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 998 B |
@ -1,7 +1,7 @@
|
|||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
char buidin_page_error[] = FROM "buidin_pages\\page_not_found_ru.htm""\0";
|
char buildin_page_error[] = FROM "res/page_not_found_ru.htm""\0";
|
||||||
char buidin_page_home[] = FROM "buidin_pages\\homepage_ru.htm""\0";
|
char buildin_page_home[] = FROM "res/homepage_ru.htm""\0";
|
||||||
char buidin_page_help[] = FROM "buidin_pages\\help_ru.htm""\0";
|
char buildin_page_help[] = FROM "res/help_ru.htm""\0";
|
||||||
char accept_language[]= "Accept-Language: ru\n";
|
char accept_language[]= "Accept-Language: ru\n";
|
||||||
char rmb_menu[] =
|
char rmb_menu[] =
|
||||||
"<EFBFBD>®á¬®âà¥âì ¨á室¨ª|Ctrl+U
|
"<EFBFBD>®á¬®âà¥âì ¨á室¨ª|Ctrl+U
|
||||||
@ -22,16 +22,16 @@ char link_menu[] =
|
|||||||
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
||||||
char loading_text[] = "‡ £à㧪 ...";
|
char loading_text[] = "‡ £à㧪 ...";
|
||||||
|
|
||||||
char update_param[] = "-download_and_exit http://builds.kolibrios.org/rus/data/programs/cmm/browser/WebView.com";
|
char update_param[] = "-exit http://builds.kolibrios.org/rus/data/programs/cmm/browser/WebView.com";
|
||||||
char update_download_error[] = "'WebView\nŽè¨¡ª ¯à¨ ¯®«ã票¨ ®¡®¢«¥¨©!' -tE";
|
char update_download_error[] = "'WebView\nŽè¨¡ª ¯à¨ ¯®«ã票¨ ®¡®¢«¥¨©!' -tE";
|
||||||
char update_ok[] = "'WebView\n<EFBFBD>à ã§¥à ¡ë« ãá¯¥è® ®¡®¢«¥!' -tO";
|
char update_ok[] = "'WebView\n<EFBFBD>à ã§¥à ¡ë« ãá¯¥è® ®¡®¢«¥!' -tO";
|
||||||
char update_is_current[] = "'WebView\n‚ë 㦥 ¨á¯®«ì§ã¥â¥ ¯®á«¥¤îî ¢¥àá¨î.' -tI";
|
char update_is_current[] = "'WebView\n‚ë 㦥 ¨á¯®«ì§ã¥â¥ ¯®á«¥¤îî ¢¥àá¨î.' -tI";
|
||||||
char update_can_not_copy[] = "'WebView\n<EFBFBD>¥ ¬®£ã ¯¥à¥¬¥áâ¨âì ®¢ãî ¢¥àá¨î ¨§ ¯ ¯ª¨ Downloads Ramdisk. ‚®§¬®¦®, ¥ ¤®áâ â®ç® ¬¥áâ .' -tE";
|
char update_can_not_copy[] = "'WebView\n<EFBFBD>¥ ¬®£ã ¯¥à¥¬¥áâ¨âì ®¢ãî ¢¥àá¨î ¨§ ¯ ¯ª¨ Downloads Ramdisk. ‚®§¬®¦®, ¥ ¤®áâ â®ç® ¬¥áâ .' -tE";
|
||||||
char clear_cache_ok[] = "'WebView\nŠíè ®ç¨é¥.' -tI";
|
char clear_cache_ok[] = "'WebView\nŠíè ®ç¨é¥.' -tI";
|
||||||
#else
|
#else
|
||||||
char buidin_page_error[] = FROM "buidin_pages\\page_not_found_en.htm""\0";
|
char buildin_page_error[] = FROM "res/page_not_found_en.htm""\0";
|
||||||
char buidin_page_home[] = FROM "buidin_pages\\homepage_en.htm""\0";
|
char buildin_page_home[] = FROM "res/homepage_en.htm""\0";
|
||||||
char buidin_page_help[] = FROM "buidin_pages\\help_en.htm""\0";
|
char buildin_page_help[] = FROM "res/help_en.htm""\0";
|
||||||
char accept_language[]= "Accept-Language: en\n";
|
char accept_language[]= "Accept-Language: en\n";
|
||||||
char rmb_menu[] =
|
char rmb_menu[] =
|
||||||
"View source|Ctrl+U
|
"View source|Ctrl+U
|
||||||
@ -51,7 +51,7 @@ Open in new window
|
|||||||
Copy link
|
Copy link
|
||||||
Download link contents";
|
Download link contents";
|
||||||
char loading_text[] = "Loading...";
|
char loading_text[] = "Loading...";
|
||||||
char update_param[] = "-download_and_exit http://builds.kolibrios.org/eng/data/programs/cmm/browser/WebView.com";
|
char update_param[] = "-exit http://builds.kolibrios.org/eng/data/programs/cmm/browser/WebView.com";
|
||||||
char update_download_error[] = "'WebView\nError receiving an up to date information!' -tE";
|
char update_download_error[] = "'WebView\nError receiving an up to date information!' -tE";
|
||||||
char update_ok[] = "'WebView\nThe browser has been updated!' -tO";
|
char update_ok[] = "'WebView\nThe browser has been updated!' -tO";
|
||||||
char update_is_current[] = "'WebView\nThe browser is up to date.' -tI";
|
char update_is_current[] = "'WebView\nThe browser is up to date.' -tI";
|
||||||
|
38
programs/cmm/downloader/const.h
Normal file
38
programs/cmm/downloader/const.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
//Copyright 2020 by Leency
|
||||||
|
|
||||||
|
#ifndef AUTOBUILD
|
||||||
|
#include "lang.h--"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef LANG_RUS
|
||||||
|
#define DL_WINDOW_HEADER "Œ¥¥¤¦¥à § £à㧮ª"
|
||||||
|
#define START_DOWNLOADING "<22> ç âì § ª çªã"
|
||||||
|
#define STOP_DOWNLOADING "Žâ¬¥ "
|
||||||
|
#define SHOW_IN_FOLDER "<22>®ª § âì ¢ ¯ ¯ª¥"
|
||||||
|
#define OPEN_FILE_TEXT "Žâªàëâì ä ©«"
|
||||||
|
#define FILE_SAVED_AS "'Œ¥¥¤¦¥à § £à㧮ª\n” ©« á®åà ¥ ª ª %s' -Dt"
|
||||||
|
#define FILE_NOT_SAVED "'Œ¥¥¤¦¥à § £à㧮ª\nŽè¨¡ª ! ” ©« ¥ ¬®¦¥â ¡ëâì å®à ¥ ª ª\n%s' -Et"
|
||||||
|
#define KB_RECEIVED "ˆ¤¥â ᪠稢 ¨¥... %s ¯®«ã祮"
|
||||||
|
#define T_ERROR_STARTING_DOWNLOAD "'<27>¥¢®§¬®¦® ç âì ᪠稢 ¨¥.\n<>®¦ «ã©áâ , ¯à®¢¥àì⥠¢¢¥¤¥ë© ¯ãâì ¨ ᮥ¤¨¥¨¥ á ˆâ¥à¥â®¬.' -E"
|
||||||
|
char accept_language[]= "Accept-Language: ru\n";
|
||||||
|
#else
|
||||||
|
#define DL_WINDOW_HEADER "Download Manager"
|
||||||
|
#define START_DOWNLOADING "Start downloading"
|
||||||
|
#define STOP_DOWNLOADING "Cancel"
|
||||||
|
#define SHOW_IN_FOLDER "Show in folder"
|
||||||
|
#define OPEN_FILE_TEXT "Open file"
|
||||||
|
#define FILE_SAVED_AS "'Download manager\nFile saved as %s' -Dt"
|
||||||
|
#define FILE_NOT_SAVED "'Download manager\nError! Can\96t save file as %s' -Et"
|
||||||
|
#define KB_RECEIVED "Downloading... %s received"
|
||||||
|
#define T_ERROR_STARTING_DOWNLOAD "'Error while starting download process.\nPlease, check entered path and Internet connection.' -E"
|
||||||
|
char accept_language[]= "Accept-Language: en\n";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define GAPX 15
|
||||||
|
#define WIN_W 580
|
||||||
|
#define WIN_H 100
|
||||||
|
|
||||||
|
#define URL_SIZE 4000
|
||||||
|
|
||||||
|
char save_to[] = "/tmp0/1/Downloads";
|
||||||
|
char dl_shared[] = "DL";
|
@ -1,77 +1,70 @@
|
|||||||
|
//Copyright 2020 by Leency
|
||||||
|
|
||||||
|
#define MEMSIZE 1024 * 100
|
||||||
|
#include "../lib/gui.h"
|
||||||
|
#include "../lib/random.h"
|
||||||
|
#include "../lib/obj/box_lib.h"
|
||||||
|
#include "../lib/obj/http.h"
|
||||||
|
#include "../lib/patterns/http_downloader.h"
|
||||||
|
|
||||||
|
#include "const.h"
|
||||||
|
|
||||||
DOWNLOADER downloader;
|
DOWNLOADER downloader;
|
||||||
|
|
||||||
#ifdef LANG_RUS
|
char downloader_edit[4000];
|
||||||
#define DL_WINDOW_HEADER "Œ¥¥¤¦¥à § £à㧮ª"
|
|
||||||
#define START_DOWNLOADING "<22> ç âì § ª çªã"
|
|
||||||
#define STOP_DOWNLOADING "Žáâ ®¢¨âì"
|
|
||||||
#define SHOW_IN_FOLDER "<22>®ª § âì ¢ ¯ ¯ª¥"
|
|
||||||
#define OPEN_FILE_TEXT "Žâªàëâì ä ©«"
|
|
||||||
#define FILE_SAVED_AS "'Œ¥¥¤¦¥à § £à㧮ª\n” ©« á®åà ¥ ª ª "
|
|
||||||
#define KB_RECEIVED "ˆ¤¥â ᪠稢 ¨¥... %s ¯®«ã祮"
|
|
||||||
#else
|
|
||||||
#define DL_WINDOW_HEADER "Download Manager"
|
|
||||||
#define START_DOWNLOADING "Start downloading"
|
|
||||||
#define STOP_DOWNLOADING "Stop downloading"
|
|
||||||
#define SHOW_IN_FOLDER "Show in folder"
|
|
||||||
#define OPEN_FILE_TEXT "Open file"
|
|
||||||
#define FILE_SAVED_AS "'Download manager\nFile saved as "
|
|
||||||
#define KB_RECEIVED "Downloading... %s received"
|
|
||||||
#endif
|
|
||||||
char save_to[4096] = "/tmp0/1/Downloads";
|
|
||||||
|
|
||||||
#define CONX 15
|
|
||||||
|
|
||||||
proc_info DL_Form;
|
|
||||||
char downloader_edit[10000];
|
|
||||||
char filepath[4096];
|
char filepath[4096];
|
||||||
edit_box ed = {NULL,57,20,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(downloader_edit)-2,#downloader_edit,0,ed_focus,19,19};
|
edit_box ed = {WIN_W-GAPX-GAPX,GAPX,20,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,
|
||||||
progress_bar pb = {0, CONX, 58, 350, 17, 0, 0, 100, 0xFFFfff, 0x74DA00, 0x9F9F9F};
|
sizeof(downloader_edit)-2,#downloader_edit,0,ed_focus,19,19};
|
||||||
//progress_bar pb = {0, 180, 55, 225, 12, 0, 0, 100, 0xFFFfff, 0x74DA00, 0x9F9F9F};
|
progress_bar pb = {0, GAPX, 58, 350, 17, 0, 0, 100, 0xFFFfff, 0x74DA00, 0x9F9F9F};
|
||||||
//progress_bar: value, left, top, width, height, style, min, max, back_color, progress_color, frame_color;
|
//progress_bar: value, left, top, width, height, style, min, max, back_color, progress_color, frame_color;
|
||||||
|
|
||||||
bool downloader_opened;
|
bool exit_when_done = false;
|
||||||
char downloader_stak[4096];
|
|
||||||
|
|
||||||
bool download_and_exit = false;
|
|
||||||
|
|
||||||
void Downloader()
|
void main()
|
||||||
{
|
{
|
||||||
|
dword shared_url;
|
||||||
|
load_dll(boxlib, #box_lib_init,0);
|
||||||
|
load_dll(libHTTP, #http_lib_init,1);
|
||||||
|
|
||||||
if (!dir_exists(#save_to)) CreateDir(#save_to);
|
if (!dir_exists(#save_to)) CreateDir(#save_to);
|
||||||
downloader_opened = true;
|
|
||||||
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK);
|
|
||||||
|
|
||||||
sc.get();
|
if (param) {
|
||||||
pb.frame_color = sc.work_dark;
|
if (!strncmp(#param, "-exit ", 6)) {
|
||||||
|
exit_when_done = true;
|
||||||
|
param += 6;
|
||||||
|
}
|
||||||
|
|
||||||
filepath[0] = NULL;
|
if (!strncmp(#param, "-mem", 5)) {
|
||||||
|
shared_url = memopen(#dl_shared, URL_SIZE+1, SHM_OPEN + SHM_WRITE);
|
||||||
downloader.Stop();
|
strcpy(#downloader_edit, shared_url);
|
||||||
|
} else {
|
||||||
|
strcpy(#downloader_edit, #param);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (downloader_edit[0]) StartDownloading(); else strcpy(#downloader_edit, "http://");
|
if (downloader_edit[0]) StartDownloading(); else strcpy(#downloader_edit, "http://");
|
||||||
ed.size = ed.pos = ed.shift = ed.shift_old = strlen(#downloader_edit);
|
ed.size = ed.pos = ed.shift = ed.shift_old = strlen(#downloader_edit);
|
||||||
|
|
||||||
loop() switch(WaitEvent())
|
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK);
|
||||||
|
@SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP);
|
||||||
|
loop() switch(@WaitEvent())
|
||||||
{
|
{
|
||||||
case evMouse:
|
case evMouse:
|
||||||
edit_box_mouse stdcall (#ed);
|
edit_box_mouse stdcall (#ed);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evButton:
|
case evButton:
|
||||||
Key_Scan(GetButtonID());
|
ProcessEvent(GetButtonID());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
GetKeys();
|
GetKeys();
|
||||||
edit_box_key stdcall(#ed);
|
edit_box_key stdcall(#ed);
|
||||||
if (key_scancode==SCAN_CODE_ENTER) Key_Scan(301);
|
if (key_scancode==SCAN_CODE_ENTER) ProcessEvent(301);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
DefineAndDrawWindow(215, 100, 580, 130, 0x74, sc.work, DL_WINDOW_HEADER, 0);
|
DrawWindow();
|
||||||
GetProcessInfo(#DL_Form, SelfInfo);
|
|
||||||
if (DL_Form.status_window>2) break;
|
|
||||||
if (DL_Form.height<120) MoveSize(OLD,OLD,OLD,120);
|
|
||||||
if (DL_Form.width<280) MoveSize(OLD,OLD,280,OLD);
|
|
||||||
DL_Draw_Window();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -87,38 +80,38 @@ void Downloader()
|
|||||||
if (downloader.state == STATE_COMPLETED)
|
if (downloader.state == STATE_COMPLETED)
|
||||||
{
|
{
|
||||||
SaveDownloadedFile();
|
SaveDownloadedFile();
|
||||||
if (download_and_exit) ExitProcess();
|
if (exit_when_done) ExitProcess();
|
||||||
StopDownloading();
|
StopDownloading();
|
||||||
DL_Draw_Window();
|
DrawWindow();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Key_Scan(int id)
|
void ProcessEvent(int id)
|
||||||
{
|
{
|
||||||
if (id==001) { downloader_opened=false; StopDownloading(); ExitProcess(); }
|
if (id==001) { StopDownloading(); ExitProcess(); }
|
||||||
if (id==301) && (downloader.httpd.transfer <= 0) StartDownloading();
|
if (id==301) && (downloader.httpd.transfer <= 0) StartDownloading();
|
||||||
if (id==302) StopDownloading();
|
if (id==302) StopDownloading();
|
||||||
if (id==305) RunProgram("/sys/File managers/Eolite", #save_to);
|
if (id==305) RunProgram("/sys/File managers/Eolite", #filepath);
|
||||||
if (id==306) {
|
if (id==306) {
|
||||||
SetCurDir(#save_to);
|
SetCurDir(#save_to);
|
||||||
RunProgram("/sys/@open", #filepath);
|
RunProgram("/sys/@open", #filepath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DL_Draw_Window()
|
void DrawWindow()
|
||||||
{
|
{
|
||||||
int but_x = 0;
|
int but_x = 0;
|
||||||
int but_y = 58;
|
int but_y = 58;
|
||||||
DrawBar(0,0, DL_Form.cwidth, DL_Form.cheight, sc.work);
|
|
||||||
DeleteButton(301);
|
sc.get();
|
||||||
DeleteButton(302);
|
pb.frame_color = sc.work_dark;
|
||||||
DeleteButton(305);
|
DefineAndDrawWindow(110 + random(300), 100 + random(300), WIN_W+9, WIN_H + 5 + skin_height, 0x34, sc.work, DL_WINDOW_HEADER, 0);
|
||||||
DeleteButton(306);
|
|
||||||
if (downloader.state == STATE_NOT_STARTED) || (downloader.state == STATE_COMPLETED)
|
if (downloader.state == STATE_NOT_STARTED) || (downloader.state == STATE_COMPLETED)
|
||||||
{
|
{
|
||||||
but_x = CONX + DrawStandartCaptButton(CONX, but_y, 301, START_DOWNLOADING);
|
but_x = GAPX + DrawStandartCaptButton(GAPX, but_y, 301, START_DOWNLOADING);
|
||||||
if (filepath[0])
|
if (filepath[0])
|
||||||
{
|
{
|
||||||
but_x += DrawStandartCaptButton(but_x, but_y, 305, SHOW_IN_FOLDER);
|
but_x += DrawStandartCaptButton(but_x, but_y, 305, SHOW_IN_FOLDER);
|
||||||
@ -127,11 +120,9 @@ void DL_Draw_Window()
|
|||||||
}
|
}
|
||||||
if (downloader.state == STATE_IN_PROGRESS)
|
if (downloader.state == STATE_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
DrawStandartCaptButton(DL_Form.width - 190, but_y, 302, STOP_DOWNLOADING);
|
DrawStandartCaptButton(WIN_W - 190, but_y, 302, STOP_DOWNLOADING);
|
||||||
DrawDownloading();
|
DrawDownloading();
|
||||||
}
|
}
|
||||||
WriteText(CONX, ed.top + 4, 0x90, sc.work_text, "URL:");
|
|
||||||
ed.width = DL_Form.cwidth - ed.left - CONX - 3;
|
|
||||||
ed.offset=0;
|
ed.offset=0;
|
||||||
DrawEditBox(#ed);
|
DrawEditBox(#ed);
|
||||||
}
|
}
|
||||||
@ -143,7 +134,7 @@ void StartDownloading()
|
|||||||
StopDownloading();
|
StopDownloading();
|
||||||
if (!strncmp(#downloader_edit,"https://",7)) {
|
if (!strncmp(#downloader_edit,"https://",7)) {
|
||||||
notify("'HTTPS for download is not supported, trying to download the file via HTTP' -W");
|
notify("'HTTPS for download is not supported, trying to download the file via HTTP' -W");
|
||||||
sprintf(#http_url, "http://%s", #downloader_edit+8);
|
miniprintf(#http_url, "http://%s", #downloader_edit+8);
|
||||||
if (!downloader.Start(#http_url)) {
|
if (!downloader.Start(#http_url)) {
|
||||||
notify("'Download failed.' -E");
|
notify("'Download failed.' -E");
|
||||||
StopDownloading();
|
StopDownloading();
|
||||||
@ -153,19 +144,19 @@ void StartDownloading()
|
|||||||
// notify("'Download failed.' -E");
|
// notify("'Download failed.' -E");
|
||||||
// StopDownloading();
|
// StopDownloading();
|
||||||
//}
|
//}
|
||||||
DL_Draw_Window();
|
DrawWindow();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!downloader.Start(#downloader_edit)) {
|
if (!downloader.Start(#downloader_edit)) {
|
||||||
if (download_and_exit) ExitProcess();
|
if (exit_when_done) ExitProcess();
|
||||||
notify("'Error while starting download process.\nPlease, check entered path and internet connection.' -E");
|
notify(T_ERROR_STARTING_DOWNLOAD);
|
||||||
StopDownloading();
|
StopDownloading();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ed.blur_border_color = 0xCACACA;
|
ed.blur_border_color = 0xCACACA;
|
||||||
ed.flags = 100000000000b;
|
ed.flags = 100000000000b;
|
||||||
pb.value = 0;
|
pb.value = 0;
|
||||||
DL_Draw_Window();
|
DrawWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -200,9 +191,8 @@ void CalculateSpeed()
|
|||||||
void DrawDownloading()
|
void DrawDownloading()
|
||||||
{
|
{
|
||||||
char bytes_received[70];
|
char bytes_received[70];
|
||||||
sprintf(#bytes_received, KB_RECEIVED, ConvertSizeToKb(downloader.httpd.content_received) );
|
miniprintf(#bytes_received, KB_RECEIVED, ConvertSizeToKb(downloader.httpd.content_received) );
|
||||||
DrawBar(CONX, pb.top + 22, pb.width, 16, sc.work);
|
WriteTextWithBg(GAPX, pb.top + 22, 0xD0, sc.work_text, #bytes_received, sc.work);
|
||||||
WriteText(CONX, pb.top + 22, 0x90, sc.work_text, #bytes_received);
|
|
||||||
//CalculateSpeed();
|
//CalculateSpeed();
|
||||||
progressbar_draw stdcall(#pb);
|
progressbar_draw stdcall(#pb);
|
||||||
}
|
}
|
||||||
@ -212,7 +202,7 @@ void StopDownloading()
|
|||||||
downloader.Stop();
|
downloader.Stop();
|
||||||
ed.blur_border_color = 0xFFFfff;
|
ed.blur_border_color = 0xFFFfff;
|
||||||
ed.flags = 10b;
|
ed.flags = 10b;
|
||||||
DL_Draw_Window();
|
DrawWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveDownloadedFile()
|
void SaveDownloadedFile()
|
||||||
@ -226,15 +216,27 @@ void SaveDownloadedFile()
|
|||||||
while (aux[strlen(#aux)-1] == '/') {
|
while (aux[strlen(#aux)-1] == '/') {
|
||||||
aux[strlen(#aux)-1] = 0;
|
aux[strlen(#aux)-1] = 0;
|
||||||
}
|
}
|
||||||
sprintf(#filepath, "%s/%s", #save_to, #aux+strrchr(#aux, '/'));
|
|
||||||
|
//miniprintf(#filepath, "%s/", #save_to);
|
||||||
|
strcpy(#filepath, #save_to);
|
||||||
|
chrcat(#filepath, '/');
|
||||||
|
strcat(#filepath, #aux+strrchr(#aux, '/'));
|
||||||
|
|
||||||
for (i=0; i<strlen(#filepath); i++) if(filepath[i]==':')||(filepath[i]=='?')filepath[i]='-';
|
for (i=0; i<strlen(#filepath); i++) if(filepath[i]==':')||(filepath[i]=='?')filepath[i]='-';
|
||||||
|
|
||||||
if (CreateFile(downloader.httpd.content_received, downloader.bufpointer, #filepath)==0) {
|
if (CreateFile(downloader.httpd.content_received, downloader.bufpointer, #filepath)==0) {
|
||||||
sprintf(#notify_message, "%s%s%s",FILE_SAVED_AS,#filepath,"' -Dt");
|
miniprintf(#notify_message, FILE_SAVED_AS, #filepath);
|
||||||
} else {
|
} else {
|
||||||
sprintf(#notify_message, "%s%s%s","'Download manager\nError! Can\96t save file as ",#filepath,"' -Et");
|
miniprintf(#notify_message, FILE_NOT_SAVED, #filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!download_and_exit) notify(#notify_message);
|
/*
|
||||||
|
if (CreateFile(downloader.httpd.content_received, downloader.bufpointer, #filepath)==0) {
|
||||||
|
strcpy(#notify_message, "'Download complete' -Dt");
|
||||||
|
} else {
|
||||||
|
strcpy(#notify_message, "'Error saving downloaded file!' -Et");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!exit_when_done) notify(#notify_message);
|
||||||
}
|
}
|
@ -37,6 +37,7 @@ char logo[] = "
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define B_INSTALL 10
|
#define B_INSTALL 10
|
||||||
|
#define B_EXIT 11
|
||||||
|
|
||||||
bool install_complete = false;
|
bool install_complete = false;
|
||||||
|
|
||||||
@ -50,8 +51,8 @@ void main()
|
|||||||
{
|
{
|
||||||
case evButton:
|
case evButton:
|
||||||
btn = GetButtonID();
|
btn = GetButtonID();
|
||||||
if (btn == 1) ExitProcess();
|
if (btn == 1) || (B_EXIT == btn) ExitProcess();
|
||||||
if (btn == B_INSTALL) EventInstall();
|
if (B_INSTALL == btn) EventInstall();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
@ -96,7 +97,7 @@ void DrawInstallComplete()
|
|||||||
{
|
{
|
||||||
DrawIcon32(WINW-32/2, 140, sc.work, 49);
|
DrawIcon32(WINW-32/2, 140, sc.work, 49);
|
||||||
WriteTextCenter(0,185, WINW, sc.work_text, T_COMPLETE);
|
WriteTextCenter(0,185, WINW, sc.work_text, T_COMPLETE);
|
||||||
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, CLOSE_BTN,
|
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, B_EXIT,
|
||||||
0x0092D8, 0xFFFfff, T_EXIT);
|
0x0092D8, 0xFFFfff, T_EXIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -842,6 +842,16 @@ inline signed csshexdec(dword text)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void miniprintf(dword dst, format, insert_line)
|
||||||
|
{
|
||||||
|
dword in_pos = strchr(format, '%');
|
||||||
|
if (ESBYTE[in_pos+1] == 's') {
|
||||||
|
strlcpy(dst, format, in_pos - format);
|
||||||
|
strcat(dst, insert_line);
|
||||||
|
strcat(dst, in_pos+2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline cdecl int sprintf(dword buf, format,...)
|
inline cdecl int sprintf(dword buf, format,...)
|
||||||
{
|
{
|
||||||
#define END_ARGS 0xFF00FF //ARGS FUNCTION
|
#define END_ARGS 0xFF00FF //ARGS FUNCTION
|
||||||
|
Loading…
Reference in New Issue
Block a user