diff --git a/applications/main/clock_app/application.fam b/applications/main/clock_app/application.fam deleted file mode 100644 index 9016973c5..000000000 --- a/applications/main/clock_app/application.fam +++ /dev/null @@ -1,12 +0,0 @@ -App( - appid="clock", - name="Clock", - apptype=FlipperAppType.APP, - entry_point="clock_app", - cdefines=["APP_CLOCK"], - requires=["gui"], - icon="A_Clock_14", - stack_size=2 * 1024, - order=81, -) - diff --git a/applications/main/sub_playlist/application.fam b/applications/main/sub_playlist/application.fam index 84f63a630..3a6de14da 100644 --- a/applications/main/sub_playlist/application.fam +++ b/applications/main/sub_playlist/application.fam @@ -8,4 +8,5 @@ App( stack_size=2 * 1024, order=12, fap_icon="playlist_10px.png", + icon="A_Sub_Playlist_14", ) diff --git a/applications/plugins/clock/clock_app.c b/applications/plugins/clock/clock_app.c deleted file mode 100644 index 9d87ff950..000000000 --- a/applications/plugins/clock/clock_app.c +++ /dev/null @@ -1,136 +0,0 @@ -#include -#include - -#include -#include - -typedef enum { - ClockEventTypeTick, - ClockEventTypeKey, -} ClockEventType; - -typedef struct { - ClockEventType type; - InputEvent input; -} ClockEvent; - -typedef struct { - FuriString* buffer; - FuriHalRtcDateTime datetime; - LocaleTimeFormat timeformat; - LocaleDateFormat dateformat; -} ClockData; - -typedef struct { - FuriMutex* mutex; - FuriMessageQueue* queue; - ClockData* data; -} Clock; - -static void clock_input_callback(InputEvent* input_event, FuriMessageQueue* queue) { - furi_assert(queue); - ClockEvent event = {.type = ClockEventTypeKey, .input = *input_event}; - furi_message_queue_put(queue, &event, FuriWaitForever); -} - -static void clock_render_callback(Canvas* canvas, void* ctx) { - Clock* clock = ctx; - if(furi_mutex_acquire(clock->mutex, 200) != FuriStatusOk) { - return; - } - - ClockData* data = clock->data; - - canvas_set_font(canvas, FontBigNumbers); - locale_format_time(data->buffer, &data->datetime, data->timeformat, true); - canvas_draw_str_aligned( - canvas, 64, 28, AlignCenter, AlignCenter, furi_string_get_cstr(data->buffer)); - - // Special case to cover missing glyphs in FontBigNumbers - if(data->timeformat == LocaleTimeFormat12h) { - size_t time_width = canvas_string_width(canvas, furi_string_get_cstr(data->buffer)); - canvas_set_font(canvas, FontPrimary); - canvas_draw_str_aligned( - canvas, - 64 + (time_width / 2) - 10, - 31, - AlignLeft, - AlignCenter, - (data->datetime.hour > 12) ? "PM" : "AM"); - } - - canvas_set_font(canvas, FontSecondary); - locale_format_date(data->buffer, &data->datetime, data->dateformat, "/"); - canvas_draw_str_aligned( - canvas, 64, 42, AlignCenter, AlignTop, furi_string_get_cstr(data->buffer)); - - furi_mutex_release(clock->mutex); -} - -static void clock_tick(void* ctx) { - furi_assert(ctx); - FuriMessageQueue* queue = ctx; - ClockEvent event = {.type = ClockEventTypeTick}; - // It's OK to loose this event if system overloaded - furi_message_queue_put(queue, &event, 0); -} - -int32_t clock_app(void* p) { - UNUSED(p); - Clock* clock = malloc(sizeof(Clock)); - clock->data = malloc(sizeof(ClockData)); - clock->data->buffer = furi_string_alloc(); - - clock->queue = furi_message_queue_alloc(8, sizeof(ClockEvent)); - clock->mutex = furi_mutex_alloc(FuriMutexTypeNormal); - - furi_hal_rtc_get_datetime(&clock->data->datetime); - clock->data->timeformat = locale_get_time_format(); - clock->data->dateformat = locale_get_date_format(); - - // Set ViewPort callbacks - ViewPort* view_port = view_port_alloc(); - view_port_draw_callback_set(view_port, clock_render_callback, clock); - view_port_input_callback_set(view_port, clock_input_callback, clock->queue); - - FuriTimer* timer = furi_timer_alloc(clock_tick, FuriTimerTypePeriodic, clock->queue); - - // Open GUI and register view_port - Gui* gui = furi_record_open(RECORD_GUI); - gui_add_view_port(gui, view_port, GuiLayerFullscreen); - - furi_timer_start(timer, 100); - - // Main loop - ClockEvent event; - for(bool processing = true; processing;) { - furi_check(furi_message_queue_get(clock->queue, &event, FuriWaitForever) == FuriStatusOk); - furi_mutex_acquire(clock->mutex, FuriWaitForever); - if(event.type == ClockEventTypeKey) { - if(event.input.type == InputTypeShort && event.input.key == InputKeyBack) { - processing = false; - } - } else if(event.type == ClockEventTypeTick) { - furi_hal_rtc_get_datetime(&clock->data->datetime); - } - - furi_mutex_release(clock->mutex); - view_port_update(view_port); - } - - furi_timer_free(timer); - view_port_enabled_set(view_port, false); - gui_remove_view_port(gui, view_port); - view_port_free(view_port); - furi_record_close(RECORD_GUI); - - furi_message_queue_free(clock->queue); - furi_mutex_free(clock->mutex); - - furi_string_free(clock->data->buffer); - - free(clock->data); - free(clock); - - return 0; -} \ No newline at end of file diff --git a/applications/plugins/clock/application.fam b/applications/plugins/clock_app/application.fam similarity index 89% rename from applications/plugins/clock/application.fam rename to applications/plugins/clock_app/application.fam index e22738e47..644fbb65f 100644 --- a/applications/plugins/clock/application.fam +++ b/applications/plugins/clock_app/application.fam @@ -1,5 +1,5 @@ App( - appid="ClockV1", + appid="clock", name="Clock", apptype=FlipperAppType.EXTERNAL, entry_point="clock_app", @@ -7,4 +7,4 @@ App( stack_size=2 * 1024, fap_icon="clock.png", fap_category="Tools", -) +) \ No newline at end of file diff --git a/applications/plugins/clock/clock.png b/applications/plugins/clock_app/clock.png similarity index 100% rename from applications/plugins/clock/clock.png rename to applications/plugins/clock_app/clock.png diff --git a/applications/main/clock_app/clock_app.c b/applications/plugins/clock_app/clock_app.c similarity index 100% rename from applications/main/clock_app/clock_app.c rename to applications/plugins/clock_app/clock_app.c diff --git a/applications/main/clock_app/clock_app.h b/applications/plugins/clock_app/clock_app.h similarity index 100% rename from applications/main/clock_app/clock_app.h rename to applications/plugins/clock_app/clock_app.h diff --git a/applications/services/desktop/scenes/desktop_scene_main.c b/applications/services/desktop/scenes/desktop_scene_main.c index b55643d52..92e23cb20 100644 --- a/applications/services/desktop/scenes/desktop_scene_main.c +++ b/applications/services/desktop/scenes/desktop_scene_main.c @@ -220,7 +220,7 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { break; } case DesktopMainEventOpenClock: { - desktop_scene_main_open_app_or_profile(desktop, EXT_PATH("/apps/Main/Clock.fap")); + desktop_scene_main_open_app_or_profile(desktop, EXT_PATH("/apps/Tools/Clock.fap")); break; } case DesktopMainEventOpenTetris: {