From 5cc3fc99ee6e7f20b2a13201a6d925f5ae5c13fb Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 4 Jul 2023 00:44:19 +0200 Subject: [PATCH] Support adding search button to favorites --- .../main/archive/scenes/archive_scene_browser.c | 10 +++++++++- .../main/archive/views/archive_browser_view.c | 12 +++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/applications/main/archive/scenes/archive_scene_browser.c b/applications/main/archive/scenes/archive_scene_browser.c index df9243f1d..e9da22484 100644 --- a/applications/main/archive/scenes/archive_scene_browser.c +++ b/applications/main/archive/scenes/archive_scene_browser.c @@ -59,7 +59,15 @@ static void const char* app_name = archive_get_flipper_app_name(selected->type); - if(app_name) { + if(selected->type == ArchiveFileTypeSearch) { + while(archive_get_tab(browser) != ArchiveTabSearch) { + archive_switch_tab(browser, TAB_LEFT); + } + ArchiveApp* archive; + with_view_model( + browser->view, ArchiveBrowserViewModel * model, { archive = model->archive; }, false); + view_dispatcher_send_custom_event(archive->view_dispatcher, ArchiveBrowserEventSearch); + } else if(app_name) { if(selected->is_app) { char* param = strrchr(furi_string_get_cstr(selected->path), '/'); if(param != NULL) { diff --git a/applications/main/archive/views/archive_browser_view.c b/applications/main/archive/views/archive_browser_view.c index 80a785dd0..835a28a68 100644 --- a/applications/main/archive/views/archive_browser_view.c +++ b/applications/main/archive/views/archive_browser_view.c @@ -503,13 +503,19 @@ static bool archive_view_input(InputEvent* event, void* context) { } ArchiveFile_t* selected = archive_get_current_file(browser); + bool favorites = archive_get_tab(browser) == ArchiveTabFavorites; if(selected && selected->type == ArchiveFileTypeSearch) { - if(event->key == InputKeyOk && event->type == InputTypeShort && cur_item_idx == 0) { - browser->callback(ArchiveBrowserEventSearch, browser->context); + if((cur_item_idx == 0 || favorites) && event->key == InputKeyOk) { + if(event->type == InputTypeShort) { + browser->callback( + favorites ? ArchiveBrowserEventFileMenuRun : ArchiveBrowserEventSearch, + browser->context); + } else if(event->type == InputTypeLong) { + browser->callback(ArchiveBrowserEventFileMenuOpen, browser->context); + } } } else if(event->key == InputKeyOk) { if(selected) { - bool favorites = archive_get_tab(browser) == ArchiveTabFavorites; bool folder = selected->type == ArchiveFileTypeFolder; if(event->type == InputTypeShort) {