From 201b5a172a4673bd67ffbfcced1052b5bc2cc35d Mon Sep 17 00:00:00 2001 From: konect-V <66421869+konect-V@users.noreply.github.com> Date: Sun, 1 Sep 2024 13:51:00 +0200 Subject: [PATCH] Add loading screen for apps --- .vscode/settings.json | 4 ++- bootstrap/sys-apps.yml | 26 ++++++++++++++++++ sources/core/apps/desktop/icons/icons.json | 6 ++++ sources/core/apps/desktop/icons/store-ui.tga | Bin 0 -> 262162 bytes sources/core/apps/desktop/source/core/core.c | 21 ++++++++++++-- sources/core/apps/explorer/source/core/core.c | 2 -- .../core/apps/image-reader/source/core/core.c | 2 -- sources/core/apps/lock/source/core/core.c | 6 ++-- .../core/apps/text-reader/source/core/core.c | 2 -- .../core/apps/weather-ui/source/core/core.c | 2 -- sources/core/apps/welcome/source/core/core.c | 2 -- target/boot-disk.sh | 2 +- 12 files changed, 57 insertions(+), 18 deletions(-) create mode 100644 sources/core/apps/desktop/icons/store-ui.tga diff --git a/.vscode/settings.json b/.vscode/settings.json index f208ee319..1349ac589 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -209,7 +209,9 @@ "untar.h": "c", "ft2build.h": "c", "wait.h": "c", - "ctype.h": "c" + "ctype.h": "c", + "format": "c", + "stacktrace": "c" }, "files.exclude": { "bundled": true, diff --git a/bootstrap/sys-apps.yml b/bootstrap/sys-apps.yml index 09eb390ce..a186ab0d2 100644 --- a/bootstrap/sys-apps.yml +++ b/bootstrap/sys-apps.yml @@ -209,6 +209,32 @@ packages: - '@THIS_SOURCE_DIR@/target/@OPTION:arch_name@/bin/.' - '@SOURCE_ROOT@/target/boot_disk_kot_mount/.' + - name: store-ui + source: + subdir: 'sources/core/apps' + tools_required: + - host-gcc + pkgs_required: + - mlibc + - curl + - cjson + build: + - args: + - 'make' + - '-C' + - '@THIS_SOURCE_DIR@/target/@OPTION:arch_name@' + - 'build' + environ: + CC: "@OPTION:cc@" + CXX: "@OPTION:cxx@" + LD: "@OPTION:ld@" + ASMC: "@OPTION:asmc@" + - args: + - 'cp' + - '-r' + - '@THIS_SOURCE_DIR@/target/@OPTION:arch_name@/bin/.' + - '@SOURCE_ROOT@/target/boot_disk_kot_mount/.' + - name: welcome source: subdir: 'sources/core/apps' diff --git a/sources/core/apps/desktop/icons/icons.json b/sources/core/apps/desktop/icons/icons.json index 0eb68d8eb..34ddea74c 100644 --- a/sources/core/apps/desktop/icons/icons.json +++ b/sources/core/apps/desktop/icons/icons.json @@ -23,6 +23,12 @@ "executablePath": "/usr/bin/lock", "appName": "Lock" }, + { + "cwdPath": "/usr/bin/", + "iconPath": "/usr/bin/icons/store-ui.tga", + "executablePath": "/usr/bin/store-ui", + "appName": "Store UI" + }, { "cwdPath": "/usr/bin/", "iconPath": "/usr/bin/icons/weather-ui.tga", diff --git a/sources/core/apps/desktop/icons/store-ui.tga b/sources/core/apps/desktop/icons/store-ui.tga new file mode 100644 index 0000000000000000000000000000000000000000..e4a1b592c8a7d371de1c92a83b56031e8d0a66c9 GIT binary patch literal 262162 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 QUDh}12iM= 0){ @@ -123,8 +128,6 @@ void get_current_date_time(char *time_str) { int load_fb(){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading desktop...\n"); - assert(fb_fd >= 0); @@ -146,6 +149,8 @@ int load_fb(){ fb.height = var_screeninfo.yres_virtual; fb.buffer = malloc(fb.size); memset(fb.buffer, 0, fb.size); + memcpy(&loading_fb, &fb, sizeof(kframebuffer_t)); + loading_fb.buffer = malloc(loading_fb.size); }else{ perror("'/dev/fb0' : format not supported\n"); return EXIT_FAILURE; @@ -397,6 +402,12 @@ int reload_icons(){ return 0; } +void show_loading_screen(raw_image_t* icon_image){ + memset(loading_fb.buffer, 0, fb.size); + draw_image_with_binary_transparency(&loading_fb, icon_image, (loading_fb.width - ICON_IMAGE_WIDTH) / 2, (loading_fb.height - ICON_IMAGE_HEIGHT) / 2, ICON_IMAGE_WIDTH, ICON_IMAGE_HEIGHT); + draw_loading_frame(); +} + void get_input(){ static bool arrow_pressed = false; static bool wait_release = false; @@ -469,6 +480,12 @@ void get_input(){ int c = focus_icon_column + focus_icon_row * icon_column_count; { + if(icons_image[c] != NULL){ + show_loading_screen(icons_image[c]); + }else{ + show_loading_screen(default_icon_image); + } + pid_t p = fork(); if(p < 0){ perror("desktop: fork failed"); diff --git a/sources/core/apps/explorer/source/core/core.c b/sources/core/apps/explorer/source/core/core.c index 277c3a9d4..35b71e059 100644 --- a/sources/core/apps/explorer/source/core/core.c +++ b/sources/core/apps/explorer/source/core/core.c @@ -167,8 +167,6 @@ char* get_file_ext(char* name) { int load_fb(){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading explorer...\n"); - assert(fb_fd >= 0); diff --git a/sources/core/apps/image-reader/source/core/core.c b/sources/core/apps/image-reader/source/core/core.c index 6208c24a6..5ee4e07fd 100644 --- a/sources/core/apps/image-reader/source/core/core.c +++ b/sources/core/apps/image-reader/source/core/core.c @@ -88,8 +88,6 @@ int wait_escape(){ int load_fb(){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading image-reader...\n"); - assert(fb_fd >= 0); diff --git a/sources/core/apps/lock/source/core/core.c b/sources/core/apps/lock/source/core/core.c index 1fed467ab..45e168a73 100644 --- a/sources/core/apps/lock/source/core/core.c +++ b/sources/core/apps/lock/source/core/core.c @@ -82,7 +82,7 @@ void get_current_time(char *time_str) { void get_current_date(char *date_str) { time_t now = time(NULL); struct tm *t = localtime(&now); - strftime(date_str, 20, "%A, %B %d", t); + strftime(date_str, 30, "%A, %B %d", t); } int wait_escape(){ @@ -181,8 +181,6 @@ int check_pin(char* pin, char* pin_expected){ int main(int argc, char* argv[]){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading lock screen...\n"); - assert(fb_fd >= 0); @@ -330,7 +328,7 @@ int main(int argc, char* argv[]){ while(true){ while(true){ char time_str[6]; - char date_str[20]; + char date_str[30]; draw_image(&fb, wallpaper_resized, 0, 0, fb.width, fb.height); diff --git a/sources/core/apps/text-reader/source/core/core.c b/sources/core/apps/text-reader/source/core/core.c index 88eed073b..8e3e95f43 100644 --- a/sources/core/apps/text-reader/source/core/core.c +++ b/sources/core/apps/text-reader/source/core/core.c @@ -213,8 +213,6 @@ char* get_file_ext(char* name) { int load_fb(){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading text-reader...\n"); - assert(fb_fd >= 0); diff --git a/sources/core/apps/weather-ui/source/core/core.c b/sources/core/apps/weather-ui/source/core/core.c index bc079d1a3..adefd88cb 100644 --- a/sources/core/apps/weather-ui/source/core/core.c +++ b/sources/core/apps/weather-ui/source/core/core.c @@ -147,8 +147,6 @@ void convert_name_to_path(char* name){ int load_fb(){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading weather-ui...\n"); - assert(fb_fd >= 0); diff --git a/sources/core/apps/welcome/source/core/core.c b/sources/core/apps/welcome/source/core/core.c index 0c721fe9e..9e9f822b5 100644 --- a/sources/core/apps/welcome/source/core/core.c +++ b/sources/core/apps/welcome/source/core/core.c @@ -133,8 +133,6 @@ int wait_for_the_next_slide(){ int main(int argc, char* argv[]){ fb_fd = open("/dev/fb0", O_RDWR); - printf("Loading welcome app...\n"); - assert(fb_fd >= 0); diff --git a/target/boot-disk.sh b/target/boot-disk.sh index 491ba81df..92c3199bb 100644 --- a/target/boot-disk.sh +++ b/target/boot-disk.sh @@ -14,7 +14,7 @@ function mount_boot_disk { mkdir -p $(dirname ${BOOT_DISK}) if ! [[ -b $BOOT_DISK ]]; then - sudo dd if=/dev/zero bs=5M count=0 seek=128 of=${BOOT_DISK} + sudo dd if=/dev/zero bs=10M count=0 seek=128 of=${BOOT_DISK} fi # Configure GPT partition table