mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-18 20:29:44 -07:00
Xfw app error msg on bad frequency input
This commit is contained in:
@@ -1,27 +1,27 @@
|
||||
#include "../xtreme_app.h"
|
||||
|
||||
enum TextInputIndex {
|
||||
TextInputIndexResult,
|
||||
enum TextInputResult {
|
||||
TextInputResultOk,
|
||||
TextInputResultError,
|
||||
};
|
||||
|
||||
static void xtreme_app_scene_protocols_frequencies_add_text_input_callback(void* context) {
|
||||
XtremeApp* app = context;
|
||||
|
||||
do {
|
||||
char *end;
|
||||
uint32_t value = strtol(app->subghz_freq_buffer, &end, 0);
|
||||
if(*end) break;
|
||||
value *= 10000;
|
||||
if(!furi_hal_subghz_is_frequency_valid(value)) break;
|
||||
bool is_hopper = scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||
if(is_hopper) {
|
||||
FrequencyList_push_back(app->subghz_hopper_frequencies, value);
|
||||
} else {
|
||||
FrequencyList_push_back(app->subghz_static_frequencies, value);
|
||||
}
|
||||
app->save_subghz_frequencies = true;
|
||||
} while(false);
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, TextInputIndexResult);
|
||||
char *end;
|
||||
uint32_t value = strtol(app->subghz_freq_buffer, &end, 0) * 10000;
|
||||
if(*end || !furi_hal_subghz_is_frequency_valid(value)) {
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, TextInputResultError);
|
||||
return;
|
||||
}
|
||||
bool is_hopper = scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||
if(is_hopper) {
|
||||
FrequencyList_push_back(app->subghz_hopper_frequencies, value);
|
||||
} else {
|
||||
FrequencyList_push_back(app->subghz_static_frequencies, value);
|
||||
}
|
||||
app->save_subghz_frequencies = true;
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, TextInputResultOk);
|
||||
}
|
||||
|
||||
void xtreme_app_scene_protocols_frequencies_add_on_enter(void* context) {
|
||||
@@ -43,6 +43,11 @@ void xtreme_app_scene_protocols_frequencies_add_on_enter(void* context) {
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewTextInput);
|
||||
}
|
||||
|
||||
void callback_return(void* context) {
|
||||
XtremeApp* app = context;
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
}
|
||||
|
||||
bool xtreme_app_scene_protocols_frequencies_add_on_event(void* context, SceneManagerEvent event) {
|
||||
XtremeApp* app = context;
|
||||
bool consumed = false;
|
||||
@@ -50,9 +55,18 @@ bool xtreme_app_scene_protocols_frequencies_add_on_event(void* context, SceneMan
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
consumed = true;
|
||||
switch(event.event) {
|
||||
case TextInputIndexResult:
|
||||
case TextInputResultOk:
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
break;
|
||||
case TextInputResultError:
|
||||
popup_set_header(app->popup, "Invalid value!", 64, 26, AlignCenter, AlignCenter);
|
||||
popup_set_text(app->popup, "Frequency was not added...", 64, 40, AlignCenter, AlignCenter);
|
||||
popup_set_callback(app->popup, callback_return);
|
||||
popup_set_context(app->popup, app);
|
||||
popup_set_timeout(app->popup, 1000);
|
||||
popup_enable_timeout(app->popup);
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewPopup);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user