More efficient subghz history delete

This commit is contained in:
Willy-JL
2023-12-14 04:45:40 +00:00
parent ffc510b8ae
commit c40755f700
6 changed files with 35 additions and 61 deletions

View File

@@ -66,24 +66,18 @@ static void subghz_scene_add_to_history_callback(
if(subghz->remove_duplicates) {
// Look in history for signal hash
uint8_t hash_data = subghz_protocol_decoder_base_get_hash_data(decoder_base);
uint16_t menu_idx = subghz_view_receiver_get_idx_menu(subghz->subghz_receiver);
subghz_view_receiver_disable_draw_callback(subghz->subghz_receiver);
for(uint16_t i = idx; i > 0; i--) {
i--; // Iterating in reverse with off by one
if(subghz_history_get_hash_data(subghz->history, i) == hash_data) {
// Remove previous instance and update menu index
subghz_history_delete_item(subghz->history, i);
subghz_view_receiver_set_idx_menu(subghz->subghz_receiver, i);
subghz_view_receiver_delete_element_callback(subghz->subghz_receiver);
if(menu_idx > i) {
menu_idx--;
idx--;
}
subghz_view_receiver_delete_item(subghz->subghz_receiver, i);
idx--;
}
i++;
}
// Restore ui state
subghz_view_receiver_set_idx_menu(subghz->subghz_receiver, menu_idx);
subghz->idx_menu_chosen = subghz_view_receiver_get_idx_menu(subghz->subghz_receiver);
subghz_view_receiver_enable_draw_callback(subghz->subghz_receiver);
if(subghz_history_get_last_index(subghz->history) == 0) {