diff --git a/applications/applications.mk b/applications/applications.mk index 77d35e21..1921e958 100644 --- a/applications/applications.mk +++ b/applications/applications.mk @@ -171,7 +171,8 @@ endif SRV_DESKTOP ?= 0 ifeq ($(SRV_DESKTOP), 1) CFLAGS += -DSRV_DESKTOP -SRV_LOADER = 1 +SRV_DOLPHIN = 1 +SRV_STORAGE = 1 SRV_GUI = 1 endif diff --git a/applications/desktop/desktop.c b/applications/desktop/desktop.c index aa1755e9..ef17fc87 100644 --- a/applications/desktop/desktop.c +++ b/applications/desktop/desktop.c @@ -1,5 +1,4 @@ #include "desktop_i.h" -#include "applications/dolphin/dolphin.h" static void desktop_lock_icon_callback(Canvas* canvas, void* context) { furi_assert(canvas); @@ -104,16 +103,22 @@ void desktop_free(Desktop* desktop) { free(desktop); } +static bool desktop_is_first_start() { + Storage* storage = furi_record_open("storage"); + bool exists = storage_common_stat(storage, "/int/first_start", NULL) == FSE_OK; + furi_record_close("storage"); + + return exists; +} + int32_t desktop_srv(void* p) { Desktop* desktop = desktop_alloc(); - Dolphin* dolphin = furi_record_open("dolphin"); - if(dolphin_load(dolphin)) { - scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain); - } else { + scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain); + + if(desktop_is_first_start()) { scene_manager_next_scene(desktop->scene_manager, DesktopSceneFirstStart); } - furi_record_close("dolphin"); if(!furi_hal_version_do_i_belong_here()) { scene_manager_next_scene(desktop->scene_manager, DesktopSceneHwMismatch); diff --git a/applications/desktop/desktop_i.h b/applications/desktop/desktop_i.h index d3a9d457..8f424183 100644 --- a/applications/desktop/desktop_i.h +++ b/applications/desktop/desktop_i.h @@ -1,13 +1,15 @@ #pragma once +#include "desktop.h" + #include #include + #include #include #include #include - -#include "desktop.h" +#include #include "views/desktop_main.h" #include "views/desktop_first_start.h" @@ -15,6 +17,7 @@ #include "views/desktop_lock_menu.h" #include "views/desktop_locked.h" #include "views/desktop_debug.h" + #include "scenes/desktop_scene.h" #include "desktop/desktop_settings/desktop_settings.h" diff --git a/applications/desktop/scenes/desktop_scene_debug.c b/applications/desktop/scenes/desktop_scene_debug.c index 4a490f2a..3ae4b852 100644 --- a/applications/desktop/scenes/desktop_scene_debug.c +++ b/applications/desktop/scenes/desktop_scene_debug.c @@ -1,14 +1,14 @@ #include "../desktop_i.h" #include "../views/desktop_debug.h" -#include "applications/dolphin/dolphin.h" -#include "applications/dolphin/helpers/dolphin_deed.h" +#include +#include void desktop_scene_debug_callback(DesktopDebugEvent event, void* context) { Desktop* desktop = (Desktop*)context; view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_debug_on_enter(void* context) { +void desktop_scene_debug_on_enter(void* context) { Desktop* desktop = (Desktop*)context; desktop_debug_get_dolphin_data(desktop->debug_view); @@ -17,7 +17,7 @@ const void desktop_scene_debug_on_enter(void* context) { view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewDebug); } -const bool desktop_scene_debug_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_debug_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; Dolphin* dolphin = furi_record_open("dolphin"); bool consumed = false; @@ -56,7 +56,7 @@ const bool desktop_scene_debug_on_event(void* context, SceneManagerEvent event) return consumed; } -const void desktop_scene_debug_on_exit(void* context) { +void desktop_scene_debug_on_exit(void* context) { Desktop* desktop = (Desktop*)context; desktop_debug_reset_screen_idx(desktop->debug_view); } diff --git a/applications/desktop/scenes/desktop_scene_first_start.c b/applications/desktop/scenes/desktop_scene_first_start.c index 435947ca..98f6ef73 100644 --- a/applications/desktop/scenes/desktop_scene_first_start.c +++ b/applications/desktop/scenes/desktop_scene_first_start.c @@ -1,13 +1,12 @@ #include "../desktop_i.h" #include "../views/desktop_first_start.h" -#include "applications/dolphin/dolphin.h" void desktop_scene_first_start_callback(DesktopFirstStartEvent event, void* context) { Desktop* desktop = (Desktop*)context; view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_first_start_on_enter(void* context) { +void desktop_scene_first_start_on_enter(void* context) { Desktop* desktop = (Desktop*)context; DesktopFirstStartView* first_start_view = desktop->first_start_view; @@ -17,14 +16,18 @@ const void desktop_scene_first_start_on_enter(void* context) { view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewFirstStart); } -const bool desktop_scene_first_start_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_first_start_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; bool consumed = false; + Storage* storage = NULL; if(event.type == SceneManagerEventTypeCustom) { switch(event.event) { case DesktopFirstStartCompleted: - scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain); + storage = furi_record_open("storage"); + storage_common_remove(storage, "/int/first_start"); + furi_record_close("storage"); + scene_manager_previous_scene(desktop->scene_manager); consumed = true; break; @@ -35,9 +38,5 @@ const bool desktop_scene_first_start_on_event(void* context, SceneManagerEvent e return consumed; } -const void desktop_scene_first_start_on_exit(void* context) { - // Desktop* desktop = (Desktop*)context; - Dolphin* dolphin = furi_record_open("dolphin"); - dolphin_save(dolphin); - furi_record_close("dolphin"); +void desktop_scene_first_start_on_exit(void* context) { } diff --git a/applications/desktop/scenes/desktop_scene_hw_mismatch.c b/applications/desktop/scenes/desktop_scene_hw_mismatch.c index c01ed6ac..224ddb58 100644 --- a/applications/desktop/scenes/desktop_scene_hw_mismatch.c +++ b/applications/desktop/scenes/desktop_scene_hw_mismatch.c @@ -6,7 +6,7 @@ void desktop_scene_hw_mismatch_callback(DesktopHwMismatchEvent event, void* cont view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_hw_mismatch_on_enter(void* context) { +void desktop_scene_hw_mismatch_on_enter(void* context) { Desktop* desktop = (Desktop*)context; desktop_hw_mismatch_set_callback( @@ -14,7 +14,7 @@ const void desktop_scene_hw_mismatch_on_enter(void* context) { view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewHwMismatch); } -const bool desktop_scene_hw_mismatch_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_hw_mismatch_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; bool consumed = false; @@ -32,6 +32,6 @@ const bool desktop_scene_hw_mismatch_on_event(void* context, SceneManagerEvent e return consumed; } -const void desktop_scene_hw_mismatch_on_exit(void* context) { +void desktop_scene_hw_mismatch_on_exit(void* context) { // Desktop* desktop = (Desktop*)context; } diff --git a/applications/desktop/scenes/desktop_scene_lock_menu.c b/applications/desktop/scenes/desktop_scene_lock_menu.c index 47ba850e..537469b5 100644 --- a/applications/desktop/scenes/desktop_scene_lock_menu.c +++ b/applications/desktop/scenes/desktop_scene_lock_menu.c @@ -6,14 +6,14 @@ void desktop_scene_lock_menu_callback(DesktopLockMenuEvent event, void* context) view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_lock_menu_on_enter(void* context) { +void desktop_scene_lock_menu_on_enter(void* context) { Desktop* desktop = (Desktop*)context; desktop_lock_menu_set_callback(desktop->lock_menu, desktop_scene_lock_menu_callback, desktop); view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewLockMenu); } -const bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; bool consumed = false; @@ -36,7 +36,7 @@ const bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent eve return consumed; } -const void desktop_scene_lock_menu_on_exit(void* context) { +void desktop_scene_lock_menu_on_exit(void* context) { Desktop* desktop = (Desktop*)context; desktop_lock_menu_reset_idx(desktop->lock_menu); } diff --git a/applications/desktop/scenes/desktop_scene_locked.c b/applications/desktop/scenes/desktop_scene_locked.c index 64a913c2..c0cfd3c9 100644 --- a/applications/desktop/scenes/desktop_scene_locked.c +++ b/applications/desktop/scenes/desktop_scene_locked.c @@ -6,7 +6,7 @@ void desktop_scene_locked_callback(DesktopLockedEvent event, void* context) { view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_locked_on_enter(void* context) { +void desktop_scene_locked_on_enter(void* context) { Desktop* desktop = (Desktop*)context; DesktopLockedView* locked_view = desktop->locked_view; @@ -20,7 +20,7 @@ const void desktop_scene_locked_on_enter(void* context) { view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewLocked); } -const bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; bool consumed = false; @@ -43,7 +43,7 @@ const bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) return consumed; } -const void desktop_scene_locked_on_exit(void* context) { +void desktop_scene_locked_on_exit(void* context) { Desktop* desktop = (Desktop*)context; DesktopLockedView* locked_view = desktop->locked_view; desktop_locked_reset_counter(desktop->locked_view); diff --git a/applications/desktop/scenes/desktop_scene_main.c b/applications/desktop/scenes/desktop_scene_main.c index c71a0d81..e63f8418 100644 --- a/applications/desktop/scenes/desktop_scene_main.c +++ b/applications/desktop/scenes/desktop_scene_main.c @@ -27,7 +27,7 @@ void desktop_scene_main_callback(DesktopMainEvent event, void* context) { view_dispatcher_send_custom_event(desktop->view_dispatcher, event); } -const void desktop_scene_main_on_enter(void* context) { +void desktop_scene_main_on_enter(void* context) { Desktop* desktop = (Desktop*)context; DesktopMainView* main_view = desktop->main_view; @@ -42,7 +42,7 @@ const void desktop_scene_main_on_enter(void* context) { view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewMain); } -const bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { +bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { Desktop* desktop = (Desktop*)context; bool consumed = false; @@ -81,7 +81,7 @@ const bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { return consumed; } -const void desktop_scene_main_on_exit(void* context) { +void desktop_scene_main_on_exit(void* context) { Desktop* desktop = (Desktop*)context; scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneMain, MAIN_VIEW_DEFAULT); desktop_main_reset_hint(desktop->main_view); diff --git a/applications/subghz/scenes/subghz_scene_show_only_rx.c b/applications/subghz/scenes/subghz_scene_show_only_rx.c index f808b0fb..e59e1d68 100644 --- a/applications/subghz/scenes/subghz_scene_show_only_rx.c +++ b/applications/subghz/scenes/subghz_scene_show_only_rx.c @@ -7,7 +7,7 @@ void subghz_scene_show_only_rx_popup_callback(void* context) { view_dispatcher_send_custom_event(subghz->view_dispatcher, SCENE_NO_MAN_CUSTOM_EVENT); } -const void subghz_scene_show_only_rx_on_enter(void* context) { +void subghz_scene_show_only_rx_on_enter(void* context) { SubGhz* subghz = context; // Setup view @@ -38,7 +38,7 @@ const bool subghz_scene_show_only_rx_on_event(void* context, SceneManagerEvent e return false; } -const void subghz_scene_show_only_rx_on_exit(void* context) { +void subghz_scene_show_only_rx_on_exit(void* context) { SubGhz* subghz = context; // Clear view