mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2024-12-25 14:22:27 +03:00
741329a743
* Added a text input that only accepts full numbers (int) * Added to Gui sdk_headers and api_symbols in f7 and f18 * Fixed _Bool declarations in symbols csv * renamed int_input to number_input * Changed name & added example fap * Added a text input that only accepts full numbers (int) * Added to Gui sdk_headers and api_symbols in f7 and f18 * Changed name & added example fap * update for clearing views * GUI: Fix array out of bounds in menu exit (#3604) * GUI: Fix array out of bounds in menu exit * Gui: fix incorrect empty menu handling * Gui: add missing item check in menu ok handling * Gui: remove dead code from menu module * nfc app: add legacy keys for plantain cards (#3602) * refactoring test app, part 1 * Refactor test app, part 2 * Minor updates while travelling * Switched from const char to FuriString. Using Temp module copy for development to spare compile time * Option to limit number output with min and max values * Preparations for option to change number sign from + to - * Preparations for option to change number sign from + to - * Preparing for testing * counter automatic API version change * added trailing comma in application.fam ... because the lint check wants it¿ * removed unused callback NumberChangedCallback * change uint8_t to size_t in number_input_backspace_cb * Removal of unused view_stack in demo app * copied module to app folder for faster development (remove later) * Replaced all uint8_t with size_t... removed unused logic for selected_row < 0 * Optimize use of canvas_set_color * Remove alloc/free of furistring that actually is a pointer * Dynamic Header text with min/max in Example * Removed the need of useSign in Model * Number_input Removed sign from model, started transfer from text to int32_t * number_input FuriString in input_show_number * number_input FuriString in input_show_number * limiting inputs for min/max values * limiting inputs for min/max values * number_input change save button on invalid numbers * input_number update demo app to allow change of min/max * number input fine tuning * number_input, Remove temp development folder * number_input, fbt format * Bump CSV Files * Clear input if value is zero * number_input: handle null on header text * number_input: change keyboard values to char * number input: Remove static on char for header text, change numbers to INT32_MIN/INT32_MAX * number_input: removal of dead code * number_input: fix for crash if number_input not opened before free * number_input: added icon for example app * number_input: Replaced view for show_number with DialogEx * Number_input: FBT Format * number_input: bump csv versions * number_input: allow negative input if max_value is 0 * Number_input: linting / format * Removed dead code, fbt format * Examples: cleanup number input code * Examples: moar code cleanup in number input, simplify as much as possible, highlight incorrect input handling * Gui: correctly handle INT_MAX and INT_MIN * Gui: fix memory leak in number input module Co-authored-by: David Lee <david.lee@arcmedia.ch> Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com> Co-authored-by: WillyJL <49810075+Willy-JL@users.noreply.github.com> Co-authored-by: gornekich <n.gorbadey@gmail.com>
80 lines
2.5 KiB
C
80 lines
2.5 KiB
C
#include "example_number_input.h"
|
|
|
|
bool example_number_input_custom_event_callback(void* context, uint32_t event) {
|
|
furi_assert(context);
|
|
ExampleNumberInput* app = context;
|
|
return scene_manager_handle_custom_event(app->scene_manager, event);
|
|
}
|
|
|
|
static bool example_number_input_back_event_callback(void* context) {
|
|
furi_assert(context);
|
|
ExampleNumberInput* app = context;
|
|
return scene_manager_handle_back_event(app->scene_manager);
|
|
}
|
|
|
|
static ExampleNumberInput* example_number_input_alloc() {
|
|
ExampleNumberInput* app = malloc(sizeof(ExampleNumberInput));
|
|
app->gui = furi_record_open(RECORD_GUI);
|
|
|
|
app->view_dispatcher = view_dispatcher_alloc();
|
|
|
|
app->scene_manager = scene_manager_alloc(&example_number_input_scene_handlers, app);
|
|
view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
|
|
view_dispatcher_set_custom_event_callback(
|
|
app->view_dispatcher, example_number_input_custom_event_callback);
|
|
view_dispatcher_set_navigation_event_callback(
|
|
app->view_dispatcher, example_number_input_back_event_callback);
|
|
|
|
app->number_input = number_input_alloc();
|
|
view_dispatcher_add_view(
|
|
app->view_dispatcher,
|
|
ExampleNumberInputViewIdNumberInput,
|
|
number_input_get_view(app->number_input));
|
|
|
|
app->dialog_ex = dialog_ex_alloc();
|
|
view_dispatcher_add_view(
|
|
app->view_dispatcher,
|
|
ExampleNumberInputViewIdShowNumber,
|
|
dialog_ex_get_view(app->dialog_ex));
|
|
|
|
app->current_number = 5;
|
|
app->min_value = INT32_MIN;
|
|
app->max_value = INT32_MAX;
|
|
|
|
return app;
|
|
}
|
|
|
|
static void example_number_input_free(ExampleNumberInput* app) {
|
|
furi_assert(app);
|
|
|
|
view_dispatcher_remove_view(app->view_dispatcher, ExampleNumberInputViewIdShowNumber);
|
|
dialog_ex_free(app->dialog_ex);
|
|
|
|
view_dispatcher_remove_view(app->view_dispatcher, ExampleNumberInputViewIdNumberInput);
|
|
number_input_free(app->number_input);
|
|
|
|
scene_manager_free(app->scene_manager);
|
|
view_dispatcher_free(app->view_dispatcher);
|
|
|
|
furi_record_close(RECORD_GUI);
|
|
app->gui = NULL;
|
|
|
|
//Remove whatever is left
|
|
free(app);
|
|
}
|
|
|
|
int32_t example_number_input(void* p) {
|
|
UNUSED(p);
|
|
ExampleNumberInput* app = example_number_input_alloc();
|
|
|
|
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
|
|
|
|
scene_manager_next_scene(app->scene_manager, ExampleNumberInputSceneShowNumber);
|
|
|
|
view_dispatcher_run(app->view_dispatcher);
|
|
|
|
example_number_input_free(app);
|
|
|
|
return 0;
|
|
}
|