1 #include "demo_guix_smart_watch.h"
2
3 /* Define weather information structure. */
4 typedef struct WEATHER_INFO_STRUCT {
5 GX_RESOURCE_ID day_of_week_text_id;
6 GX_RESOURCE_ID weather_icon_id;
7 INT high_temperature;
8 INT low_temperature;
9 }WEATHER_INFO;
10
11 /* Define weather information. */
12 static WEATHER_INFO SanDiegoWeatherInfoList[]={
13 {GX_STRING_ID_THURSDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 79, 73},
14 {GX_STRING_ID_FRIDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 81, 70},
15 {GX_STRING_ID_SATURDAY, GX_PIXELMAP_ID_WEATHER_ICON_CLOUDY, 76, 67},
16 {GX_STRING_ID_SUNDAY, GX_PIXELMAP_ID_WEATHER_ICON_RAIN, 70, 65},
17 {GX_STRING_ID_MONDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 76, 64},
18 {GX_STRING_ID_TUESDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 77, 68},
19 {GX_STRING_ID_WEDNESDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 82, 74}
20 };
21
22 static WEATHER_INFO LosAngelesWeatherInfoList[] = {
23 {GX_STRING_ID_THURSDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 76, 69},
24 {GX_STRING_ID_FRIDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 81, 70},
25 {GX_STRING_ID_SATURDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 82, 71},
26 {GX_STRING_ID_SUNDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 75, 67},
27 {GX_STRING_ID_MONDAY, GX_PIXELMAP_ID_WEATHER_ICON_CLOUDY, 76, 64},
28 {GX_STRING_ID_TUESDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 79, 71},
29 {GX_STRING_ID_WEDNESDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 81, 72}
30 };
31
32 static WEATHER_INFO SanFranciscoWeatherInfoList[] = {
33 {GX_STRING_ID_THURSDAY, GX_PIXELMAP_ID_WEATHER_ICON_SUNNY, 70, 61},
34 {GX_STRING_ID_FRIDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 72, 65},
35 {GX_STRING_ID_SATURDAY, GX_PIXELMAP_ID_WEATHER_ICON_CLOUDY, 68, 62},
36 {GX_STRING_ID_SUNDAY, GX_PIXELMAP_ID_WEATHER_ICON_CLOUDY, 65, 60},
37 {GX_STRING_ID_MONDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 63, 59},
38 {GX_STRING_ID_TUESDAY, GX_PIXELMAP_ID_WEATHER_ICON_PARTLY_CLOUDY, 67, 61},
39 {GX_STRING_ID_WEDNESDAY, GX_PIXELMAP_ID_WEATHER_ICON_CLOUDY, 70, 62}
40 };
41
42 /******************************************************************************************/
43 /* Update one day weather information. */
44 /******************************************************************************************/
update_one_day_weather_info(WEATHER_INFO_TEMPLATE_CONTROL_BLOCK * template,WEATHER_INFO * info)45 static VOID update_one_day_weather_info(WEATHER_INFO_TEMPLATE_CONTROL_BLOCK* template, WEATHER_INFO* info)
46 {
47 gx_prompt_text_id_set(&template->weather_info_template_day_of_week, info->day_of_week_text_id);
48 gx_icon_pixelmap_set(&template->weather_info_template_weather_icon, info->weather_icon_id, info->weather_icon_id);
49 gx_numeric_prompt_value_set(&template->weather_info_template_high_temperature, info->high_temperature);
50 gx_numeric_prompt_value_set(&template->weather_info_template_low_temperature, info->low_temperature);
51 }
52
53 /******************************************************************************************/
54 /* Update screen weather information. */
55 /******************************************************************************************/
update_screen_weather_info(WEATHER_SCREEN_TEMPLATE_CONTROL_BLOCK * template)56 static VOID update_screen_weather_info(WEATHER_SCREEN_TEMPLATE_CONTROL_BLOCK *template)
57 {
58 WEATHER_INFO *info_list;
59
60 switch (template->base.gx_widget_id)
61 {
62 case ID_SAN_DIEGO_SCREEN:
63 info_list = SanDiegoWeatherInfoList;
64 break;
65
66 case ID_LOS_ANGELES_SCREEN:
67 info_list = LosAngelesWeatherInfoList;
68 break;
69
70 case ID_SAN_FRANCISCO_SCREEN:
71 info_list = SanFranciscoWeatherInfoList;
72 break;
73
74 default:
75 return;
76 }
77
78 update_one_day_weather_info(&template->weather_screen_template_day_win_1, &info_list[0]);
79 update_one_day_weather_info(&template->weather_screen_template_day_win_2, &info_list[1]);
80 update_one_day_weather_info(&template->weather_screen_template_day_win_3, &info_list[2]);
81 update_one_day_weather_info(&template->weather_screen_template_day_win_4, &info_list[3]);
82 update_one_day_weather_info(&template->weather_screen_template_day_win_5, &info_list[4]);
83 update_one_day_weather_info(&template->weather_screen_template_day_win_6, &info_list[5]);
84 update_one_day_weather_info(&template->weather_screen_template_day_win_7, &info_list[6]);
85 }
86
87 /******************************************************************************************/
88 /* Override the default event processing of "weather_screen_template" to handle signals */
89 /* from my child widgets. */
90 /******************************************************************************************/
weather_screen_template_event_process(GX_WINDOW * window,GX_EVENT * event_ptr)91 UINT weather_screen_template_event_process(GX_WINDOW *window, GX_EVENT *event_ptr)
92 {
93 switch (event_ptr->gx_event_type)
94 {
95 case GX_EVENT_SHOW:
96 update_screen_weather_info((WEATHER_SCREEN_TEMPLATE_CONTROL_BLOCK *)window);
97 return screen_template_event_process(window, event_ptr);
98
99 default:
100 return screen_template_event_process(window, event_ptr);
101 }
102
103 return 0;
104 }