[FL-1758, FL-1790] SubGhz refactoring part 2, fix generation of a new GateTX serial (#696)
* WidGet: fix name Multiline String Element * SubGhz: rename SubGhzProtocol to SubGhzParser and bring it up * SubGhz: a new way to navigate in receiver views * SubGhz: fix syntax * WedGet: add forwarding input type to wedget button callback, fix using a callback in an application * SubGhz: add assertions and status checks * SubGhz: fix syntax * [FL-1790] SubGhz: fix GateTX * SubGhz: add 434.42 MHz frequency support * SubGhz: rename type protocol, add decoder stage names * SubGhz: fix navigation through received signals when changing scenes * SubGhz: fix 2-fsk config Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
		| @@ -118,7 +118,7 @@ static void widget_add_element(Widget* widget, WidgetElement* element) { | ||||
|         }); | ||||
| } | ||||
|  | ||||
| void widget_add_string_multi_element( | ||||
| void widget_add_string_multiline_element( | ||||
|     Widget* widget, | ||||
|     uint8_t x, | ||||
|     uint8_t y, | ||||
| @@ -127,9 +127,9 @@ void widget_add_string_multi_element( | ||||
|     Font font, | ||||
|     const char* text) { | ||||
|     furi_assert(widget); | ||||
|     WidgetElement* string_multi_element = | ||||
|         widget_element_string_multi_create(x, y, horizontal, vertical, font, text); | ||||
|     widget_add_element(widget, string_multi_element); | ||||
|     WidgetElement* string_multiline_element = | ||||
|         widget_element_string_multiline_create(x, y, horizontal, vertical, font, text); | ||||
|     widget_add_element(widget, string_multiline_element); | ||||
| } | ||||
|  | ||||
| void widget_add_string_element( | ||||
|   | ||||
| @@ -34,7 +34,7 @@ View* widget_get_view(Widget* widget); | ||||
|  * @param vertical - Align instance | ||||
|  * @param font Font instance | ||||
|  */ | ||||
| void widget_add_string_multi_element( | ||||
| void widget_add_string_multiline_element( | ||||
|     Widget* widget, | ||||
|     uint8_t x, | ||||
|     uint8_t y, | ||||
|   | ||||
| @@ -32,26 +32,15 @@ static bool gui_button_input(InputEvent* event, WidgetElement* element) { | ||||
|  | ||||
|     if(model->callback == NULL) return consumed; | ||||
|  | ||||
|     if(event->key == InputKeyOk && event->type == InputTypePress && | ||||
|        model->button_type == GuiButtonTypeCenter) { | ||||
|         model->callback(GuiButtonTypeCenterPress, model->context); | ||||
|     if((model->button_type == GuiButtonTypeLeft) && (event->key == InputKeyLeft)) { | ||||
|         model->callback(model->button_type, event->type, model->context); | ||||
|         consumed = true; | ||||
|     } else if( | ||||
|         event->key == InputKeyOk && event->type == InputTypeRelease && | ||||
|         model->button_type == GuiButtonTypeCenter) { | ||||
|         model->callback(GuiButtonTypeCenterRelease, model->context); | ||||
|     } else if((model->button_type == GuiButtonTypeRight) && (event->key == InputKeyRight)) { | ||||
|         model->callback(model->button_type, event->type, model->context); | ||||
|         consumed = true; | ||||
|     } else if((model->button_type == GuiButtonTypeCenter) && (event->key == InputKeyOk)) { | ||||
|         model->callback(model->button_type, event->type, model->context); | ||||
|         consumed = true; | ||||
|     } else if(event->type == InputTypeShort) { | ||||
|         if((model->button_type == GuiButtonTypeLeft) && (event->key == InputKeyLeft)) { | ||||
|             model->callback(model->button_type, model->context); | ||||
|             consumed = true; | ||||
|         } else if((model->button_type == GuiButtonTypeRight) && (event->key == InputKeyRight)) { | ||||
|             model->callback(model->button_type, model->context); | ||||
|             consumed = true; | ||||
|         } else if((model->button_type == GuiButtonTypeCenter) && (event->key == InputKeyOk)) { | ||||
|             model->callback(model->button_type, model->context); | ||||
|             consumed = true; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return consumed; | ||||
|   | ||||
| @@ -1,16 +1,15 @@ | ||||
| #pragma once | ||||
| #include <furi.h> | ||||
| #include <gui/view.h> | ||||
| #include <input/input.h> | ||||
|  | ||||
| typedef enum { | ||||
|     GuiButtonTypeLeft, | ||||
|     GuiButtonTypeCenter, | ||||
|     GuiButtonTypeRight, | ||||
|     GuiButtonTypeCenterPress, | ||||
|     GuiButtonTypeCenterRelease, | ||||
| } GuiButtonType; | ||||
|  | ||||
| typedef void (*ButtonCallback)(GuiButtonType result, void* context); | ||||
| typedef void (*ButtonCallback)(GuiButtonType result, InputType type, void* context); | ||||
|  | ||||
| typedef struct WidgetElement WidgetElement; | ||||
| typedef struct Widget Widget; | ||||
| @@ -31,7 +30,7 @@ struct WidgetElement { | ||||
| }; | ||||
|  | ||||
| /* Create multi string element */ | ||||
| WidgetElement* widget_element_string_multi_create( | ||||
| WidgetElement* widget_element_string_multiline_create( | ||||
|     uint8_t x, | ||||
|     uint8_t y, | ||||
|     Align horizontal, | ||||
|   | ||||
| @@ -9,12 +9,12 @@ typedef struct { | ||||
|     Align vertical; | ||||
|     Font font; | ||||
|     string_t text; | ||||
| } GuiStringMultiModel; | ||||
| } GuiStringMultiLineModel; | ||||
| 
 | ||||
| static void gui_string_multi_draw(Canvas* canvas, WidgetElement* element) { | ||||
| static void gui_string_multiline_draw(Canvas* canvas, WidgetElement* element) { | ||||
|     furi_assert(canvas); | ||||
|     furi_assert(element); | ||||
|     GuiStringMultiModel* model = element->model; | ||||
|     GuiStringMultiLineModel* model = element->model; | ||||
| 
 | ||||
|     if(string_size(model->text)) { | ||||
|         canvas_set_font(canvas, model->font); | ||||
| @@ -28,16 +28,16 @@ static void gui_string_multi_draw(Canvas* canvas, WidgetElement* element) { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void gui_string_multi_free(WidgetElement* gui_string) { | ||||
| static void gui_string_multiline_free(WidgetElement* gui_string) { | ||||
|     furi_assert(gui_string); | ||||
| 
 | ||||
|     GuiStringMultiModel* model = gui_string->model; | ||||
|     GuiStringMultiLineModel* model = gui_string->model; | ||||
|     string_clear(model->text); | ||||
|     free(gui_string->model); | ||||
|     free(gui_string); | ||||
| } | ||||
| 
 | ||||
| WidgetElement* widget_element_string_multi_create( | ||||
| WidgetElement* widget_element_string_multiline_create( | ||||
|     uint8_t x, | ||||
|     uint8_t y, | ||||
|     Align horizontal, | ||||
| @@ -47,7 +47,7 @@ WidgetElement* widget_element_string_multi_create( | ||||
|     furi_assert(text); | ||||
| 
 | ||||
|     // Allocate and init model
 | ||||
|     GuiStringMultiModel* model = furi_alloc(sizeof(GuiStringMultiModel)); | ||||
|     GuiStringMultiLineModel* model = furi_alloc(sizeof(GuiStringMultiLineModel)); | ||||
|     model->x = x; | ||||
|     model->y = y; | ||||
|     model->horizontal = horizontal; | ||||
| @@ -59,8 +59,8 @@ WidgetElement* widget_element_string_multi_create( | ||||
|     WidgetElement* gui_string = furi_alloc(sizeof(WidgetElement)); | ||||
|     gui_string->parent = NULL; | ||||
|     gui_string->input = NULL; | ||||
|     gui_string->draw = gui_string_multi_draw; | ||||
|     gui_string->free = gui_string_multi_free; | ||||
|     gui_string->draw = gui_string_multiline_draw; | ||||
|     gui_string->free = gui_string_multiline_free; | ||||
|     gui_string->model = model; | ||||
| 
 | ||||
|     return gui_string; | ||||
		Reference in New Issue
	
	Block a user