Exemple #1
0
// Called once per minute
void handle_minute_tick(AppContextRef ctx, PebbleTickEvent* t)
{

    (void)t;
    (void)ctx;

    static char timeText[] = "00:00"; // Needs to be static because it's used by the system later.
    char* time_format;

	static const uint32_t const segments[] = {70};
	VibePattern pat = {
	    .durations = segments,
		.num_segments = ARRAY_LENGTH(segments),
	};
	if (clock_is_24h_style()) {
        time_format = "%R";
    } else {
        time_format = "%I:%M";
    }

    string_format_time(timeText, sizeof(timeText), time_format, t->tick_time);
    if (!clock_is_24h_style() && (timeText[0] == '0')) {
        memmove(timeText, &timeText[1], sizeof(timeText) - 1);
    }

    text_layer_set_text(&timeLayer, timeText);

    // on the top of the hour
    if (t->tick_time->tm_min == 0) {
#ifdef VIBHOUR
        // vibrate once if between 6am and 10pm
        if (t->tick_time->tm_hour >= 6 && t->tick_time->tm_hour <= 22)
            vibes_enqueue_custom_pattern(pat);
#endif
        //perform daily tasks is hour is 0
        if (t->tick_time->tm_hour == 0)
            handle_day(ctx, t);
    }
}
void handle_init(AppContextRef ctx) {
  (void)ctx;
	
  window_init(&window, "KP Sun-Moon-Clock");
  window_stack_push(&window, true /* Animated */);
  window_set_background_color(&window, GColorWhite);

  resource_init_current_app(&APP_RESOURCES);
  font_moon = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_MOON_PHASES_SUBSET_30));
  layer_init(&graphics_sun_layer, window.layer.frame);
  graphics_sun_layer.update_proc = &graphics_sun_layer_update_callback;
  layer_add_child(&window.layer, &graphics_sun_layer);

  rotbmp_pair_init_container(RESOURCE_ID_IMAGE_WATCHFACE_WHITE, RESOURCE_ID_IMAGE_WATCHFACE_BLACK, &watchface_container);
  layer_add_child(&graphics_sun_layer, &watchface_container.layer.layer);
  rotbmp_pair_layer_set_angle(&watchface_container.layer, 1);
  watchface_container.layer.layer.frame.origin.x = (144/2) - (watchface_container.layer.layer.frame.size.w/2);
  watchface_container.layer.layer.frame.origin.y = (168/2) - (watchface_container.layer.layer.frame.size.h/2);

  text_layer_init(&text_time_layer, window.layer.frame);
  text_layer_set_text_color(&text_time_layer, GColorBlack);
  text_layer_set_background_color(&text_time_layer, GColorClear);
  layer_set_frame(&text_time_layer.layer, GRect(0, 35, 144, 30));
  text_layer_set_font(&text_time_layer, fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_CONDENSED_30)));
  layer_add_child(&window.layer, &text_time_layer.layer);

  rotbmp_pair_init_container(RESOURCE_ID_IMAGE_HOUR_WHITE, RESOURCE_ID_IMAGE_HOUR_BLACK, &bitmap_container);
  rotbmp_pair_layer_set_src_ic(&bitmap_container.layer, GPoint(9,56));
  layer_add_child(&window.layer, &bitmap_container.layer.layer);

  text_layer_init(&moonLayer, GRect(0, 100, 144 /* width */, 168-115 /* height */));
  text_layer_set_text_color(&moonLayer, GColorWhite);
  text_layer_set_background_color(&moonLayer, GColorClear);
  text_layer_set_font(&moonLayer, font_moon);
  text_layer_set_text_alignment(&moonLayer, GTextAlignmentCenter);

  handle_day(ctx, NULL);
	
  layer_add_child(&window.layer, &moonLayer.layer);
	
PblTm t;
  get_time(&t);
  rotbmp_pair_layer_set_angle(&bitmap_container.layer, TRIG_MAX_ANGLE * get24HourAngle(t.tm_hour, t.tm_min));
  bitmap_container.layer.layer.frame.origin.x = (144/2) - (bitmap_container.layer.layer.frame.size.w/2);
  bitmap_container.layer.layer.frame.origin.y = (168/2) - (bitmap_container.layer.layer.frame.size.h/2);

  //Day of Week text
  text_layer_init(&dow_layer, GRect(0, 0, 144, 127+26));
  text_layer_set_text_color(&dow_layer, GColorWhite);
  text_layer_set_background_color(&dow_layer, GColorClear);
  text_layer_set_font(&dow_layer, fonts_get_system_font(FONT_KEY_GOTHIC_14_BOLD));
  text_layer_set_text_alignment(&dow_layer, GTextAlignmentLeft);
  text_layer_set_text(&dow_layer, "xxx");
  layer_add_child(&window.layer, &dow_layer.layer);

  //Day of the Month text
  text_layer_init(&dom_layer, GRect(0, 10, 144, 137+26));
  text_layer_set_text_color(&dom_layer, GColorWhite);
  text_layer_set_background_color(&dom_layer, GColorClear);
  text_layer_set_font(&dom_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24));
  text_layer_set_text_alignment(&dom_layer, GTextAlignmentLeft);
  text_layer_set_text(&dom_layer, "00");
  layer_add_child(&window.layer, &dom_layer.layer);
	
  //Month Text
  text_layer_init(&mon_layer, GRect(0, 0, 144, 127+26));
  text_layer_set_text_color(&mon_layer, GColorWhite);
  text_layer_set_background_color(&mon_layer, GColorClear);
  text_layer_set_font(&mon_layer, fonts_get_system_font(FONT_KEY_GOTHIC_14_BOLD));
  text_layer_set_text_alignment(&mon_layer, GTextAlignmentRight);
  text_layer_set_text(&mon_layer, "xxx");
  layer_add_child(&window.layer, &mon_layer.layer);

  //Year Number text
  text_layer_init(&yon_layer, GRect(0, 10, 144, 137+26));
  text_layer_set_text_color(&yon_layer, GColorWhite);
  text_layer_set_background_color(&yon_layer, GColorClear);
  text_layer_set_font(&yon_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24));
  text_layer_set_text_alignment(&yon_layer, GTextAlignmentRight);
  text_layer_set_text(&yon_layer, "00");
  layer_add_child(&window.layer, &yon_layer.layer); 	

  //Sunrise Text 
  text_layer_init(&text_sunrise_layer, window.layer.frame);
  text_layer_set_text_color(&text_sunrise_layer, GColorWhite);
  text_layer_set_background_color(&text_sunrise_layer, GColorClear);
  layer_set_frame(&text_sunrise_layer.layer, GRect(0, 145, 144, 30));
  text_layer_set_font(&text_sunrise_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  layer_add_child(&window.layer, &text_sunrise_layer.layer);

 //Sunset Text
  text_layer_init(&text_sunset_layer, window.layer.frame);
  text_layer_set_text_color(&text_sunset_layer, GColorWhite);
  text_layer_set_background_color(&text_sunset_layer, GColorClear);
  layer_set_frame(&text_sunset_layer.layer, GRect(0, 145, 144, 30));
  text_layer_set_font(&text_sunset_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  layer_add_child(&window.layer, &text_sunset_layer.layer); 

  http_set_app_id(55122370);

  http_register_callbacks((HTTPCallbacks){
    .time=have_time,
    .location=have_location
  }, (void*)ctx);
Exemple #3
0
void handle_init(AppContextRef ctx)
{
    (void)ctx;

    window_init(&window, "Almanac");
    window_stack_push(&window, true /* Animated */);
    window_set_background_color(&window, GColorBlack);

    resource_init_current_app(&APP_RESOURCES);
    font_moon = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_MOON_PHASES_SUBSET_30));
    font_roboto = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_BOLD_SUBSET_49));

    text_layer_init(&timeLayer, GRect(0, 40, 144 /* width */, 168-40 /* height */));
    text_layer_set_text_color(&timeLayer, GColorWhite);
    text_layer_set_background_color(&timeLayer, GColorClear);
    text_layer_set_font(&timeLayer, font_roboto);
    text_layer_set_text_alignment(&timeLayer, GTextAlignmentCenter);

    text_layer_init(&dateLayer, GRect(0, 0, 144 /* width */, 168 /* height */));
    text_layer_set_text_color(&dateLayer, GColorWhite);
    text_layer_set_background_color(&dateLayer, GColorClear);
    text_layer_set_font(&dateLayer, fonts_get_system_font(FONT_KEY_GOTHIC_24_BOLD));
    text_layer_set_text_alignment(&dateLayer, GTextAlignmentCenter);

    text_layer_init(&location, GRect(0, 30, 144 /* width */, 168-30 /* height */));
    text_layer_set_text_color(&location, GColorWhite);
    text_layer_set_background_color(&location, GColorClear);
    text_layer_set_font(&location, fonts_get_system_font(FONT_KEY_GOTHIC_14));
    text_layer_set_text_alignment(&location, GTextAlignmentCenter);

    text_layer_init(&riseLayer, GRect(0, 148, 144 /* width */, 168-148 /* height */));
    text_layer_set_text_color(&riseLayer, GColorWhite);
    text_layer_set_background_color(&riseLayer, GColorClear);
    text_layer_set_font(&riseLayer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
    text_layer_set_text_alignment(&riseLayer, GTextAlignmentLeft);

    text_layer_init(&setLayer, GRect(0, 148, 144 /* width */, 168-148 /* height */));
    text_layer_set_text_color(&setLayer, GColorWhite);
    text_layer_set_background_color(&setLayer, GColorClear);
    text_layer_set_font(&setLayer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
    text_layer_set_text_alignment(&setLayer, GTextAlignmentRight);

    text_layer_init(&moonLayer, GRect(0, 108, 144 /* width */, 168-108 /* height */));
    text_layer_set_text_color(&moonLayer, GColorWhite);
    text_layer_set_background_color(&moonLayer, GColorClear);
    text_layer_set_font(&moonLayer, font_moon);
    text_layer_set_text_alignment(&moonLayer, GTextAlignmentCenter);

    text_layer_init(&moonPercent, GRect(0, 135, 144 /* width */, 168-135 /* height */));
    text_layer_set_text_color(&moonPercent, GColorWhite);
    text_layer_set_background_color(&moonPercent, GColorClear);
    text_layer_set_font(&moonPercent, fonts_get_system_font(FONT_KEY_GOTHIC_14));
    text_layer_set_text_alignment(&moonPercent, GTextAlignmentCenter);

    text_layer_init(&moonLeft, GRect(0, 102, 50, 168-102 /* height */));
    text_layer_set_text_color(&moonLeft, GColorWhite);
    text_layer_set_background_color(&moonLeft, GColorClear);
    text_layer_set_font(&moonLeft, fonts_get_system_font(FONT_KEY_GOTHIC_18));
    text_layer_set_text_alignment(&moonLeft, GTextAlignmentRight);

    text_layer_init(&moonRight, GRect(94, 102, 144-94, 168-102 /* height */));
    text_layer_set_text_color(&moonRight, GColorWhite);
    text_layer_set_background_color(&moonRight, GColorClear);
    text_layer_set_font(&moonRight, fonts_get_system_font(FONT_KEY_GOTHIC_18));
    text_layer_set_text_alignment(&moonRight, GTextAlignmentLeft);

    handle_day(ctx, NULL);
    handle_minute_tick(ctx, NULL);
	text_layer_set_text(&location, LOC);
	
    layer_add_child(&window.layer, &timeLayer.layer);
    layer_add_child(&window.layer, &dateLayer.layer);
    layer_add_child(&window.layer, &riseLayer.layer);
    layer_add_child(&window.layer, &setLayer.layer);
    layer_add_child(&window.layer, &moonLayer.layer);
    layer_add_child(&window.layer, &moonLeft.layer);
    layer_add_child(&window.layer, &moonRight.layer);
    layer_add_child(&window.layer, &moonPercent.layer);
	layer_add_child(&window.layer, &location.layer);
}