3,8 → 3,6 |
#include "../lib/gui.h" |
#include "../lib/copyf.h" |
|
#include "../lib/obj/libini.h" |
#include "../lib/obj/libimg.h" |
#include "../lib/obj/http.h" |
#include "../lib/obj/network.h" |
|
12,47 → 10,50 |
|
bool install_complete = false; |
_http http; |
dword unimg_id; |
|
#define WINW 460 |
#define WINH 380 |
#define WINH 330 |
|
//#define LANG_RUS 1 |
|
#ifdef LANG_RUS |
#define T_WINDOW_TITLE "« © ®¡®¢«¥¨¥ KolibriOS" |
#define T_TITLE_H1 "
" |
#define T_TITLE_H1 "« © ®¡®¢«¥¨¥" |
#define T_INTRO " ®¥ ¯à¨«®¦¥¨¥ áª ç ¥â ¯®á«¥¤îî ¢¥àá¨î KolibriOS ¨ à ᯠªã¥â ¥¥ RAM-¤¨áª. ਠí⮬ ï¤à® ¥ ¡ã¤¥â ¯¥à¥§ ¯ã饮, ¤«ï í⮣® ¥®¡å®¤¨¬® á®åà ¨âì ®¡à § ¨ ¯¥à¥§ £à㧨âáï. ®¦ «ã©áâ , § ªà®©â¥ ¢á¥ ®âªàëâë¥ ¯à¨«®¦¥¨ï ¯¥à¥¤ ç «®¬ ®¡®¢«¥¨ï. |
: ᥠ¨§¬¥ë¥ ä ©«ë RAM-¤¨áª¥ ¡ã¤ãâ ¯¥à¥§ ¯¨á ë!"; |
#define T_INSTALL "¡®¢¨âì" |
#define T_COMPLETE "¡®¢«¥¨¥ § ¢¥à襮" |
#define T_DOWNLOADING "ª 稢 î ᢥ¦¨© ®¡à § kolibri.img..." |
#define T_UNPACKING " ᯠª®¢ë¢ î ¨ ª®¯¨àãî ä ©«ë..." |
#define T_COMPLETE "¡®¢«¥¨¥ ãá¯¥è® § ¢¥à襮." |
#define T_EXIT "ë室" |
#define IMG_URL "http://builds.kolibrios.org/rus/data/data/kolibri.img" |
#define KS "®åà ¨âì áâனª¨" |
#define checkbox_h 190 |
#else |
#define T_WINDOW_TITLE "KolibriOS Online Updater" |
#define T_TITLE_H1 "ONLINE UPDATE" |
#define T_TITLE_H1 "Online Updater" |
#define T_INTRO "This app will download the latest KolibriOS dirsto and update your RAM-disk with it. Kernel won't be restarted. |
Please close all opened apps before start. |
Note that all changes on RAM-disk will be lost."; |
#define T_INSTALL "Update" |
#define T_COMPLETE "Update complete" |
#define T_DOWNLOADING "Downloading the latest kolibri.img..." |
#define T_UNPACKING "Unpacking and copying files..." |
#define T_COMPLETE "Update complete successfully." |
#define T_EXIT "Exit" |
#define IMG_URL "http://builds.kolibrios.org/eng/data/data/kolibri.img" |
#define KS "Keep settings folder" |
#define checkbox_h 210 |
#endif |
char accept_language[]="en"; //not used, necessary for http.get() |
void Operation_Draw_Progress(dword f) {} //not used, necessary for copyf() |
|
checkbox keep_settings = { KS, true }; |
sensor progress = { 40, WINH-70, WINW-80, 20 }; |
|
void main() |
{ |
int btn; |
sensor progress; |
load_dll(libimg, #libimg_init,1); |
load_dll(libHTTP, #http_lib_init,1); |
SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP); |
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_STACK); |
loop() switch(@WaitEventTimeout(300)) |
{ |
78,23 → 79,7 |
|
case evReDraw: |
_DRAW_WINDOW: |
sc.get(); |
DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2, |
WINW+9,WINH+skin_height,0x34,sc.work,T_WINDOW_TITLE,0); |
WriteText(30, 20, 0x81, 0xEC008C, T_TITLE_H1); |
if (!install_complete) { |
DrawTextViewArea(30, 50, WINW-60, WINH-80, T_INTRO, -1, sc.work_text); |
progress.set_size(30, WINH-130, WINW-60, 20); |
if (http.transfer<=0) { |
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, 9, 0x0092D8, 0xFFFfff, T_INSTALL); |
keep_settings.draw(30, WINH - checkbox_h); |
} |
} else { |
DrawIcon32(WINW-32/2, 140, sc.work, 49); |
WriteTextCenter(0,185, WINW, sc.work_text, T_COMPLETE); |
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, 2, |
0x0092D8, 0xFFFfff, T_EXIT); |
} |
draw_window(); |
|
case evNetwork: |
if (http.transfer <= 0) break; |
112,6 → 97,37 |
} |
} |
|
void draw_window() |
{ |
sc.get(); |
DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2, |
WINW+9,WINH+skin_height,0x34,sc.work,T_WINDOW_TITLE,0); |
WriteText(30, 20, 0x91, 0xEC008C, T_TITLE_H1); |
if (!install_complete) { |
if (GetProcessSlot(unimg_id)) { |
//UNPACKING |
draw_icon_32(WINW-32/2, 140, sc.work, 89); |
WriteTextCenter(0, 185, WINW, sc.work_text, T_UNPACKING); |
} else if (http.transfer<=0) { |
//INTRO |
DrawTextViewArea(30, 65, WINW-60, WINH-80, T_INTRO, -1, sc.work_text); |
DrawCaptButton(WINW-160, WINH-70, 110, 28, 9, 0x0092D8, 0xFFFfff, T_INSTALL); |
keep_settings.draw(30, WINH-65); |
} else { |
//DOWNLOADING |
draw_icon_32(WINW-32/2, 140, sc.work, 51); |
WriteTextCenter(0, 185, WINW, sc.work_text, T_DOWNLOADING); |
progress.draw_wrapper(); |
} |
} else { |
//COMPLETE |
draw_icon_32(WINW-32/2, 140, sc.work, 49); |
WriteTextCenter(0, 185, WINW, sc.work_text, T_COMPLETE); |
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, 2, |
0x0092D8, 0xFFFfff, T_EXIT); |
} |
} |
|
dword GetFreeSpaceOfRamdisk() |
{ |
dword rdempty = malloc(1440*1024); |
142,7 → 158,7 |
|
void EventDownloadComplete() |
{ |
dword unimg_id, slot_n; |
dword slot_n; |
signed space_delta; |
int i=0; |
|
153,18 → 169,19 |
char exract_param[64]; |
char backup_settings[64]; |
|
do { sprintf(#osupdate, "/tmp0/1/osupdate%d", i); i++; |
do { miniprintf(#osupdate, "/tmp0/1/osupdate%d", i); i++; |
} while (dir_exists(#osupdate)); |
CreateDir(#osupdate); |
|
sprintf(#latest, "%s/latest", #osupdate); |
sprintf(#backup, "%s/rdbackup", #osupdate); |
sprintf(#combined, "%s/combined", #osupdate); |
sprintf(#backup_settings, "%s/settings", #backup); |
sprintf(#exract_param, "/tmp0/1/latest.img %s -e", #latest); |
miniprintf(#latest, "%s/latest", #osupdate); |
miniprintf(#backup, "%s/rdbackup", #osupdate); |
miniprintf(#combined, "%s/combined", #osupdate); |
miniprintf(#backup_settings, "%s/settings", #backup); |
miniprintf(#exract_param, "/tmp0/1/latest.img %s -e", #latest); |
|
unimg_id = RunProgram("/sys/unimg", #exract_param); |
draw_window(); |
|
unimg_id = RunProgram("/sys/unimg", #exract_param); |
do { |
slot_n = GetProcessSlot(unimg_id); |
pause(10); |
172,7 → 189,7 |
|
space_delta = CheckFreeSpace(#latest, #combined); |
if (space_delta<0) { |
sprintf(#param, "'Not enought free space! You need %d KB more.'E", -space_delta); |
miniprintf(#param, "'Not enought free space! You need %d KB more.'E", -space_delta); |
notify(#param); |
} else { |
copyf("/sys", #backup); |