From daee9db3667dd2bf3258efd985d9494b628255e3 Mon Sep 17 00:00:00 2001 From: RogueMaster Date: Tue, 20 Sep 2022 17:43:59 -0400 Subject: [PATCH] Clock in menu from fap --- .../desktop/scenes/desktop_scene_main.c | 20 +++--------------- applications/services/loader/loader.c | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/applications/services/desktop/scenes/desktop_scene_main.c b/applications/services/desktop/scenes/desktop_scene_main.c index f50481906..68f712891 100644 --- a/applications/services/desktop/scenes/desktop_scene_main.c +++ b/applications/services/desktop/scenes/desktop_scene_main.c @@ -86,11 +86,6 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { consumed = true; break; - // case DesktopMainEventOpenGames: - // loader_show_game_menu(); - // consumed = true; - // break; - case DesktopMainEventOpenLockMenu: scene_manager_next_scene(desktop->scene_manager, DesktopSceneLockMenu); consumed = true; @@ -117,12 +112,8 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { break; } case DesktopMainEventOpenClock: { - // loader_start(desktop->loader, FLIPPER_APPS[0].name, NULL); - LoaderStatus status = loader_start( - desktop->loader, "Applications", EXT_PATH("/apps/Main/Clock.fap")); - if(status != LoaderStatusOk) { - FURI_LOG_E(TAG, "loader_start failed: %d", status); - } + // it has its own error + LoaderStatus status = loader_start(desktop->loader, "Applications", EXT_PATH("/apps/Main/Clock.fap")); consumed = true; break; } @@ -233,12 +224,7 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { break; } case DesktopMainEventOpenSubRemote: { - loader_start(desktop->loader, FLIPPER_APPS[1].name, NULL); - // LoaderStatus status = loader_start( - // desktop->loader, "Applications", EXT_PATH("/apps/Main/SubGHz_Remote.fap")); - // if(status != LoaderStatusOk) { - // FURI_LOG_E(TAG, "loader_start failed: %d", status); - // } + loader_start(desktop->loader, FLIPPER_APPS[2].name, NULL); consumed = true; break; } diff --git a/applications/services/loader/loader.c b/applications/services/loader/loader.c index 649b01476..fbf5cb937 100644 --- a/applications/services/loader/loader.c +++ b/applications/services/loader/loader.c @@ -1,7 +1,9 @@ #include "applications.h" #include +#include #include "loader/loader.h" #include "loader_i.h" +#include "applications/services/desktop/desktop_i.h" #define TAG "LoaderSrv" @@ -55,6 +57,16 @@ static void loader_submenu_callback(void* context, uint32_t index) { view_dispatcher_switch_to_view(loader_instance->view_dispatcher, view_id); } +static void loader_clock_callback(void* context, uint32_t index) { + UNUSED(index); + Desktop* desktop = desktop_alloc(); + LoaderStatus status = loader_start( + desktop->loader, "Applications", EXT_PATH("/apps/Main/Clock.fap")); + if(status != LoaderStatusOk) { + FURI_LOG_E(TAG, "loader_start failed: %d", status); + } +} + static void loader_cli_print_usage() { printf("Usage:\r\n"); printf("loader \r\n"); @@ -372,7 +384,14 @@ static void loader_free(Loader* instance) { static void loader_build_menu() { FURI_LOG_I(TAG, "Building main menu"); size_t i; - for(i = 0; i < FLIPPER_APPS_COUNT; i++) { + menu_add_item( + loader_instance->primary_menu, + "Clock", + &A_Clock_14, + 0, + loader_clock_callback, + (void*)LoaderMenuViewPlugins); + for(i = 1; i < FLIPPER_APPS_COUNT; i++) { menu_add_item( loader_instance->primary_menu, FLIPPER_APPS[i].name,