Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9438 → Rev 9439

/programs/cmm/misc/osupdate.c
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);