/ src / display / screen_ui / display_screen_ui_nfct_active.c
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  }