From 6649d8f84cd9a47eba5e229062c334d6b65ad42f Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sun, 17 May 2020 15:52:41 +0000 Subject: [PATCH] eskin: fix for KIV images located at /kolibrios and /usbhd drives, it checks is the file exists for 5 times with perioud 1 second fNav, kfar: add assoc dtp=skincfg cmm/osupdate: upload git-svn-id: svn://kolibrios.org@7938 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/common/File Managers/fNav/fnav.set | 2 +- data/common/File Managers/kfar.ini | 1 + programs/cmm/misc/osupdate.c | 148 ++++++++++++++++++++++ programs/system/eskin/trunk/eskin.asm | 2 +- programs/system/skincfg/trunk/skincfg.asm | 41 +----- 5 files changed, 155 insertions(+), 39 deletions(-) create mode 100644 programs/cmm/misc/osupdate.c diff --git a/data/common/File Managers/fNav/fnav.set b/data/common/File Managers/fNav/fnav.set index 4fb0f4e0d0..345dd6bd40 100644 --- a/data/common/File Managers/fNav/fnav.set +++ b/data/common/File Managers/fNav/fnav.set @@ -1 +1 @@ -/sys/TinyPad: asm, inc, txt, mac, log, dat /sys/media/kiv: gif, bmp, png, tga, jpg, ico, cur, tif, tiff, jpeg, ppm, pgm, pbm, pnm, pcx, wbmp, xcf /sys/Network/Webview: htm, html, mht, xhtml, docx, url /sys/fb2read: fb2 /sys/develop/cObj: obj /sys/skincfg: skn /sys/rtfRead: rtf /sys/develop/t_edit: cpp, h, c, c--, pas, set, ext, ini /sys/media/mgb: mgb /sys/media/pixie: mp3 /sys/media/AC97SND: wav, xm /sys/media/MIDAMP: mid /sys/media/listplay: m3u, lap, asf /sys/shell: sh /sys/3d/view3ds: 3ds, asc /sys/graph: cvs, grf /sys/unz: zip, 7z /sys/unimg: img /sys/table: csv /kolibrios/media/updf: pdf /kolibrios/media/fplay: avi, mpg, mov, flv, wmv, vob, mkv, mp4, mpeg, divx, 3gp, webm /kolibrios/emul/zsnes: smc /kolibrios/emul/psx4all: mcr /kolibrios/emul/fceu/fceu: nes /kolibrios/emul/e80/e80: sna /kolibrios/emul/gameboy: gb, gbc /kolibrios/emul/pokemini: min /sys/develop/heed: \ No newline at end of file +/sys/TinyPad: asm, inc, txt, mac, log, dat /sys/media/kiv: gif, bmp, png, tga, jpg, ico, cur, tif, tiff, jpeg, ppm, pgm, pbm, pnm, pcx, wbmp, xcf /sys/Network/Webview: htm, html, mht, xhtml, docx, url /sys/fb2read: fb2 /sys/develop/cObj: obj /sys/skincfg: skn, dtp /sys/rtfRead: rtf /sys/develop/t_edit: cpp, h, c, c--, pas, set, ext, ini /sys/media/mgb: mgb /sys/media/pixie: mp3 /sys/media/AC97SND: wav, xm /sys/media/MIDAMP: mid /sys/media/listplay: m3u, lap, asf /sys/shell: sh /sys/3d/view3ds: 3ds, asc /sys/graph: cvs, grf /sys/unz: zip, 7z /sys/unimg: img /sys/table: csv /kolibrios/media/updf: pdf /kolibrios/media/fplay: avi, mpg, mov, flv, wmv, vob, mkv, mp4, mpeg, divx, 3gp, webm /kolibrios/emul/zsnes: smc /kolibrios/emul/psx4all: mcr /kolibrios/emul/fceu/fceu: nes /kolibrios/emul/e80/e80: sna /kolibrios/emul/gameboy: gb, gbc /kolibrios/emul/pokemini: min /sys/develop/heed: \ No newline at end of file diff --git a/data/common/File Managers/kfar.ini b/data/common/File Managers/kfar.ini index 814d23d16b..6e1da24a9a 100644 --- a/data/common/File Managers/kfar.ini +++ b/data/common/File Managers/kfar.ini @@ -24,6 +24,7 @@ rtf=/sys/RtfRead asc=/sys/3d/view3ds lif=/kolibrios/demos/life2 skn=/sys/skincfg +dtp=/sys/skincfg lap=/sys/media/listplay asf=/sys/media/listplay m3u=/sys/media/AC97SND diff --git a/programs/cmm/misc/osupdate.c b/programs/cmm/misc/osupdate.c new file mode 100644 index 0000000000..3aa7e23227 --- /dev/null +++ b/programs/cmm/misc/osupdate.c @@ -0,0 +1,148 @@ +#define MEMSIZE 1024*460 + +#include "../lib/io.h" +#include "../lib/gui.h" +#include "../lib/copyf.h" + +#include "../lib/obj/libini.h" +#include "../lib/obj/libio.h" +#include "../lib/obj/libimg.h" +#include "../lib/obj/http.h" +#include "../lib/obj/network.h" + +#include "../lib/patterns/restart_process.h" +#include "../lib/patterns/http_downloader.h" + +#ifndef AUTOBUILD +#include "lang.h--" +#endif + +_http http; +proc_info Form; + +#define WINW 400 +#define WINH 300 + +char accept_language[]="en"; //not used, necessary for http.get() + +#ifdef LANG_RUS +#define T_INTRO "Попробуйте новое визуальное оформление Колибри, которое раньше было доступно только в KolibriNext."; +#define T_INSTALL "Установить" +#define T_COMPLETE "Установка завершена" +#define T_EXIT "Выход" +#define IMG_URL "http://builds.kolibrios.org/rus/data/data/kolibri.img" +#else +#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."; +#define T_INSTALL "Update" +#define T_COMPLETE "Update complete" +#define T_EXIT "Exit" +#define IMG_URL "http://builds.kolibrios.org/eng/data/data/kolibri.img" +#endif + + +bool install_complete = false; + +void main() +{ + word btn; + //load_dll(libini, #lib_init,1); + load_dll(libio, #libio_init,1); + load_dll(libimg, #libimg_init,1); + load_dll(libHTTP, #http_lib_init,1); + SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_STACK); + loop() switch(WaitEventTimeout(300) & 0xFF) + { + case evButton: + btn = GetButtonID(); + if (btn == 1) ExitProcess(); + else EventInstall(); + break; + + case evKey: + GetKeys(); + if (key_scancode == SCAN_CODE_ESC) ExitProcess(); + if (key_scancode == SCAN_CODE_ENTER) { + if (install_complete) ExitProcess(); + else EventInstall(); + } + break; + + case evReDraw: + draw_window(); + break; + + case evNetwork: + if (http.transfer <= 0) break; + http.receive(); + if (http.content_length) DrawProgressBar(30, WINH-140, WINW-60, 20, sc.work, 0xC3C3C3, + 0x54B1D6, sc.work_text, 100 * http.content_received / http.content_length); + if (http.receive_result == 0) EventDownloadComplete(); + } +} + +void draw_window() +{ + sc.get(); + DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2, + WINW+9,WINH+skin_height,0x34,sc.work,"KolibriOS Online Updater",0); + GetProcessInfo(#Form, -1); + WriteText(30, 20, 0x81, 0xEC008C, "ONLINE UPDATE"); + if (install_complete) DrawInstallComplete(); else DrawIntro(); +} + +void DrawIntro() +{ + DrawTextViewArea(30, 50, WINW-60, WINH-80, + T_INTRO, -1, sc.work_text); + DrawCaptButton(WINW-110/2, WINH-70, 110, 28, 9999, + 0x0092D8, 0xFFFfff, T_INSTALL); +} + +void DrawInstallComplete() +{ + 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, 1, + 0x0092D8, 0xFFFfff, T_EXIT); +} + +void EventInstall() +{ + http.get(IMG_URL); +} + +void EventDownloadComplete() +{ + dword unimg_id, slot_n; + + CreateFile(http.content_received, http.content_pointer, "/tmp0/1/last.img"); + http.free(); + + unimg_id = RunProgram("/tmp0/1/unimg", "/tmp0/1/last.img -e"); + do { + slot_n = GetProcessSlot(unimg_id); + pause(10); + } while (slot_n!=0); + + copyf("/tmp0/1/KOLIBRI.IMG", "/rd/1"); + + RestartAllProcess(); + install_complete = true; + draw_window(); +} + +void RestartAllProcess() { + int i; + proc_info Process; + for (i=0; i