[FL-2222] IR fixes (#994)
* Fix elements_multiline_text_aligned * IR: fix delete menu * IR: bold text on delete/saved * IR: add safe back screen * IR: don't clear text on rename * Nfc,Infrared: update DialogEx usage Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									be500993a3
								
							
						
					
					
						commit
						07036cc0f5
					
				| @ -1,4 +1,5 @@ | |||||||
| #include "elements.h" | #include "elements.h" | ||||||
|  | #include "m-core.h" | ||||||
| #include <assets_icons.h> | #include <assets_icons.h> | ||||||
| #include "furi_hal_resources.h" | #include "furi_hal_resources.h" | ||||||
| #include <furi_hal.h> | #include <furi_hal.h> | ||||||
| @ -202,6 +203,48 @@ void elements_button_center(Canvas* canvas, const char* str) { | |||||||
|     canvas_invert_color(canvas); |     canvas_invert_color(canvas); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static size_t | ||||||
|  |     elements_get_max_chars_to_fit(Canvas* canvas, Align horizontal, const char* text, uint8_t x) { | ||||||
|  |     const char* end = strchr(text, '\n'); | ||||||
|  |     if(end == NULL) { | ||||||
|  |         end = text + strlen(text); | ||||||
|  |     } | ||||||
|  |     size_t text_size = end - text; | ||||||
|  |     string_t str; | ||||||
|  |     string_init_set_str(str, text); | ||||||
|  |     string_left(str, text_size); | ||||||
|  |     size_t result = 0; | ||||||
|  | 
 | ||||||
|  |     uint16_t len_px = canvas_string_width(canvas, string_get_cstr(str)); | ||||||
|  |     uint8_t px_left = 0; | ||||||
|  |     if(horizontal == AlignCenter) { | ||||||
|  |         px_left = canvas_width(canvas) - (x - len_px / 2); | ||||||
|  |     } else if(horizontal == AlignLeft) { | ||||||
|  |         px_left = canvas_width(canvas) - x; | ||||||
|  |     } else if(horizontal == AlignRight) { | ||||||
|  |         px_left = x; | ||||||
|  |     } else { | ||||||
|  |         furi_assert(0); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if(len_px > px_left) { | ||||||
|  |         uint8_t excess_symbols_approximately = | ||||||
|  |             ((float)len_px - px_left) / ((float)len_px / text_size); | ||||||
|  |         // reduce to 5 to be sure dash fit, and next line will be at least 5 symbols long
 | ||||||
|  |         excess_symbols_approximately = MAX(excess_symbols_approximately, 5); | ||||||
|  |         if(text_size > (excess_symbols_approximately + 5)) { | ||||||
|  |             result = text_size - excess_symbols_approximately - 5; | ||||||
|  |         } else { | ||||||
|  |             result = text_size - 1; | ||||||
|  |         } | ||||||
|  |     } else { | ||||||
|  |         result = text_size; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     string_clear(str); | ||||||
|  |     return result; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void elements_multiline_text_aligned( | void elements_multiline_text_aligned( | ||||||
|     Canvas* canvas, |     Canvas* canvas, | ||||||
|     uint8_t x, |     uint8_t x, | ||||||
| @ -212,64 +255,40 @@ void elements_multiline_text_aligned( | |||||||
|     furi_assert(canvas); |     furi_assert(canvas); | ||||||
|     furi_assert(text); |     furi_assert(text); | ||||||
| 
 | 
 | ||||||
|  |     uint8_t lines_count = 0; | ||||||
|     uint8_t font_height = canvas_current_font_height(canvas); |     uint8_t font_height = canvas_current_font_height(canvas); | ||||||
|     string_t str; |     string_t line; | ||||||
|     string_init(str); |  | ||||||
|     const char* start = text; |  | ||||||
|     char* end; |  | ||||||
| 
 | 
 | ||||||
|     // get lines count
 |     /* go through text line by line and count lines */ | ||||||
|     uint8_t i, lines_count; |     for(const char* start = text; start[0];) { | ||||||
|     for(i = 0, lines_count = 0; text[i]; i++) lines_count += (text[i] == '\n'); |         size_t chars_fit = elements_get_max_chars_to_fit(canvas, horizontal, start, x); | ||||||
| 
 |         ++lines_count; | ||||||
|     switch(vertical) { |         start += chars_fit; | ||||||
|     case AlignBottom: |         start += start[0] == '\n' ? 1 : 0; | ||||||
|         y -= font_height * lines_count; |  | ||||||
|         break; |  | ||||||
|     case AlignCenter: |  | ||||||
|         y -= (font_height * lines_count) / 2; |  | ||||||
|         break; |  | ||||||
|     case AlignTop: |  | ||||||
|     default: |  | ||||||
|         break; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     do { |     if(vertical == AlignBottom) { | ||||||
|         end = strchr(start, '\n'); |         y -= font_height * (lines_count - 1); | ||||||
|  |     } else if(vertical == AlignCenter) { | ||||||
|  |         y -= (font_height * (lines_count - 1)) / 2; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|         if(end) { |     /* go through text line by line and print them */ | ||||||
|             string_set_strn(str, start, end - start); |     for(const char* start = text; start[0];) { | ||||||
|  |         size_t chars_fit = elements_get_max_chars_to_fit(canvas, horizontal, start, x); | ||||||
|  | 
 | ||||||
|  |         if((start[chars_fit] == '\n') || (start[chars_fit] == 0)) { | ||||||
|  |             string_init_printf(line, "%.*s", chars_fit, start); | ||||||
|         } else { |         } else { | ||||||
|             string_set_str(str, start); |             string_init_printf(line, "%.*s-\n", chars_fit, start); | ||||||
|         } |         } | ||||||
| 
 |         canvas_draw_str_aligned(canvas, x, y, horizontal, vertical, string_get_cstr(line)); | ||||||
|         uint16_t len_px = canvas_string_width(canvas, string_get_cstr(str)); |         string_clear(line); | ||||||
|         uint8_t px_left = |  | ||||||
|             canvas_width(canvas) - (x - (horizontal == AlignCenter ? len_px / 2 : 0)); |  | ||||||
| 
 |  | ||||||
|         // hacky
 |  | ||||||
|         if(len_px > px_left) { |  | ||||||
|             string_t buff; |  | ||||||
|             string_init_set(buff, str); |  | ||||||
|             size_t s_len = string_size(str); |  | ||||||
|             uint8_t end_pos = s_len - ((len_px - px_left) / (len_px / s_len) + 5); |  | ||||||
| 
 |  | ||||||
|             string_left(buff, end_pos); |  | ||||||
|             string_cat(buff, "-"); |  | ||||||
|             string_right(str, end_pos); |  | ||||||
| 
 |  | ||||||
|             canvas_draw_str_aligned(canvas, x, y, horizontal, vertical, string_get_cstr(buff)); |  | ||||||
|             string_clear(buff); |  | ||||||
| 
 |  | ||||||
|             start = end + 1; |  | ||||||
|             y += font_height; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         canvas_draw_str_aligned(canvas, x, y, horizontal, vertical, string_get_cstr(str)); |  | ||||||
|         start = end + 1; |  | ||||||
|         y += font_height; |         y += font_height; | ||||||
|     } while(end); | 
 | ||||||
|     string_clear(str); |         start += chars_fit; | ||||||
|  |         start += start[0] == '\n' ? 1 : 0; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void elements_multiline_text(Canvas* canvas, uint8_t x, uint8_t y, const char* text) { | void elements_multiline_text(Canvas* canvas, uint8_t x, uint8_t y, const char* text) { | ||||||
|  | |||||||
| @ -33,6 +33,7 @@ public: | |||||||
|         LearnSuccess, |         LearnSuccess, | ||||||
|         LearnEnterName, |         LearnEnterName, | ||||||
|         LearnDone, |         LearnDone, | ||||||
|  |         AskBack, | ||||||
|         Remote, |         Remote, | ||||||
|         RemoteList, |         RemoteList, | ||||||
|         Edit, |         Edit, | ||||||
| @ -123,6 +124,7 @@ private: | |||||||
|         {Scene::LearnSuccess, new IrdaAppSceneLearnSuccess()}, |         {Scene::LearnSuccess, new IrdaAppSceneLearnSuccess()}, | ||||||
|         {Scene::LearnEnterName, new IrdaAppSceneLearnEnterName()}, |         {Scene::LearnEnterName, new IrdaAppSceneLearnEnterName()}, | ||||||
|         {Scene::LearnDone, new IrdaAppSceneLearnDone()}, |         {Scene::LearnDone, new IrdaAppSceneLearnDone()}, | ||||||
|  |         {Scene::AskBack, new IrdaAppSceneAskBack()}, | ||||||
|         {Scene::Remote, new IrdaAppSceneRemote()}, |         {Scene::Remote, new IrdaAppSceneRemote()}, | ||||||
|         {Scene::RemoteList, new IrdaAppSceneRemoteList()}, |         {Scene::RemoteList, new IrdaAppSceneRemoteList()}, | ||||||
|         {Scene::Edit, new IrdaAppSceneEdit()}, |         {Scene::Edit, new IrdaAppSceneEdit()}, | ||||||
|  | |||||||
| @ -89,6 +89,13 @@ private: | |||||||
|     std::vector<std::string> remote_names; |     std::vector<std::string> remote_names; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | class IrdaAppSceneAskBack : public IrdaAppScene { | ||||||
|  | public: | ||||||
|  |     void on_enter(IrdaApp* app) final; | ||||||
|  |     bool on_event(IrdaApp* app, IrdaAppEvent* event) final; | ||||||
|  |     void on_exit(IrdaApp* app) final; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| class IrdaAppSceneEdit : public IrdaAppScene { | class IrdaAppSceneEdit : public IrdaAppScene { | ||||||
| public: | public: | ||||||
|     void on_enter(IrdaApp* app) final; |     void on_enter(IrdaApp* app) final; | ||||||
|  | |||||||
							
								
								
									
										71
									
								
								applications/irda/scene/irda_app_scene_ask_back.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								applications/irda/scene/irda_app_scene_ask_back.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | |||||||
|  | #include "../irda_app.h" | ||||||
|  | #include "gui/modules/dialog_ex.h" | ||||||
|  | #include "irda.h" | ||||||
|  | #include "irda/scene/irda_app_scene.h" | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | static void dialog_result_callback(DialogExResult result, void* context) { | ||||||
|  |     auto app = static_cast<IrdaApp*>(context); | ||||||
|  |     IrdaAppEvent event; | ||||||
|  | 
 | ||||||
|  |     event.type = IrdaAppEvent::Type::DialogExSelected; | ||||||
|  |     event.payload.dialog_ex_result = result; | ||||||
|  | 
 | ||||||
|  |     app->get_view_manager()->send_event(&event); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void IrdaAppSceneAskBack::on_enter(IrdaApp* app) { | ||||||
|  |     IrdaAppViewManager* view_manager = app->get_view_manager(); | ||||||
|  |     DialogEx* dialog_ex = view_manager->get_dialog_ex(); | ||||||
|  | 
 | ||||||
|  |     if(app->get_learn_new_remote()) { | ||||||
|  |         dialog_ex_set_header(dialog_ex, "Exit to Infrared menu?", 64, 0, AlignCenter, AlignTop); | ||||||
|  |     } else { | ||||||
|  |         dialog_ex_set_header(dialog_ex, "Exit to remote menu?", 64, 0, AlignCenter, AlignTop); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     dialog_ex_set_text( | ||||||
|  |         dialog_ex, "All unsaved data\nwill be lost", 64, 31, AlignCenter, AlignCenter); | ||||||
|  |     dialog_ex_set_icon(dialog_ex, 0, 0, NULL); | ||||||
|  |     dialog_ex_set_left_button_text(dialog_ex, "Exit"); | ||||||
|  |     dialog_ex_set_center_button_text(dialog_ex, nullptr); | ||||||
|  |     dialog_ex_set_right_button_text(dialog_ex, "Stay"); | ||||||
|  |     dialog_ex_set_result_callback(dialog_ex, dialog_result_callback); | ||||||
|  |     dialog_ex_set_context(dialog_ex, app); | ||||||
|  | 
 | ||||||
|  |     view_manager->switch_to(IrdaAppViewManager::ViewType::DialogEx); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool IrdaAppSceneAskBack::on_event(IrdaApp* app, IrdaAppEvent* event) { | ||||||
|  |     bool consumed = false; | ||||||
|  | 
 | ||||||
|  |     if(event->type == IrdaAppEvent::Type::DialogExSelected) { | ||||||
|  |         switch(event->payload.dialog_ex_result) { | ||||||
|  |         case DialogExResultLeft: | ||||||
|  |             consumed = true; | ||||||
|  |             if(app->get_learn_new_remote()) { | ||||||
|  |                 app->search_and_switch_to_previous_scene({IrdaApp::Scene::Start}); | ||||||
|  |             } else { | ||||||
|  |                 app->search_and_switch_to_previous_scene( | ||||||
|  |                     {IrdaApp::Scene::Edit, IrdaApp::Scene::Remote}); | ||||||
|  |             } | ||||||
|  |             break; | ||||||
|  |         case DialogExResultCenter: | ||||||
|  |             furi_assert(0); | ||||||
|  |             break; | ||||||
|  |         case DialogExResultRight: | ||||||
|  |             app->switch_to_previous_scene(); | ||||||
|  |             consumed = true; | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if(event->type == IrdaAppEvent::Type::Back) { | ||||||
|  |         consumed = true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return consumed; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void IrdaAppSceneAskBack::on_exit(IrdaApp* app) { | ||||||
|  | } | ||||||
| @ -21,7 +21,7 @@ void IrdaAppSceneEditDelete::on_enter(IrdaApp* app) { | |||||||
| 
 | 
 | ||||||
|     if(app->get_edit_element() == IrdaApp::EditElement::Button) { |     if(app->get_edit_element() == IrdaApp::EditElement::Button) { | ||||||
|         auto signal = remote_manager->get_button_data(app->get_current_button()); |         auto signal = remote_manager->get_button_data(app->get_current_button()); | ||||||
|         dialog_ex_set_header(dialog_ex, "Delete button?", 64, 6, AlignCenter, AlignCenter); |         dialog_ex_set_header(dialog_ex, "Delete button?", 64, 0, AlignCenter, AlignTop); | ||||||
|         if(!signal.is_raw()) { |         if(!signal.is_raw()) { | ||||||
|             auto message = &signal.get_message(); |             auto message = &signal.get_message(); | ||||||
|             app->set_text_store( |             app->set_text_store( | ||||||
| @ -41,7 +41,7 @@ void IrdaAppSceneEditDelete::on_enter(IrdaApp* app) { | |||||||
|                 signal.get_raw_signal().timings_cnt); |                 signal.get_raw_signal().timings_cnt); | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         dialog_ex_set_header(dialog_ex, "Delete remote?", 64, 6, AlignCenter, AlignCenter); |         dialog_ex_set_header(dialog_ex, "Delete remote?", 64, 0, AlignCenter, AlignTop); | ||||||
|         app->set_text_store( |         app->set_text_store( | ||||||
|             0, |             0, | ||||||
|             "%s\n with %lu buttons", |             "%s\n with %lu buttons", | ||||||
| @ -49,7 +49,7 @@ void IrdaAppSceneEditDelete::on_enter(IrdaApp* app) { | |||||||
|             remote_manager->get_number_of_buttons()); |             remote_manager->get_number_of_buttons()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     dialog_ex_set_text(dialog_ex, app->get_text_store(0), 64, 32, AlignCenter, AlignCenter); |     dialog_ex_set_text(dialog_ex, app->get_text_store(0), 64, 31, AlignCenter, AlignCenter); | ||||||
|     dialog_ex_set_icon(dialog_ex, 0, 0, NULL); |     dialog_ex_set_icon(dialog_ex, 0, 0, NULL); | ||||||
|     dialog_ex_set_left_button_text(dialog_ex, "Back"); |     dialog_ex_set_left_button_text(dialog_ex, "Back"); | ||||||
|     dialog_ex_set_right_button_text(dialog_ex, "Delete"); |     dialog_ex_set_right_button_text(dialog_ex, "Delete"); | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ void IrdaAppSceneEditDeleteDone::on_enter(IrdaApp* app) { | |||||||
|     Popup* popup = view_manager->get_popup(); |     Popup* popup = view_manager->get_popup(); | ||||||
| 
 | 
 | ||||||
|     popup_set_icon(popup, 0, 2, &I_DolphinMafia_115x62); |     popup_set_icon(popup, 0, 2, &I_DolphinMafia_115x62); | ||||||
|     popup_set_text(popup, "Deleted", 83, 19, AlignLeft, AlignBottom); |     popup_set_header(popup, "Deleted", 83, 19, AlignLeft, AlignBottom); | ||||||
| 
 | 
 | ||||||
|     popup_set_callback(popup, IrdaApp::popup_callback); |     popup_set_callback(popup, IrdaApp::popup_callback); | ||||||
|     popup_set_context(popup, app); |     popup_set_context(popup, app); | ||||||
| @ -32,4 +32,7 @@ bool IrdaAppSceneEditDeleteDone::on_event(IrdaApp* app, IrdaAppEvent* event) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IrdaAppSceneEditDeleteDone::on_exit(IrdaApp* app) { | void IrdaAppSceneEditDeleteDone::on_exit(IrdaApp* app) { | ||||||
|  |     IrdaAppViewManager* view_manager = app->get_view_manager(); | ||||||
|  |     Popup* popup = view_manager->get_popup(); | ||||||
|  |     popup_set_header(popup, nullptr, 0, 0, AlignLeft, AlignTop); | ||||||
| } | } | ||||||
|  | |||||||
| @ -32,7 +32,7 @@ void IrdaAppSceneEditRename::on_enter(IrdaApp* app) { | |||||||
|         app, |         app, | ||||||
|         app->get_text_store(0), |         app->get_text_store(0), | ||||||
|         enter_name_length, |         enter_name_length, | ||||||
|         true); |         false); | ||||||
| 
 | 
 | ||||||
|     view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput); |     view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput); | ||||||
| } | } | ||||||
|  | |||||||
| @ -69,4 +69,7 @@ bool IrdaAppSceneLearn::on_event(IrdaApp* app, IrdaAppEvent* event) { | |||||||
| 
 | 
 | ||||||
| void IrdaAppSceneLearn::on_exit(IrdaApp* app) { | void IrdaAppSceneLearn::on_exit(IrdaApp* app) { | ||||||
|     irda_worker_rx_stop(app->get_irda_worker()); |     irda_worker_rx_stop(app->get_irda_worker()); | ||||||
|  |     auto view_manager = app->get_view_manager(); | ||||||
|  |     auto popup = view_manager->get_popup(); | ||||||
|  |     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignCenter); | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,9 +9,9 @@ void IrdaAppSceneLearnDone::on_enter(IrdaApp* app) { | |||||||
|     DOLPHIN_DEED(DolphinDeedIrSave); |     DOLPHIN_DEED(DolphinDeedIrSave); | ||||||
| 
 | 
 | ||||||
|     if(app->get_learn_new_remote()) { |     if(app->get_learn_new_remote()) { | ||||||
|         popup_set_text(popup, "New remote\ncreated!", 5, 7, AlignLeft, AlignTop); |         popup_set_header(popup, "New remote\ncreated!", 0, 0, AlignLeft, AlignTop); | ||||||
|     } else { |     } else { | ||||||
|         popup_set_text(popup, "Saved!", 5, 7, AlignLeft, AlignTop); |         popup_set_header(popup, "Saved!", 5, 7, AlignLeft, AlignTop); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     popup_set_callback(popup, IrdaApp::popup_callback); |     popup_set_callback(popup, IrdaApp::popup_callback); | ||||||
| @ -35,4 +35,7 @@ bool IrdaAppSceneLearnDone::on_event(IrdaApp* app, IrdaAppEvent* event) { | |||||||
| 
 | 
 | ||||||
| void IrdaAppSceneLearnDone::on_exit(IrdaApp* app) { | void IrdaAppSceneLearnDone::on_exit(IrdaApp* app) { | ||||||
|     app->set_learn_new_remote(false); |     app->set_learn_new_remote(false); | ||||||
|  |     IrdaAppViewManager* view_manager = app->get_view_manager(); | ||||||
|  |     Popup* popup = view_manager->get_popup(); | ||||||
|  |     popup_set_header(popup, nullptr, 0, 0, AlignLeft, AlignTop); | ||||||
| } | } | ||||||
|  | |||||||
| @ -91,12 +91,17 @@ bool IrdaAppSceneLearnSuccess::on_event(IrdaApp* app, IrdaAppEvent* event) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if(event->type == IrdaAppEvent::Type::Back) { | ||||||
|  |         app->switch_to_next_scene(IrdaApp::Scene::AskBack); | ||||||
|  |         consumed = true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     return consumed; |     return consumed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IrdaAppSceneLearnSuccess::on_exit(IrdaApp* app) { | void IrdaAppSceneLearnSuccess::on_exit(IrdaApp* app) { | ||||||
|     IrdaAppViewManager* view_manager = app->get_view_manager(); |     IrdaAppViewManager* view_manager = app->get_view_manager(); | ||||||
|     DialogEx* dialog_ex = view_manager->get_dialog_ex(); |     DialogEx* dialog_ex = view_manager->get_dialog_ex(); | ||||||
|     dialog_ex_set_center_button_text(dialog_ex, nullptr); |     dialog_ex_reset(dialog_ex); | ||||||
|     app->notify_green_off(); |     app->notify_green_off(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -189,14 +189,7 @@ void nfc_scene_device_info_on_exit(void* context) { | |||||||
|     if(nfc->dev->format == NfcDeviceSaveFormatUid) { |     if(nfc->dev->format == NfcDeviceSaveFormatUid) { | ||||||
|         // Clear Dialog
 |         // Clear Dialog
 | ||||||
|         DialogEx* dialog_ex = nfc->dialog_ex; |         DialogEx* dialog_ex = nfc->dialog_ex; | ||||||
|         dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter); |         dialog_ex_reset(dialog_ex); | ||||||
|         dialog_ex_set_text(dialog_ex, NULL, 0, 0, AlignCenter, AlignTop); |  | ||||||
|         dialog_ex_set_icon(dialog_ex, 0, 0, NULL); |  | ||||||
|         dialog_ex_set_left_button_text(dialog_ex, NULL); |  | ||||||
|         dialog_ex_set_right_button_text(dialog_ex, NULL); |  | ||||||
|         dialog_ex_set_center_button_text(dialog_ex, NULL); |  | ||||||
|         dialog_ex_set_result_callback(dialog_ex, NULL); |  | ||||||
|         dialog_ex_set_context(dialog_ex, NULL); |  | ||||||
|     } else if(nfc->dev->format == NfcDeviceSaveFormatMifareUl) { |     } else if(nfc->dev->format == NfcDeviceSaveFormatMifareUl) { | ||||||
|         // Clear TextBox
 |         // Clear TextBox
 | ||||||
|         text_box_reset(nfc->text_box); |         text_box_reset(nfc->text_box); | ||||||
|  | |||||||
| @ -103,14 +103,7 @@ void nfc_scene_read_mifare_ul_success_on_exit(void* context) { | |||||||
| 
 | 
 | ||||||
|     // Clean dialog
 |     // Clean dialog
 | ||||||
|     DialogEx* dialog_ex = nfc->dialog_ex; |     DialogEx* dialog_ex = nfc->dialog_ex; | ||||||
|     dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter); |     dialog_ex_reset(dialog_ex); | ||||||
|     dialog_ex_set_text(dialog_ex, NULL, 0, 0, AlignCenter, AlignTop); |  | ||||||
|     dialog_ex_set_icon(dialog_ex, 0, 0, NULL); |  | ||||||
|     dialog_ex_set_left_button_text(dialog_ex, NULL); |  | ||||||
|     dialog_ex_set_right_button_text(dialog_ex, NULL); |  | ||||||
|     dialog_ex_set_center_button_text(dialog_ex, NULL); |  | ||||||
|     dialog_ex_set_result_callback(dialog_ex, NULL); |  | ||||||
|     dialog_ex_set_context(dialog_ex, NULL); |  | ||||||
| 
 | 
 | ||||||
|     // Clean TextBox
 |     // Clean TextBox
 | ||||||
|     TextBox* text_box = nfc->text_box; |     TextBox* text_box = nfc->text_box; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Albert Kharisov
						Albert Kharisov