diff --git a/firmware/application/ui/ui_btngrid.cpp b/firmware/application/ui/ui_btngrid.cpp index 74027612..1277fce1 100644 --- a/firmware/application/ui/ui_btngrid.cpp +++ b/firmware/application/ui/ui_btngrid.cpp @@ -4,6 +4,7 @@ * Copyright (C) 2019 Elia Yehuda (z4ziggy) * Copyright (C) 2023 Mark Thompson * Copyright (C) 2024 u-foka + * Copyleft (ↄ) 2024 zxkmm with the GPL license * * This file is part of PortaPack. * @@ -133,6 +134,19 @@ void BtnGridView::add_item(GridItem new_item) { } } +void BtnGridView::insert_item(GridItem new_item, uint8_t position) { + if (!blacklisted_app(new_item)) { + if (position < menu_items.size()) { + auto pos_iter = menu_items.begin() + position; + menu_items.insert(pos_iter, new_item); + update_items(); + } else { + menu_items.push_back(new_item); + update_items(); + } + } +} + void BtnGridView::update_items() { size_t i = 0; Color bg_color = portapack::persistent_memory::menu_color(); diff --git a/firmware/application/ui/ui_btngrid.hpp b/firmware/application/ui/ui_btngrid.hpp index 2256f766..6cea1996 100644 --- a/firmware/application/ui/ui_btngrid.hpp +++ b/firmware/application/ui/ui_btngrid.hpp @@ -61,6 +61,7 @@ class BtnGridView : public View { void add_items(std::initializer_list new_items); void add_item(GridItem new_item); + void insert_item(GridItem new_item, uint8_t position); void set_max_rows(int rows); int rows(); void clear(); diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index a4892438..9b0d84ab 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -723,16 +723,17 @@ static void add_apps(NavigationView& nav, BtnGridView& grid, app_location_t loc) void addExternalItems(NavigationView& nav, app_location_t location, BtnGridView& grid) { auto externalItems = ExternalItemsMenuLoader::load_external_items(location, nav); if (externalItems.empty()) { - grid.add_item({"Notice", - Color::red(), - &bitmap_icon_debug, - [&nav]() { - nav.display_modal( - "Notice", - "External app directory empty;\n" - "see Mayhem wiki and copy apps\n" - "to " + apps_dir.string() + " folder of SD card."); - }}); + grid.insert_item({"Notice!", + Color::red(), + nullptr, + [&nav]() { + nav.display_modal( + "Notice", + "External app directory empty;\n" + "see Mayhem wiki and copy apps\n" + "to " + apps_dir.string() + " folder of SD card."); + }}, + pmem::show_gui_return_icon() ? 1 : 0); } else { for (auto const& gridItem : externalItems) { grid.add_item(gridItem);