display_screen_ui_nfct_active.c
1 #include "display_screen_ui.h" 2 3 #include "global/global_strings.h" 4 5 #define UI_NAME nfct_active 6 7 #define NFCT_UI_DESC_SIZE 128 8 9 static lv_obj_t* screen = NULL; 10 static lv_event_cb_t cancel_callback = NULL; 11 static lv_obj_t* cancel_button = NULL; 12 static lv_obj_t* window = NULL; 13 static char window_title_text[NFCT_UI_DESC_SIZE] = ""; 14 15 static void nfct_cancel_pressed(lv_obj_t* obj, lv_event_t e) 16 { 17 if (e == LV_EVENT_CLICKED) 18 { 19 if (cancel_callback != NULL) 20 { 21 cancel_callback(obj, e); 22 } 23 else 24 { 25 // they aren't handling cancel, 26 // we will delete our window 27 // so we can be created again in the future. 28 lv_win_close_event_cb(obj, e); 29 lv_obj_del(screen); 30 screen = NULL; 31 } 32 } 33 } 34 35 UI_DECLARE_CREATE(UI_NAME) 36 { 37 if (screen != NULL) 38 { 39 cancel_callback = NULL; 40 return screen; 41 } 42 43 LV_IMG_DECLARE(nfct_48); 44 static splash_window_desc_t desc = { 45 .title = "NFC Tag Active", 46 .instruction = PRODUCT_NAME_SHORT "'s NFC Tag is active." 47 "Move " PRODUCT_NAME_SHORT " close to the reader, or press " 48 "the select to exit!", 49 .icon = NULL, 50 .image = &nfct_48, 51 .header_button_text = LV_SYMBOL_LEFT, 52 .header_button_cb = nfct_cancel_pressed, 53 }; 54 55 screen = display_screen_ui_create_splash_window_screen(&desc); 56 window = desc.return_window_obj; 57 58 cancel_button = desc.return_header_button_obj; 59 60 // create a label for the active file name or whatever description 61 //label_description = lv_label_create(desc.return_window_obj, NULL); 62 //lv_label_set_long_mode(label_description, LV_LABEL_LONG_SROLL); 63 //lv_obj_set_width(label_description, lv_win_get_width(desc.return_window_obj)); 64 //lv_label_set_text(label_description, window_title_text); 65 66 //lv_obj_t* windowContent = lv_win_get_content(desc.return_window_obj); 67 //lv_coord_t labelHeight = lv_obj_get_height(label_description); 68 //lv_obj_set_y(label_description, lv_obj_get_height(windowContent) - labelHeight * 1.5f); 69 70 71 return screen; 72 } 73 74 UI_DECLARE_ACTIVATE(UI_NAME) 75 { 76 lv_scr_load(screen); 77 lv_group_set_focus_cb(group, NULL); 78 lv_group_remove_all_objs(group); 79 80 lv_group_add_obj(group, cancel_button); 81 lv_group_focus_obj(cancel_button); 82 } 83 84 void UI_DECLARE_FUNCTION(UI_NAME, set_cancel_callback)(lv_event_cb_t callback) 85 { 86 cancel_callback = callback; 87 } 88 89 void UI_DECLARE_FUNCTION(UI_NAME, set_title)(const char* title) 90 { 91 lv_snprintf(window_title_text, NFCT_UI_DESC_SIZE, "%s", title); 92 93 if (window == NULL) 94 { 95 return; 96 } 97 98 lv_win_set_title(window, title); 99 }