#pragma once #include "desktop.h" #include "animations/animation_manager.h" #include "views/desktop_view_pin_timeout.h" #include "views/desktop_view_pin_input.h" #include "views/desktop_view_locked.h" #include "views/desktop_view_main.h" #include "views/desktop_view_lock_menu.h" #include "views/desktop_view_debug.h" #include "views/desktop_view_slideshow.h" #include #include #include #include #include #include #include #include #include #define STATUS_BAR_Y_SHIFT 13 typedef enum { DesktopViewIdMain, DesktopViewIdLockMenu, DesktopViewIdLocked, DesktopViewIdDebug, DesktopViewIdPopup, DesktopViewIdPinInput, DesktopViewIdPinTimeout, DesktopViewIdSlideshow, DesktopViewIdTotal, } DesktopViewId; struct Desktop { // Scene FuriThread* scene_thread; // GUI Gui* gui; ViewDispatcher* view_dispatcher; SceneManager* scene_manager; Popup* popup; DesktopLockMenuView* lock_menu; DesktopDebugView* debug_view; DesktopViewLocked* locked_view; DesktopMainView* main_view; DesktopViewPinTimeout* pin_timeout_view; DesktopSlideshowView* slideshow_view; ViewStack* main_view_stack; ViewStack* locked_view_stack; DesktopSettings settings; DesktopViewPinInput* pin_input_view; ViewPort* lock_icon_viewport; ViewPort* dummy_mode_icon_viewport; ViewPort* clock_viewport; ViewPort* stealth_mode_icon_viewport; AnimationManager* animation_manager; Loader* loader; NotificationApp* notification; FuriPubSubSubscription* app_start_stop_subscription; FuriPubSub* input_events_pubsub; FuriPubSubSubscription* input_events_subscription; FuriTimer* auto_lock_timer; FuriTimer* update_clock_timer; FuriPubSub* status_pubsub; uint8_t time_hour; uint8_t time_minute; bool time_format_12 : 1; // 1 - 12 hour, 0 - 24H bool in_transition : 1; FuriSemaphore* animation_semaphore; }; Desktop* desktop_alloc(void); void desktop_free(Desktop* desktop); void desktop_lock(Desktop* desktop); void desktop_unlock(Desktop* desktop); void desktop_set_dummy_mode_state(Desktop* desktop, bool enabled); void desktop_set_stealth_mode_state(Desktop* desktop, bool enabled);