static void init(void) { APP_LOG(APP_LOG_LEVEL_DEBUG, "init started"); window = window_create(); window_stack_push(window, true /* Animated */); window_set_background_color(window, GColorBlack); weather_data = malloc(sizeof(WeatherData)); init_network(weather_data); // Setup our layers time_layer_create(TIME_FRAME, window); date_layer_create(DATE_FRAME, window); weather_layer_create(WEATHER_FRAME, window); debug_layer_create(DEBUG_FRAME, window); battery_layer_create(BATTERY_FRAME, window); load_persisted_values(weather_data); // Kickoff our weather loading 'dot' animation weather_animate(weather_data); // Setup a timer incase we miss or don't receive js_ready to manually try ourselves initial_jsready_timer = app_timer_register(MAX_JS_READY_WAIT, initial_jsready_callback, NULL); // Update the screen right away time_t now = time(NULL); handle_tick(localtime(&now), MINUTE_UNIT | DAY_UNIT ); // And then every minute tick_timer_service_subscribe(MINUTE_UNIT, handle_tick); }
static void window_load(Window *window) { Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_bounds(window_layer); int offset = !b_show_numbers * 10; s_simple_bg_layer = layer_create(bounds); layer_set_update_proc(s_simple_bg_layer, bg_update_proc); layer_add_child(window_layer, s_simple_bg_layer); window_set_background_color(window, gcolor_background); #ifdef PBL_RECT date_layer_right = text_layer_create(GRect( (bounds.size.w - DATE_LAYER_HORIZONTAL_OFFSET), (bounds.size.h/2 - DATE_LAYER_VERTICAL_OFFSET), DATE_LAYER_HORIZONTAL_OFFSET, 60)); date_layer_left = text_layer_create(GRect( 0, (bounds.size.h/2 - DATE_LAYER_VERTICAL_OFFSET), DATE_LAYER_HORIZONTAL_OFFSET + offset, 60)); date_layer_bottom = text_layer_create(GRect( 0, (bounds.size.h - DATE_LAYER_BOTTOM_OFFSET), bounds.size.w, DATE_LAYER_BOTTOM_OFFSET)); #else date_layer_right = text_layer_create(GRect( (bounds.size.w - DATE_LAYER_HORIZONTAL_OFFSET), (bounds.size.h/2 - DATE_LAYER_VERTICAL_OFFSET), DATE_LAYER_HORIZONTAL_OFFSET, 60)); date_layer_left = text_layer_create(GRect( 0, (bounds.size.h/2 - DATE_LAYER_VERTICAL_OFFSET), DATE_LAYER_HORIZONTAL_OFFSET + (offset * 4), 60)); date_layer_bottom = text_layer_create(GRect( 0, (bounds.size.h - DATE_LAYER_BOTTOM_OFFSET), bounds.size.w, DATE_LAYER_BOTTOM_OFFSET + (offset * 2))); #endif text_layer_set_background_color(date_layer_right, GColorClear); text_layer_set_text_color(date_layer_right, gcolor_numbers); text_layer_set_text_alignment(date_layer_right, GTextAlignmentCenter); text_layer_set_font(date_layer_right, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD)); text_layer_set_background_color(date_layer_left, GColorClear); text_layer_set_text_color(date_layer_left, gcolor_numbers); text_layer_set_text_alignment(date_layer_left, GTextAlignmentCenter); text_layer_set_font(date_layer_left, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD)); text_layer_set_background_color(date_layer_bottom, GColorClear); text_layer_set_text_color(date_layer_bottom, gcolor_numbers); text_layer_set_text_alignment(date_layer_bottom, GTextAlignmentCenter); text_layer_set_font(date_layer_bottom, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD)); update_date(); layer_add_child(window_layer, text_layer_get_layer(date_layer_right)); layer_add_child(window_layer, text_layer_get_layer(date_layer_left)); layer_add_child(window_layer, text_layer_get_layer(date_layer_bottom)); s_hands_layer = layer_create(bounds); layer_set_update_proc(s_hands_layer, hands_update_proc); layer_add_child(window_layer, s_hands_layer); load_persisted_values(); }