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 }