Пример #1
0
void handle_minute_tick(AppContextRef ctx, PebbleTickEvent *t) {
	PblTm currentTime;
	get_time(&currentTime);

	if (current_year != currentTime.tm_year) {
		current_year = currentTime.tm_year - 88;
		calculate_digit_positions(current_year);
		for (int i = 0; i < 3; ++i) {
			if (i < digit_used){
				layer_set_hidden(&bml_year[i].layer, false);
				bitmap_layer_set_bitmap(&bml_year[i], &image_numbers_small[digit_pos[i]].bmp);
				layer_set_frame(&bml_year[i].layer, GRect(SCREENW - SMALL_W, (2+i)*SMALL_H, SMALL_W, SMALL_H));
				layer_mark_dirty(&bml_year[i].layer);
			} else {
				layer_set_hidden(&bml_year[i].layer, true);
			}
		}
		layer_set_frame(&image_lbl_yr.layer.layer, GRect(SCREENW - SMALL_W, (2+digit_used)*SMALL_H, SMALL_W, SMALL_H));
		layer_mark_dirty(&image_lbl_yr.layer.layer);
	}

	if(current_month != currentTime.tm_mon) {
		current_month = currentTime.tm_mon;
		calculate_digit_positions(current_month+1);
		for (int i = 0; i < 3; ++i) {
			if (i < digit_used){
				layer_set_hidden(&bml_month[i].layer, false);
				bitmap_layer_set_bitmap(&bml_month[i], &image_numbers_small[digit_pos[i]].bmp);
				layer_set_frame(&bml_month[i].layer, GRect(SCREENW - 2*SMALL_W, i*SMALL_H, SMALL_W, SMALL_H));
				layer_mark_dirty(&bml_month[i].layer);
			} else {
				layer_set_hidden(&bml_month[i].layer, true);
			}
		}
		layer_set_frame(&image_lbl_mt.layer.layer, GRect(SCREENW - 2*SMALL_W, digit_used*SMALL_H, SMALL_W, SMALL_H));
		layer_mark_dirty(&image_lbl_mt.layer.layer);
	}

	if (current_day != currentTime.tm_mday) {
		current_day = currentTime.tm_mday;
		calculate_digit_positions(current_day);
		for (int i = 0; i < 3; ++i) {
			if (i < digit_used){
				layer_set_hidden(&bml_day[i].layer, false);
				bitmap_layer_set_bitmap(&bml_day[i], &image_numbers_small[digit_pos[i]].bmp);
				layer_set_frame(&bml_day[i].layer, GRect(SCREENW - 3*SMALL_W, i*SMALL_H, SMALL_W, SMALL_H));
				layer_mark_dirty(&bml_day[i].layer);
			} else {
				layer_set_hidden(&bml_day[i].layer, true);
			}
		}
		layer_set_frame(&image_lbl_dy.layer.layer, GRect(SCREENW - 3*SMALL_W, digit_used*SMALL_H, SMALL_W, SMALL_H));
		layer_mark_dirty(&image_lbl_dy.layer.layer);
	}
	if (current_wday != currentTime.tm_wday) {
		current_wday = currentTime.tm_wday;
		layer_set_hidden(&bml_weekday.layer, false);
		bitmap_layer_set_bitmap(&bml_weekday, &image_week_days[current_wday].bmp);
		layer_set_frame(&bml_weekday.layer, GRect(SCREENW - 4*SMALL_W, 0, SMALL_W, SMALL_H));
		layer_mark_dirty(&bml_weekday.layer);
	}

	if (current_hour != currentTime.tm_hour) {
		current_hour = currentTime.tm_hour;
		calculate_digit_positions(calculate_12_format(current_hour));

		if (current_hour >= 5 && current_hour < 12) {
			layer_set_hidden(&img_morning.layer.layer, false);
			layer_set_hidden(&img_noon.layer.layer, true);
			layer_set_hidden(&img_night.layer.layer, true);
		} else if (current_hour >= 12 && current_hour < 19) {
			layer_set_hidden(&img_morning.layer.layer, true);
			layer_set_hidden(&img_noon.layer.layer, false);
			layer_set_hidden(&img_night.layer.layer, true);
		} else {
			layer_set_hidden(&img_morning.layer.layer, true);
			layer_set_hidden(&img_noon.layer.layer, true);
			layer_set_hidden(&img_night.layer.layer, false);
		}

		for (int i = 0; i < 3; ++i) {
			if (i < digit_used){
				layer_set_hidden(&bml_hour[i].layer, false);
				bitmap_layer_set_bitmap(&bml_hour[i], &image_numbers_small[digit_pos[i]].bmp);
				layer_set_frame(&bml_hour[i].layer, GRect(SCREENW - 6*SMALL_W, i*SMALL_H, SMALL_W, SMALL_H));
				layer_mark_dirty(&bml_hour[i].layer);
			} else {
				layer_set_hidden(&bml_hour[i].layer, true);
			}
		}
		layer_set_frame(&image_lbl_hr.layer.layer, GRect(SCREENW - 6*SMALL_W, digit_used*SMALL_H, SMALL_W, SMALL_H));
		layer_mark_dirty(&image_lbl_hr.layer.layer);
	}

	if (current_minute != currentTime.tm_min) {
		current_minute = currentTime.tm_min;
		calculate_digit_positions(current_minute);
		for (int i = 0; i < 3; ++i) {
			if (i < digit_used){
				layer_set_hidden(&bml_minute[i].layer, false);
				bitmap_layer_set_bitmap(&bml_minute[i], &image_numbers_small[digit_pos[i]].bmp);
				layer_set_frame(&bml_minute[i].layer, GRect(SCREENW - 7*SMALL_W, i*SMALL_H, SMALL_W, SMALL_H));
				layer_mark_dirty(&bml_minute[i].layer);
			} else {
				layer_set_hidden(&bml_minute[i].layer, true);
			}
		}
		layer_set_frame(&image_lbl_mn.layer.layer, GRect(SCREENW - 7*SMALL_W, digit_used*SMALL_H, SMALL_W, SMALL_H));
		layer_mark_dirty(&image_lbl_mn.layer.layer);
	}
	
}
Пример #2
0
static void handle_minute_tick(struct tm* time, TimeUnits units_changed)
{
  Layer* window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_frame(window_layer);

  Layer* layer;

  if (current_hr != time->tm_hour)
  {
    current_hr = time->tm_hour;

    //

    layer = bitmap_layer_get_layer(period_layer);

    if (current_hr >= 5 && current_hr < 12)
      bitmap_layer_set_bitmap(period_layer, img_morning);
    else if (current_hr >= 12 && current_hr < 19)
      bitmap_layer_set_bitmap(period_layer, img_noon);
    else
      bitmap_layer_set_bitmap(period_layer, img_night);

    layer_mark_dirty(layer);

    //

    calulate_digit_idxs(calculate_12_format(current_hr));

    for (int i = 0; i < 3; ++i)
    {
      layer = bitmap_layer_get_layer(hr_digits[i]);

      if (i < digit_used)
      {
        layer_set_hidden(layer, false);

        bitmap_layer_set_bitmap(hr_digits[i], img_hr_numbers[digit_idxs[i]]);
        // layer_set_frame(layer, GRect(bounds.size.w - BIG_W * (2 - i), 0, BIG_W, BIG_H));
        layer_set_frame(layer, GRect(bounds.size.w - BIG_W, BIG_H*i, BIG_W, BIG_H));
        layer_mark_dirty(layer);
      }
      else
      {
        layer_set_hidden(layer, true);
      }
    }

    //

    layer = bitmap_layer_get_layer(hr_layer);
    layer_set_frame(layer, GRect(bounds.size.w - BIG_W, digit_used > 1 ? BIG_H*2 : BIG_H, BIG_W, BIG_H));
    layer_mark_dirty(layer);
  }

  //

  if (current_min != time->tm_min)
  {
    current_min = time->tm_min;

    //

    calulate_digit_idxs(time->tm_min);

    for (int i = 0; i < 3; ++i)
    {
      layer = bitmap_layer_get_layer(min_digits[i]);

      if (i < digit_used)
      {
        layer_set_hidden(layer, false);

        bitmap_layer_set_bitmap(min_digits[i], img_min_numbers[digit_idxs[i]]);
        layer_set_frame(layer, GRect(SMALL_W * (1 + i), bounds.size.h - SMALL_H, SMALL_W, SMALL_H));
        layer_mark_dirty(layer);
      }
      else
      {
        layer_set_hidden(layer, true);
      }
    }

    //

    layer = bitmap_layer_get_layer(min_layer);
    layer_set_frame(layer, GRect(SMALL_W * (1 + digit_used), bounds.size.h - SMALL_H, SMALL_W, SMALL_H));
    layer_mark_dirty(layer);
  }
}