1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <time.h>
5 #include <unistd.h>
6 #include <sys/types.h>
7 #include <sys/wait.h>
8
9 #include <lvgl/lvgl.h>
10
11 #include "furniture_control_ui.h"
12 #include "home_ui.h"
13 #include "setting_ui.h"
14 #include "Rk_wifi.h"
15 #include "main.h"
16 #include "smart_home_ui.h"
17
18 ///////////////////// VARIABLES ////////////////////
19 uint32_t LV_EVENT_GET_COMP_CHILD;
20
21 static lv_obj_t * ui_Screen1 = NULL;
22 static lv_obj_t * ui_box_main = NULL;
23 static lv_obj_t * ui_smart_home_box = NULL;
24 static lv_obj_t * ui_furniture_control_box = NULL;
25 static lv_obj_t * ui_phone_box = NULL;
26 static lv_obj_t * ui_setting_box = NULL;
27 static lv_obj_t * ui_wifi;
28 static lv_obj_t * ui_smart_home;
29 static lv_obj_t * ui_furniture_control;
30 static lv_obj_t * ui_phone;
31 static lv_obj_t * ui_setting;
32 static lv_obj_t * ui_Label_time;
33 static lv_obj_t * ui_Label1;
34 static lv_obj_t * ui_Label4;
35 static lv_obj_t * ui_Label3;
36 static lv_obj_t * ui_Label6;
37 static lv_obj_t * ui_logo;
38 static lv_obj_t * bg_pic;
39 static lv_timer_t * timer_date;
40
41 ///////////////////// ANIMATIONS ////////////////////
42
43 ///////////////////// FUNCTIONS ////////////////////
44 extern int wifi_connected(void);
45
page_switch(lv_event_t * e)46 void page_switch(lv_event_t * e)
47 {
48 void (*func)(void) = lv_event_get_user_data(e);
49
50 if (func)
51 func();
52
53 lv_timer_del(timer_date);
54 lv_obj_del(ui_Screen1);
55 ui_Screen1 = NULL;
56 }
57
home_page_jump_furniture_control_callback(lv_event_t * event)58 void home_page_jump_furniture_control_callback(lv_event_t* event) {
59 printf("page_jump_furniture_control_callback is into \n");
60 furniture_control_ui_init();
61 lv_timer_del(timer_date);
62 lv_obj_del(ui_Screen1);
63 ui_Screen1 = NULL;
64 }
65
date_update(lv_timer_t * timer)66 static void date_update(lv_timer_t * timer)
67 {
68 time_t time_ptr;
69 struct tm * tim;
70
71 time(&time_ptr);
72 tim = localtime(&time_ptr);
73 //printf("update time %04d-%02d-%02d %02d:%02d \n", tim->tm_year + 1900, tim->tm_mon + 1, tim->tm_mday, tim->tm_hour, tim->tm_min);
74 lv_label_set_text_fmt(ui_Label_time, "%04d-%02d-%02d %02d:%02d", tim->tm_year + 1900, tim->tm_mon + 1, tim->tm_mday, tim->tm_hour, tim->tm_min);
75 if (wifi_connected() == RK_WIFI_State_CONNECTED) {
76 lv_img_set_src(ui_wifi, IMG_WIFI_ON);
77 }else {
78 lv_img_set_src(ui_wifi, IMG_WIFI_OFF);
79 }
80 }
81
82 ///////////////////// SCREENS ////////////////////
ui_Screen1_screen_init(void)83 void ui_Screen1_screen_init(void)
84 {
85 ui_Screen1 = lv_obj_create(NULL);
86 lv_obj_clear_flag(ui_Screen1, LV_OBJ_FLAG_SCROLLABLE); /// Flags
87 lv_obj_set_style_bg_img_opa(ui_Screen1, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
88
89 bg_pic = lv_img_create(ui_Screen1);
90 lv_obj_set_pos(bg_pic, 0, 0);
91 lv_img_set_src(bg_pic, BG_PIC_0);
92
93 ui_box_main = lv_obj_create(ui_Screen1);
94 lv_obj_remove_style_all(ui_box_main);
95 lv_obj_set_width(ui_box_main, lv_pct(100));
96 lv_obj_set_height(ui_box_main, lv_pct(33));
97 lv_obj_align(ui_box_main, LV_ALIGN_TOP_LEFT, 0, lv_pct(33));
98 lv_obj_set_flex_flow(ui_box_main, LV_FLEX_FLOW_ROW);//行
99
100 //Smart home page
101
102 ui_smart_home_box = lv_obj_create(ui_box_main);
103 lv_obj_remove_style_all(ui_smart_home_box);
104 lv_obj_set_width(ui_smart_home_box, lv_pct(25));
105 lv_obj_set_height(ui_smart_home_box, lv_pct(100));
106 lv_obj_align(ui_smart_home_box, LV_ALIGN_TOP_LEFT, 0, 0);
107
108 ui_smart_home = lv_obj_create(ui_smart_home_box);
109 lv_obj_set_width(ui_smart_home, 130);
110 lv_obj_set_height(ui_smart_home, 130);
111 lv_obj_set_align(ui_smart_home, LV_ALIGN_CENTER);
112 lv_obj_clear_flag(ui_smart_home, LV_OBJ_FLAG_SCROLLABLE); /// Flags
113 lv_obj_set_style_bg_color(ui_smart_home, lv_color_hex(0xDED6D6), LV_PART_MAIN | LV_STATE_DEFAULT);
114 lv_obj_set_style_bg_opa(ui_smart_home, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
115 lv_obj_set_style_bg_img_src(ui_smart_home, IMG_SMART_HOME, LV_PART_MAIN | LV_STATE_DEFAULT);
116 lv_obj_add_event_cb(ui_smart_home, page_switch, LV_EVENT_CLICKED, smart_home_ui_init);
117
118 ui_Label1 = lv_label_create(ui_smart_home_box);
119 lv_obj_set_width(ui_Label1, LV_SIZE_CONTENT); /// 1
120 lv_obj_set_height(ui_Label1, LV_SIZE_CONTENT); /// 1
121 lv_obj_align(ui_Label1, LV_ALIGN_TOP_LEFT, 4, 135);
122 lv_obj_set_align(ui_Label1, LV_ALIGN_CENTER);
123 lv_obj_add_style(ui_Label1, &style_txt_m, LV_PART_MAIN);
124 lv_obj_set_style_text_color(ui_Label1, lv_color_white(), LV_PART_MAIN);
125 lv_label_set_text(ui_Label1, "智能家居");
126
127 //furniture_control
128 ui_furniture_control_box = lv_obj_create(ui_box_main);
129 lv_obj_remove_style_all(ui_furniture_control_box);
130 lv_obj_set_width(ui_furniture_control_box, lv_pct(25));
131 lv_obj_set_height(ui_furniture_control_box, lv_pct(100));
132 lv_obj_align(ui_furniture_control_box, LV_ALIGN_TOP_LEFT, 0, 0);
133
134 ui_furniture_control = lv_obj_create(ui_furniture_control_box);
135 lv_obj_set_width(ui_furniture_control, 130);
136 lv_obj_set_height(ui_furniture_control, 130);
137 lv_obj_set_align(ui_furniture_control, LV_ALIGN_CENTER);
138 lv_obj_clear_flag(ui_furniture_control, LV_OBJ_FLAG_SCROLLABLE); /// Flags
139 lv_obj_set_style_bg_color(ui_furniture_control, lv_color_hex(0xDED6D6), LV_PART_MAIN | LV_STATE_DEFAULT);
140 lv_obj_set_style_bg_opa(ui_furniture_control, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
141 lv_obj_set_style_bg_img_src(ui_furniture_control, IMG_FURNITURE, LV_PART_MAIN | LV_STATE_DEFAULT);
142 if (ui_furniture_control != NULL) {
143 lv_obj_add_event_cb(ui_furniture_control, home_page_jump_furniture_control_callback, LV_EVENT_CLICKED, NULL);
144 }
145
146 ui_Label4 = lv_label_create(ui_furniture_control_box);
147 lv_obj_set_width(ui_Label4, LV_SIZE_CONTENT); /// 1
148 lv_obj_set_height(ui_Label4, LV_SIZE_CONTENT); /// 1
149 lv_obj_align(ui_Label4, LV_ALIGN_TOP_LEFT, 4, 135);
150 lv_obj_set_align(ui_Label4, LV_ALIGN_CENTER);
151 lv_obj_add_style(ui_Label4, &style_txt_m, LV_PART_MAIN);
152 lv_obj_set_style_text_color(ui_Label4, lv_color_white(), LV_PART_MAIN);
153 lv_label_set_text(ui_Label4, "家电显控");
154
155
156 //phone page
157 ui_phone_box = lv_obj_create(ui_box_main);
158 lv_obj_remove_style_all(ui_phone_box);
159 lv_obj_set_width(ui_phone_box, lv_pct(25));
160 lv_obj_set_height(ui_phone_box, lv_pct(100));
161 lv_obj_align(ui_phone_box, LV_ALIGN_TOP_LEFT, 0, 0);
162
163 ui_phone = lv_obj_create(ui_phone_box);
164 lv_obj_set_width(ui_phone, 130);
165 lv_obj_set_height(ui_phone, 130);
166 lv_obj_set_align(ui_phone, LV_ALIGN_CENTER);
167 lv_obj_clear_flag(ui_phone, LV_OBJ_FLAG_SCROLLABLE); /// Flags
168 lv_obj_set_style_bg_color(ui_phone, lv_color_hex(0xDED6D6), LV_PART_MAIN | LV_STATE_DEFAULT);
169 lv_obj_set_style_bg_opa(ui_phone, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
170 lv_obj_set_style_bg_img_src(ui_phone, IMG_PHONE, LV_PART_MAIN | LV_STATE_DEFAULT);
171
172 ui_Label3 = lv_label_create(ui_phone_box);
173 lv_obj_set_width(ui_Label3, LV_SIZE_CONTENT); /// 1
174 lv_obj_set_height(ui_Label3, LV_SIZE_CONTENT); /// 1
175 lv_obj_align(ui_Label3, LV_ALIGN_TOP_LEFT, 4, 135);
176 lv_obj_set_align(ui_Label3, LV_ALIGN_CENTER);
177 lv_obj_add_style(ui_Label3, &style_txt_m, LV_PART_MAIN);
178 lv_obj_set_style_text_color(ui_Label3, lv_color_white(), LV_PART_MAIN);
179 lv_label_set_text(ui_Label3, "楼宇对讲");
180
181 //setting page
182
183 ui_setting_box = lv_obj_create(ui_box_main);
184 lv_obj_remove_style_all(ui_setting_box);
185 lv_obj_set_width(ui_setting_box, lv_pct(25));
186 lv_obj_set_height(ui_setting_box, lv_pct(100));
187 lv_obj_align(ui_setting_box, LV_ALIGN_TOP_LEFT, 0, 0);
188
189 ui_setting = lv_obj_create(ui_setting_box);
190 lv_obj_set_width(ui_setting, 130);
191 lv_obj_set_height(ui_setting, 130);
192 lv_obj_set_align(ui_setting, LV_ALIGN_CENTER);
193 lv_obj_clear_flag(ui_setting, LV_OBJ_FLAG_SCROLLABLE); /// Flags
194 lv_obj_set_style_bg_color(ui_setting, lv_color_hex(0xDED6D6), LV_PART_MAIN | LV_STATE_DEFAULT);
195 lv_obj_set_style_bg_opa(ui_setting, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
196 lv_obj_set_style_bg_img_src(ui_setting, IMG_SETTING, LV_PART_MAIN | LV_STATE_DEFAULT);
197 lv_obj_add_event_cb(ui_setting, page_switch, LV_EVENT_CLICKED, setting_ui_init);
198
199 ui_Label6 = lv_label_create(ui_setting_box);
200 lv_obj_set_width(ui_Label6, LV_SIZE_CONTENT); /// 1
201 lv_obj_set_height(ui_Label6, LV_SIZE_CONTENT); /// 1
202 lv_obj_align(ui_Label6, LV_ALIGN_TOP_LEFT, 4, 135);
203 lv_obj_set_align(ui_Label6, LV_ALIGN_CENTER);
204 lv_obj_add_style(ui_Label6, &style_txt_m, LV_PART_MAIN);
205 lv_obj_set_style_text_color(ui_Label6, lv_color_white(), LV_PART_MAIN);
206 lv_label_set_text(ui_Label6, "设置");
207
208 ui_wifi = lv_img_create(ui_Screen1);
209 lv_obj_align(ui_wifi, LV_ALIGN_TOP_RIGHT, -10, 10);
210 lv_obj_set_width(ui_wifi, LV_SIZE_CONTENT); /// 64
211 lv_obj_set_height(ui_wifi, LV_SIZE_CONTENT); /// 64
212 lv_img_set_zoom(ui_wifi, 120);
213
214 ui_Label_time = lv_label_create(ui_Screen1);
215 lv_obj_set_width(ui_Label_time, LV_SIZE_CONTENT); /// 1
216 lv_obj_set_height(ui_Label_time, LV_SIZE_CONTENT); /// 1
217 lv_obj_align(ui_Label_time, LV_ALIGN_TOP_RIGHT, -100, 30);
218 date_update(NULL);
219 timer_date = lv_timer_create(date_update, 1000, NULL);
220 lv_timer_enable(timer_date);
221
222 ui_logo = lv_img_create(ui_Screen1);
223 lv_img_set_src(ui_logo, IMG_RK_LOGO);
224 lv_obj_set_width(ui_logo, LV_SIZE_CONTENT); /// 186
225 lv_obj_set_height(ui_logo, LV_SIZE_CONTENT); /// 90
226 lv_obj_align(ui_logo, LV_ALIGN_TOP_LEFT, 10, 10);
227 lv_obj_add_flag(ui_logo, LV_OBJ_FLAG_ADV_HITTEST); /// Flags
228 lv_obj_clear_flag(ui_logo, LV_OBJ_FLAG_SCROLLABLE); /// Flags
229 lv_img_set_zoom(ui_logo, 150);
230
231 }
232
home_ui_init(void)233 void home_ui_init(void)
234 {
235 if (!ui_Screen1)
236 ui_Screen1_screen_init();
237 lv_disp_load_scr(ui_Screen1);
238 //lv_scr_load_anim(ui_Screen1, LV_SCR_LOAD_ANIM_NONE,
239 // 0, 0, true);
240 }
241
rk_demo_init(void)242 void rk_demo_init(void)
243 {
244 LV_EVENT_GET_COMP_CHILD = lv_event_register_id();
245
246 lv_disp_t * dispp = lv_disp_get_default();
247 lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED),
248 false, LV_FONT_DEFAULT);
249 lv_disp_set_theme(dispp, theme);
250
251 home_ui_init();
252 }
253