mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
SubGhz remove previous duplicates on enable/click (#373)
This commit is contained in:
@@ -82,6 +82,7 @@ typedef enum {
|
|||||||
SubGhzCustomEventSceneShowOnlyRX,
|
SubGhzCustomEventSceneShowOnlyRX,
|
||||||
SubGhzCustomEventSceneAnalyzerLock,
|
SubGhzCustomEventSceneAnalyzerLock,
|
||||||
SubGhzCustomEventSceneAnalyzerUnlock,
|
SubGhzCustomEventSceneAnalyzerUnlock,
|
||||||
|
SubGhzCustomEventSceneSettingRemoveDuplicates,
|
||||||
SubGhzCustomEventSceneSettingLock,
|
SubGhzCustomEventSceneSettingLock,
|
||||||
SubGhzCustomEventSceneSettingResetToDefault,
|
SubGhzCustomEventSceneSettingResetToDefault,
|
||||||
|
|
||||||
|
|||||||
@@ -275,6 +275,10 @@ static void subghz_scene_receiver_config_set_duplicates(VariableItem* item) {
|
|||||||
variable_item_set_current_value_text(item, combobox_text[index]);
|
variable_item_set_current_value_text(item, combobox_text[index]);
|
||||||
|
|
||||||
subghz->last_settings->remove_duplicates = subghz->remove_duplicates = index;
|
subghz->last_settings->remove_duplicates = subghz->remove_duplicates = index;
|
||||||
|
if(index) {
|
||||||
|
view_dispatcher_send_custom_event(
|
||||||
|
subghz->view_dispatcher, SubGhzCustomEventSceneSettingRemoveDuplicates);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool subghz_scene_receiver_config_ignore_filter_get_index(
|
static inline bool subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
@@ -313,7 +317,10 @@ static void subghz_scene_receiver_config_set_tpms(VariableItem* item) {
|
|||||||
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
|
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhz* subghz = context;
|
SubGhz* subghz = context;
|
||||||
if(index == SubGhzSettingIndexLock) {
|
if(index == SubGhzSettingIndexRemoveDuplicates) {
|
||||||
|
view_dispatcher_send_custom_event(
|
||||||
|
subghz->view_dispatcher, SubGhzCustomEventSceneSettingRemoveDuplicates);
|
||||||
|
} else if(index == SubGhzSettingIndexLock) {
|
||||||
view_dispatcher_send_custom_event(
|
view_dispatcher_send_custom_event(
|
||||||
subghz->view_dispatcher, SubGhzCustomEventSceneSettingLock);
|
subghz->view_dispatcher, SubGhzCustomEventSceneSettingLock);
|
||||||
} else if(index == SubGhzSettingIndexResetToDefault) {
|
} else if(index == SubGhzSettingIndexResetToDefault) {
|
||||||
@@ -582,7 +589,11 @@ bool subghz_scene_receiver_config_on_event(void* context, SceneManagerEvent even
|
|||||||
bool consumed = false;
|
bool consumed = false;
|
||||||
|
|
||||||
if(event.type == SceneManagerEventTypeCustom) {
|
if(event.type == SceneManagerEventTypeCustom) {
|
||||||
if(event.event == SubGhzCustomEventSceneSettingLock) {
|
if(event.event == SubGhzCustomEventSceneSettingRemoveDuplicates) {
|
||||||
|
subghz_history_remove_duplicates(subghz->history);
|
||||||
|
scene_manager_previous_scene(subghz->scene_manager);
|
||||||
|
consumed = true;
|
||||||
|
} else if(event.event == SubGhzCustomEventSceneSettingLock) {
|
||||||
subghz_lock(subghz);
|
subghz_lock(subghz);
|
||||||
scene_manager_previous_scene(subghz->scene_manager);
|
scene_manager_previous_scene(subghz->scene_manager);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
|
|||||||
@@ -332,3 +332,26 @@ bool subghz_history_add_to_history(
|
|||||||
instance->last_index_write++;
|
instance->last_index_write++;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void subghz_history_remove_duplicates(SubGhzHistory* instance) {
|
||||||
|
furi_assert(instance);
|
||||||
|
|
||||||
|
SubGhzHistoryItemArray_it_t it;
|
||||||
|
SubGhzHistoryItemArray_it_last(it, instance->history->data);
|
||||||
|
while(!SubGhzHistoryItemArray_end_p(it)) {
|
||||||
|
SubGhzHistoryItem* i = SubGhzHistoryItemArray_ref(it);
|
||||||
|
|
||||||
|
SubGhzHistoryItemArray_it_t jt;
|
||||||
|
SubGhzHistoryItemArray_it_set(jt, it);
|
||||||
|
SubGhzHistoryItemArray_previous(jt);
|
||||||
|
while(!SubGhzHistoryItemArray_end_p(jt)) {
|
||||||
|
SubGhzHistoryItem* j = SubGhzHistoryItemArray_ref(jt);
|
||||||
|
|
||||||
|
if(j->hash_data == i->hash_data) {
|
||||||
|
subghz_history_delete_item(instance, jt->index);
|
||||||
|
}
|
||||||
|
SubGhzHistoryItemArray_previous(jt);
|
||||||
|
}
|
||||||
|
SubGhzHistoryItemArray_previous(it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -153,3 +153,6 @@ float subghz_history_get_latitude(SubGhzHistory* instance, uint16_t idx);
|
|||||||
* @return longitude - Float
|
* @return longitude - Float
|
||||||
*/
|
*/
|
||||||
float subghz_history_get_longitude(SubGhzHistory* instance, uint16_t idx);
|
float subghz_history_get_longitude(SubGhzHistory* instance, uint16_t idx);
|
||||||
|
|
||||||
|
// Consolidate history removing existing duplicates
|
||||||
|
void subghz_history_remove_duplicates(SubGhzHistory* instance);
|
||||||
|
|||||||
Reference in New Issue
Block a user