Esempio n. 1
0
void window_unload(Window* me) {
	
	layer_remove_child_layers(window_get_root_layer(me));
}
Esempio n. 2
0
static void disable_date(void *data)
{
  draw_date=false;
  layer_mark_dirty(window_get_root_layer(window));
}
Esempio n. 3
0
static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  symbol_layer = text_layer_create(
      (GRect) { .origin = { 0, 30 }, .size = { bounds.size.w, 50 } });
Esempio n. 4
0
TimeWindow* time_window_create(TimeWindowCallbacks callbacks, ETimeState state) {
    TimeWindow *time_window = (TimeWindow*)malloc(sizeof(TimeWindow));
    if (time_window) {
        time_window->window = window_create();
        time_window->callbacks = callbacks;
        if (time_window->window) 
        {
            time_t current_time = time(NULL);
            struct tm* current_tm = localtime(&current_time);
            
            time_window->field_selection = 0;
            time_window->state = state;
            time_window->time.digits[0] = current_tm->tm_hour;
            time_window->time.digits[1] = current_tm->tm_min;
//            for(int i = 0; i < TIME_WINDOW_NUM_CELLS; i++) {
//                time_window->time.digits[i] = 0;
//            }

            // Get window parameters
            Layer *window_layer = window_get_root_layer(time_window->window);
            GRect bounds = layer_get_bounds(window_layer);

            // Main TextLayer
            const GEdgeInsets main_text_insets = {.top = 30};
            time_window->main_text = text_layer_create(grect_inset(bounds, main_text_insets));
            text_layer_set_text(time_window->main_text, "Time Required");
            text_layer_set_font(time_window->main_text, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
            text_layer_set_text_alignment(time_window->main_text, GTextAlignmentCenter);
            layer_add_child(window_layer, text_layer_get_layer(time_window->main_text));

            // Sub TextLayer
            const GEdgeInsets sub_text_insets = {.top = 115, .right = 5, .bottom = 10, .left = 5};
            time_window->sub_text = text_layer_create(grect_inset(bounds, sub_text_insets));
            text_layer_set_text(time_window->sub_text, "up/down to change time");
            text_layer_set_text_alignment(time_window->sub_text, GTextAlignmentCenter);
            text_layer_set_font(time_window->sub_text, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
            layer_add_child(window_layer, text_layer_get_layer(time_window->sub_text));

            // Create selection layer
            const GEdgeInsets selection_insets = GEdgeInsets(
                (bounds.size.h - TIME_WINDOW_SIZE.h) / 2,
                (bounds.size.w - TIME_WINDOW_SIZE.w) / 2);
            time_window->selection = selection_layer_create(grect_inset(bounds, selection_insets), TIME_WINDOW_NUM_CELLS);
            for (int i = 0; i < TIME_WINDOW_NUM_CELLS; i++) {
                selection_layer_set_cell_width(time_window->selection, i, 60);
            }
            selection_layer_set_cell_padding(time_window->selection, 6);
            selection_layer_set_active_bg_color(time_window->selection, GColorRed);
            selection_layer_set_inactive_bg_color(time_window->selection, GColorDarkGray);
            selection_layer_set_click_config_onto_window(time_window->selection, time_window->window);
            selection_layer_set_callbacks(time_window->selection, time_window, (SelectionLayerCallbacks) {
                .get_cell_text = selection_handle_get_text,
                .complete = selection_handle_complete,
                .increment = selection_handle_inc,
                .decrement = selection_handle_dec,
            });
            layer_add_child(window_get_root_layer(time_window->window), time_window->selection);

            // Create status bar
            time_window->status = status_bar_layer_create();
            status_bar_layer_set_colors(time_window->status, GColorClear, GColorBlack);
            layer_add_child(window_layer, status_bar_layer_get_layer(time_window->status));
            return time_window;
        }
    }

  APP_LOG(APP_LOG_LEVEL_ERROR, "Failed to create TimeWindow");
  return NULL;
}
Esempio n. 5
0
static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  // init layers
  simple_bg_layer = layer_create(bounds);
  layer_set_update_proc(simple_bg_layer, bg_update_proc);
  layer_add_child(window_layer, simple_bg_layer);
  
  // init bitmaps
  background_bitmap = transbitmap_create_with_resource_prefix(RESOURCE_ID_IMAGE_BACKGROUND);
  bluetooth_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BLUETOOTH);
  battery_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATTERY);
  bluetooth_layer = bitmap_layer_create(GRect(1,168-30,30,30));
  bitmap_layer_set_bitmap(bluetooth_layer,bluetooth_bitmap);
  layer_set_hidden(bitmap_layer_get_layer(bluetooth_layer),true);
  battery_layer = bitmap_layer_create(GRect(143-32,167-20,32,20));
  bitmap_layer_set_bitmap(battery_layer,battery_bitmap);
  layer_set_hidden(bitmap_layer_get_layer(battery_layer),true);
  
  
  // init hands
  hands_layer = layer_create(bounds);
  layer_set_update_proc(hands_layer, hands_update_proc);
  
  GFont hour_font = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_CONDENSED_SUBSET_24));
  GFont minute_font = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_CONDENSED_SUBSET_20));
  for (int i=0;i<12;i++)
  {
    num_layer[i] = text_layer_create(GRect(1,1,40,20));
    snprintf(num_buffer[i],sizeof(num_buffer[i]),"%d",(i)*5);
    text_layer_set_text(num_layer[i],num_buffer[i]);
    text_layer_set_background_color(num_layer[i], GColorClear);
    text_layer_set_text_color(num_layer[i], GColorBlack);
    text_layer_set_text_alignment(num_layer[i],GTextAlignmentCenter);
    text_layer_set_font(num_layer[i], minute_font);
    layer_add_child(window_layer,text_layer_get_layer(num_layer[i]));
    layer_set_hidden(text_layer_get_layer(num_layer[i]),true);
    
    hour_layer[i] = text_layer_create(GRect(1,1,48,24));
    snprintf(hour_buffer[i],sizeof(hour_buffer[i]),"%d",(i+1));
    text_layer_set_text(hour_layer[i],hour_buffer[i]);
    text_layer_set_background_color(hour_layer[i], GColorClear);
    text_layer_set_text_color(hour_layer[i], GColorBlack);
    text_layer_set_font(hour_layer[i], hour_font);
    text_layer_set_text_alignment(hour_layer[i],GTextAlignmentCenter);
    layer_add_child(window_layer,text_layer_get_layer(hour_layer[i]));
    layer_set_hidden(text_layer_get_layer(hour_layer[i]),true);
  }
  
  
  // Inverter Layer
  inverter_layer = inverter_layer_create(bounds);
  layer_set_hidden(inverter_layer_get_layer(inverter_layer),!getInvert());
  layer_add_child(window_layer,inverter_layer_get_layer(inverter_layer));
  
  layer_add_child(window_layer, hands_layer);
  
  // Bluetooth Stuff
  bluetooth_connection_service_subscribe(handle_bluetooth);
  layer_add_child(window_layer,bitmap_layer_get_layer(bluetooth_layer));
  handle_bluetooth(bluetooth_connection_service_peek());
  
  // Battery Stuff
  battery_state_service_subscribe(handle_battery);
  layer_add_child(window_layer,bitmap_layer_get_layer(battery_layer));
  handle_battery(battery_state_service_peek());
  
  
  // Date Layer
  date_layer = text_layer_create(GRect(104,105,32,32));
  text_layer_set_text(date_layer,date_buffer);
  text_layer_set_background_color(date_layer,GColorClear);
  text_layer_set_text_color(date_layer,GColorWhite);
  text_layer_set_font(date_layer,hour_font);
  text_layer_set_text_alignment(date_layer,GTextAlignmentCenter);
  layer_add_child(window_layer,text_layer_get_layer(date_layer));
  layer_set_hidden(text_layer_get_layer(date_layer),true);
  
  // force update
  time_t now = time(NULL);
  struct tm *t = localtime(&now);
  snprintf(date_buffer, sizeof(date_buffer), "%d",t->tm_mday);
  handle_tick(t, MINUTE_UNIT);
  tick_timer_service_subscribe(MINUTE_UNIT, handle_tick);

}
Esempio n. 6
0
static void initialise_ui(void) {
  s_window = window_create();
  #ifndef PBL_SDK_3
    window_set_fullscreen(s_window, true);
  #endif
  
  s_res_gothic_18_bold = fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD);
  s_res_gothic_14 = fonts_get_system_font(FONT_KEY_GOTHIC_14);
  s_res_gothic_24_bold = fonts_get_system_font(FONT_KEY_GOTHIC_24_BOLD);
  // txt_train_origin
  txt_train_origin = text_layer_create(GRect(5, 0, 134, 21));
  text_layer_set_text(txt_train_origin, "Firenze SMN");
  text_layer_set_font(txt_train_origin, s_res_gothic_18_bold);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_train_origin);
  
  // txt_train_code
  txt_train_code = text_layer_create(GRect(5, 20, 125, 16));
  text_layer_set_text(txt_train_code, "1234");
  text_layer_set_font(txt_train_code, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_train_code);
  
  // txt_update
  txt_update = text_layer_create(GRect(111, 149, 30, 15));
  text_layer_set_text_alignment(txt_update, GTextAlignmentRight);
  text_layer_set_font(txt_update, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_update);
  
  // txt_last_stop
  txt_last_stop = text_layer_create(GRect(22, 64, 104, 16));
  text_layer_set_text(txt_last_stop, "-");
  text_layer_set_font(txt_last_stop, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_last_stop);
  
  // txt_next_stop_dt
  txt_next_stop_dt = text_layer_create(GRect(22, 121, 38, 20));
  text_layer_set_text(txt_next_stop_dt, "--:--");
  text_layer_set_font(txt_next_stop_dt, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_next_stop_dt);
  
  // txt_next_stop
  txt_next_stop = text_layer_create(GRect(21, 104, 112, 18));
  text_layer_set_text(txt_next_stop, "-");
  text_layer_set_font(txt_next_stop, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_next_stop);
  
  // s_textlayer_1
  s_textlayer_1 = text_layer_create(GRect(57, 149, 55, 18));
  text_layer_set_text(s_textlayer_1, "upd @");
  text_layer_set_text_alignment(s_textlayer_1, GTextAlignmentRight);
  text_layer_set_font(s_textlayer_1, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_textlayer_1);
  
  // txt_next_stop_pf
  txt_next_stop_pf = text_layer_create(GRect(86, 121, 42, 20));
  text_layer_set_text(txt_next_stop_pf, "-");
  text_layer_set_text_alignment(txt_next_stop_pf, GTextAlignmentRight);
  text_layer_set_font(txt_next_stop_pf, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_next_stop_pf);
  
  // txt_last_stop_dt
  txt_last_stop_dt = text_layer_create(GRect(23, 81, 44, 20));
  text_layer_set_text(txt_last_stop_dt, "--:--");
  text_layer_set_font(txt_last_stop_dt, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_last_stop_dt);
  
  // txt_last_stop_pf
  txt_last_stop_pf = text_layer_create(GRect(99, 81, 29, 20));
  text_layer_set_text(txt_last_stop_pf, "-");
  text_layer_set_text_alignment(txt_last_stop_pf, GTextAlignmentRight);
  text_layer_set_font(txt_last_stop_pf, s_res_gothic_14);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_last_stop_pf);
  
  // s_textlayer_2
  s_textlayer_2 = text_layer_create(GRect(5, 99, 9, 24));
  text_layer_set_text(s_textlayer_2, ">");
  text_layer_set_text_alignment(s_textlayer_2, GTextAlignmentCenter);
  text_layer_set_font(s_textlayer_2, s_res_gothic_24_bold);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_textlayer_2);
  
  // s_textlayer_3
  s_textlayer_3 = text_layer_create(GRect(2, 60, 13, 24));
  text_layer_set_text(s_textlayer_3, "<");
  text_layer_set_text_alignment(s_textlayer_3, GTextAlignmentCenter);
  text_layer_set_font(s_textlayer_3, s_res_gothic_24_bold);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_textlayer_3);
  
  // txt_train_delay
  txt_train_delay = text_layer_create(GRect(22, 39, 100, 20));
  text_layer_set_text(txt_train_delay, "Text layer");
  text_layer_set_text_alignment(txt_train_delay, GTextAlignmentCenter);
  layer_add_child(window_get_root_layer(s_window), (Layer *)txt_train_delay);
}
Esempio n. 7
0
void init_settings_window()
{
  window_set_background_color(window, GColorWhite);
  int i = 0, s = 0;

  // Section "Actions"
  i = 0;
  menu_section0_items[i++] = (SimpleMenuItem) {
    .title = (s_data.state == STATE_STOP) ? _("Start GPS") : _("Stop GPS"),
    .callback = &menu_start_stop_data_callback,
  };
  menu_section0_items[i++] = (SimpleMenuItem) {
    .title = _("Reset data"),
    .subtitle = _("distance, time, ascent..."),
    .callback = &menu_reset_data_callback,
  };
  if (s_data.page_number == PAGE_DATA || s_data.page_number == PAGE_ALTITUDE) {
    menu_section0_items[i++] = (SimpleMenuItem) {
      .title = _("Configure screen"),
      .subtitle = _("Change fields"),
      .callback = &menu_configure_screen,
    };
  }
  // Header
  menu_sections[s++] = (SimpleMenuSection) {
    .title = _("Actions"),
    .items = menu_section0_items,
    .num_items = i
  };

#ifdef ENABLE_ORUXMAPS
    // Section "Orux"
    i = 0;
    menu_section_orux_items[i++] = (SimpleMenuItem) {
      .title = _("Start OruxMaps"),
      .subtitle = _("Continue previous track"),
      .callback = &menu_orux_callback,
    };
    menu_section_orux_items[i++] = (SimpleMenuItem) {
      .title = _("Stop OruxMaps"),
      .callback = &menu_orux_callback,
    };
    menu_section_orux_items[i++] = (SimpleMenuItem) {
      .title = _("Add waypoint"),
      .callback = &menu_orux_callback,
    };
    // Header
    menu_sections[s++] = (SimpleMenuSection) {
      .title = _("OruxMaps Integration"),
      .items = menu_section_orux_items,
      .num_items = ARRAY_LENGTH(menu_section_orux_items)
    };
#endif
#ifdef ENABLE_MENU_HEART_ZONES
  // Section "Heart rate zones"
  if (heartrate_max > 0) {
    i = 0;
    char buffer_duration[10];
    for (int j = 1; j <= NB_HR_ZONES; j++) {
      snprintf(heartzones_titles[j], sizeof(heartzones_titles[j]), "%d - %s", j, heartrate_zones_name[j]);
      if (heartrate_zones_duration[j] < 60) {
        snprintf(buffer_duration, sizeof(buffer_duration), "%02d\"", heartrate_zones_duration[j]);
      } else {
        snprintf(buffer_duration, sizeof(buffer_duration), "%d'%02d\"", heartrate_zones_duration[j] / 60, heartrate_zones_duration[j] % 60);
      }
      snprintf(heartzones_subtitles[j], sizeof(heartzones_subtitles[j]), "[%d-%d] : %s", j == 1 ? 0 : heartrate_zones_min_hr(j), j == NB_HR_ZONES ? heartrate_max : heartrate_zones_min_hr(j+1), buffer_duration);
      //LOG_INFO("%d %s %s", j, heartzones_titles[j], heartzones_subtitles[j]);
      menu_section_heartzones_items[i++] = (SimpleMenuItem) {
        .title = heartzones_titles[j],
        .subtitle = heartzones_subtitles[j],
      };
    }
    // Header
    menu_sections[s++] = (SimpleMenuSection) {
      .title = _("Heart rate zones"),
      .items = menu_section_heartzones_items,
      .num_items = ARRAY_LENGTH(menu_section_heartzones_items)
    };
  }
#endif
#if MENU_HELP_BUTTONS
    // Section "Buttons"
    i = 0;
    menu_section1_items[i++] = (SimpleMenuItem) {
      .title = _("Up"),
      .subtitle = _("Start/stop GPS"),
    };
    menu_section1_items[i++] = (SimpleMenuItem) {
      .title = _("Middle"),
      .subtitle = _("Change screen"),
    };
    menu_section1_items[i++] = (SimpleMenuItem) {
      .title = _("Down"),
      .subtitle = _("Menu / Zoom map"),
    };
    menu_section1_items[i++] = (SimpleMenuItem) {
      .title = _("Back"),
      .subtitle = _("Double click to exit"),
    };
    // Header
    menu_sections[s++] = (SimpleMenuSection) {
      .title = _("Buttons"),
      .items = menu_section1_items,
      .num_items = ARRAY_LENGTH(menu_section1_items)
    };
#endif


  // Section "About"
  i = 0;
  menu_section2_items[i++] = (SimpleMenuItem) {
    .title = "Ventoo",
    .subtitle = VERSION_TEXT,
  };
  menu_section2_items[i++] = (SimpleMenuItem) {
    .title = _("Authors"),
    .subtitle = APP_COMPANY,
  };
  menu_section2_items[i++] = (SimpleMenuItem) {
    .title = _("More info"),
    .subtitle = "http://pebblebike.com",
  };

  BatteryChargeState charge_state = battery_state_service_peek();
  snprintf(pebble_battery_level, sizeof(pebble_battery_level), "%d %%", charge_state.charge_percent);
  menu_section2_items[i++] = (SimpleMenuItem) {
    .title = _("Pebble battery"),
    .subtitle = pebble_battery_level,
  };
  //APP_LOG(APP_LOG_LEVEL_DEBUG, "phone_battery_level:%ld", s_data.phone_battery_level);
  if (s_data.phone_battery_level > 0) {
    snprintf(phone_battery_level, sizeof(phone_battery_level), "%ld %%", s_data.phone_battery_level);
  } else {
    snprintf(phone_battery_level, sizeof(phone_battery_level), "-");
  }
  menu_section2_items[i++] = (SimpleMenuItem) {
    .title = _("Phone battery"),
    .subtitle = phone_battery_level,
  };
  // Header
  menu_sections[s++] = (SimpleMenuSection) {
    .title = _("About"),
    .items = menu_section2_items,
    .num_items = ARRAY_LENGTH(menu_section2_items)
  };

  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_frame(window_layer);

  // Initialize the simple menu layer
  menu_layer = simple_menu_layer_create(bounds, window, menu_sections, ARRAY_LENGTH(menu_sections), NULL);

  // Add it to the window for display
  layer_add_child(window_layer, simple_menu_layer_get_layer(menu_layer));  
}


/**
 * Public functions
 */

void menu_show()
{
  init_settings_window();

  window_stack_push(window, true);
}

void window_disappear(Window *window) {
  simple_menu_layer_destroy(menu_layer);
}

void menu_init() {
  window = window_create();
#ifdef PBL_SDK_2
  window_set_fullscreen(window, true);
#endif

  window_set_window_handlers(window, (WindowHandlers) {
    .appear = (WindowHandler)handle_appear,
    .disappear = window_disappear,
  });
  
}
void menu_deinit() {
  window_destroy(window);
}
Esempio n. 8
0
static void init() {

  window = window_create();
  window_stack_push(window, true);
  window_set_background_color(window, GColorBlack);
  
  // Custom fonts
  GFont timeFont = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_TEXT_TIME_30));
  GFont amFont = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_TEXT_AM_18));
	
  //  AM / PM Layer
  amLayer = text_layer_create(GRect(10, 60, 144-20, 24));
  text_layer_set_text(amLayer, "");
  text_layer_set_font(amLayer, amFont);
  text_layer_set_text_color(amLayer, GColorWhite);
  text_layer_set_background_color(amLayer, GColorClear);
  text_layer_set_text_alignment(amLayer, GTextAlignmentLeft);

  // Hour layer
  hourLayer = text_layer_create(GRect(0, 75, 144-70, 50));
  text_layer_set_font(hourLayer, timeFont);
  text_layer_set_text_color(hourLayer, GColorWhite);
  text_layer_set_background_color(hourLayer, GColorClear);
  text_layer_set_text_alignment(hourLayer, GTextAlignmentRight);

  // Separator layer
  GRect rect = layer_get_frame(text_layer_get_layer(hourLayer));
  rect.origin.x = rect.size.w;
  rect.size.w = 20;
  dotsLayer = text_layer_create(rect);
  text_layer_set_text(dotsLayer, ":");
  text_layer_set_font(dotsLayer, timeFont);
  text_layer_set_text_color(dotsLayer, GColorWhite);
  text_layer_set_background_color(dotsLayer, GColorClear);
  text_layer_set_text_alignment(dotsLayer, GTextAlignmentCenter);
  
  // Minutes layer
  rect = layer_get_frame(text_layer_get_layer(dotsLayer));
  rect.origin.x += rect.size.w;
  rect.size.w = 144-rect.origin.x;
  minuteLayer = text_layer_create(rect);
  text_layer_set_font(minuteLayer, timeFont);
  text_layer_set_text_color(minuteLayer, GColorWhite);
  text_layer_set_background_color(minuteLayer, GColorClear);
  text_layer_set_text_alignment(minuteLayer, GTextAlignmentLeft);
  
  // Configure time on init
	// Configure time on init
  time_t now = time(NULL);
  struct tm *t = localtime(&now);
	display_time(t);

	// Load layers
	Layer *window_layer = window_get_root_layer(window);
  layer_add_child(window_layer, text_layer_get_layer(amLayer));
  layer_add_child(window_layer, text_layer_get_layer(hourLayer));
  layer_add_child(window_layer, text_layer_get_layer(dotsLayer));
  layer_add_child(window_layer, text_layer_get_layer(minuteLayer));
	
	// Handle minute tick
	tick_timer_service_subscribe(MINUTE_UNIT, handle_minute_tick);
}
static void handle_second_tick(struct tm *tick_time, TimeUnits units_changed) {
  layer_mark_dirty(window_get_root_layer(window));
}
Esempio n. 10
0
PinWindow* pin_window_create(PinWindowCallbacks callbacks) {
  PinWindow *pin_window = (PinWindow*)malloc(sizeof(PinWindow));
  if (pin_window) {
    pin_window->window = window_create();
    pin_window->callbacks = callbacks;
    if (pin_window->window) {
      pin_window->field_selection = 0;
      for(int i = 0; i < NUM_CELLS; i++) {
        pin_window->pin.digits[i] = 0;
      }
      
      // Get window parameters
      Layer *window_layer = window_get_root_layer(pin_window->window);
      GRect bounds = layer_get_bounds(window_layer);
      
      // Main TextLayer
#ifdef PBL_SDK_3
      pin_window->main_text = text_layer_create(GRect(0, 30, bounds.size.w, 40));
#else
      pin_window->main_text = text_layer_create(GRect(0, 15, bounds.size.w, 40));
#endif
      text_layer_set_text(pin_window->main_text, "How many?");
      text_layer_set_font(pin_window->main_text, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
      text_layer_set_text_alignment(pin_window->main_text, GTextAlignmentCenter);
      layer_add_child(window_layer, text_layer_get_layer(pin_window->main_text));
      
      // Sub TextLayer
#ifdef PBL_SDK_3
      pin_window->sub_text = text_layer_create(GRect(1, 125, bounds.size.w, 40));
#else
      pin_window->sub_text = text_layer_create(GRect(1, 110, bounds.size.w, 40));
#endif

      // Create selection layer
#ifdef PBL_SDK_3
      pin_window->selection = selection_layer_create(GRect(8, 75, 128, 34), NUM_CELLS);
#else
      pin_window->selection = selection_layer_create(GRect(8, 60, 128, 34), NUM_CELLS);
#endif
      for (int i = 0; i < NUM_CELLS; i++) {
        selection_layer_set_cell_width(pin_window->selection, i, 40);
      }
      selection_layer_set_cell_padding(pin_window->selection, 4);
#ifdef PBL_COLOR
      selection_layer_set_active_bg_color(pin_window->selection, GColorRed);
      selection_layer_set_inactive_bg_color(pin_window->selection, GColorDarkGray);
#endif
      selection_layer_set_click_config_onto_window(pin_window->selection, pin_window->window);
      selection_layer_set_callbacks(pin_window->selection, pin_window, (SelectionLayerCallbacks) {
        .get_cell_text = selection_handle_get_text,
        .complete = selection_handle_complete,
        .increment = selection_handle_inc,
        .decrement = selection_handle_dec,
      });
      layer_add_child(window_get_root_layer(pin_window->window), pin_window->selection);

#ifdef PBL_SDK_3

#endif
      return pin_window;
    }
Esempio n. 11
0
static void window_load()
{
    // Create window
    Layer *window_layer = window_get_root_layer(window);
    GRect bounds = layer_get_bounds(window_layer);

    // Background layer
    s_bg_layer = layer_create(bounds);
    layer_set_update_proc(s_bg_layer, bg_update_proc);
    layer_add_child(window_layer, s_bg_layer);

    // Time layer
    s_time_layer = layer_create(bounds);
    layer_set_update_proc(s_time_layer, time_update_proc);
    layer_add_child(window_layer, s_time_layer);

    // Date layer
    s_date_layer = layer_create(bounds);
    layer_set_update_proc(s_date_layer, date_update_proc);
    layer_add_child(window_layer, s_date_layer);

    // Battery layer
    s_battery_bitmap[0] = gbitmap_create_with_resource(RESOURCE_ID_BATTERY);
    s_battery_bitmap[1] = gbitmap_create_with_resource(RESOURCE_ID_BATTERY_CHARGING);
    s_battery_layer = layer_create(bounds);
    layer_set_update_proc(s_battery_layer, battery_update_proc);
    layer_add_child(window_layer, s_battery_layer);

    // Bluetooth layer
    s_bt_bitmap = gbitmap_create_with_resource(RESOURCE_ID_BLUETOOTH);
    s_bt_layer = layer_create(bounds);
    layer_set_update_proc(s_bt_layer, bt_update_proc);
    layer_add_child(window_layer, s_bt_layer);

    // Weather layer
    s_weather_bitmap[0] = gbitmap_create_with_resource(RESOURCE_ID_W01D);
    s_weather_bitmap[1] = gbitmap_create_with_resource(RESOURCE_ID_W01N);
    s_weather_bitmap[2] = gbitmap_create_with_resource(RESOURCE_ID_W02D);
    s_weather_bitmap[3] = gbitmap_create_with_resource(RESOURCE_ID_W02N);
    s_weather_bitmap[4] = gbitmap_create_with_resource(RESOURCE_ID_W03);
    s_weather_bitmap[5] = gbitmap_create_with_resource(RESOURCE_ID_W04);
    s_weather_bitmap[6] = gbitmap_create_with_resource(RESOURCE_ID_W09);
    s_weather_bitmap[7] = gbitmap_create_with_resource(RESOURCE_ID_W10D);
    s_weather_bitmap[8] = gbitmap_create_with_resource(RESOURCE_ID_W10N);
    s_weather_bitmap[9] = gbitmap_create_with_resource(RESOURCE_ID_W11);
    s_weather_bitmap[10] = gbitmap_create_with_resource(RESOURCE_ID_W13);
    s_weather_bitmap[11] = gbitmap_create_with_resource(RESOURCE_ID_W50);
    s_weather_layer = layer_create(bounds);
    layer_set_update_proc(s_weather_layer, weather_update_proc);
    layer_add_child(window_layer, s_weather_layer);

    // Foreground layer
    s_bitmap = gbitmap_create_with_resource(RESOURCE_ID_FRAME);
    s_fg_layer = layer_create(bounds);
    layer_set_update_proc(s_fg_layer, fg_update_proc);
    layer_add_child(window_layer, s_fg_layer);

    // Time Zone layer
    s_window_bitmap = gbitmap_create_with_resource(RESOURCE_ID_WINDOW);
    s_tz_layer = layer_create(bounds);
    layer_set_update_proc(s_tz_layer, tz_update_proc);
    layer_add_child(window_layer, s_tz_layer);

    // Init callback
    bluetooth_callback(bluetooth_connection_service_peek());
    battery_callback(battery_state_service_peek());

    // Init
    s_weather_temp = persist_exists(KEY_TEMPERATURE) ? persist_read_int(KEY_TEMPERATURE) : -100;
    s_weather_icon = persist_exists(KEY_ICON) ? persist_read_int(KEY_ICON) : -1;
    s_last_update_time = persist_exists(KEY_LAST_WEATHER_UPDATE_TIME) ? persist_read_int(KEY_LAST_WEATHER_UPDATE_TIME) : -1;
    s_ad_time_zone = persist_exists(KEY_ADTZ) ? persist_read_int(KEY_ADTZ) : 0;
    s_vibe_bt = persist_exists(KEY_BLUETOOTH_VIBE) ? persist_read_int(KEY_BLUETOOTH_VIBE) : 0;
    s_vibe_hourly = persist_exists(KEY_HOURLY_VIBE) ? persist_read_int(KEY_HOURLY_VIBE) : 0;
    s_hour_r = persist_exists(KEY_HOUR_RED) ? persist_read_int(KEY_HOUR_RED) : 0;
    s_hour_g = persist_exists(KEY_HOUR_GREEN) ? persist_read_int(KEY_HOUR_GREEN) : 170;
    s_hour_b = persist_exists(KEY_HOUR_BLUE) ? persist_read_int(KEY_HOUR_BLUE) : 255;
    s_minute_r = persist_exists(KEY_MINUTE_RED) ? persist_read_int(KEY_MINUTE_RED) : 255;
    s_minute_g = persist_exists(KEY_MINUTE_GREEN) ? persist_read_int(KEY_MINUTE_GREEN) : 0;
    s_minute_b = persist_exists(KEY_MINUTE_BLUE) ? persist_read_int(KEY_MINUTE_BLUE) : 0;
    s_second_r = persist_exists(KEY_SECOND_RED) ? persist_read_int(KEY_SECOND_RED) : 0;
    s_second_g = persist_exists(KEY_SECOND_GREEN) ? persist_read_int(KEY_SECOND_GREEN) : 255;
    s_second_b = persist_exists(KEY_SECOND_BLUE) ? persist_read_int(KEY_SECOND_BLUE) : 0;
    s_ps_start_time = persist_exists(KEY_POWER_SAVING_START) ? persist_read_int(KEY_POWER_SAVING_START) : 0;
    s_ps_end_time = persist_exists(KEY_POWER_SAVING_END) ? persist_read_int(KEY_POWER_SAVING_END) : 0;
    s_second_bar = persist_exists(KEY_SECOND_BAR) ? persist_read_int(KEY_SECOND_BAR) : 0;
    s_second_bar_r = persist_exists(KEY_SECOND_BAR_RED) ? persist_read_int(KEY_SECOND_BAR_RED) : 0;
    s_second_bar_g = persist_exists(KEY_SECOND_BAR_GREEN) ? persist_read_int(KEY_SECOND_BAR_GREEN) : 255;
    s_second_bar_b = persist_exists(KEY_SECOND_BAR_BLUE) ? persist_read_int(KEY_SECOND_BAR_BLUE) : 0;
    s_second_rate = persist_exists(KEY_SECOND_REFRESH_RATE) ? persist_read_int(KEY_SECOND_REFRESH_RATE) : 0;
    s_12hour = persist_exists(KEY_12HOUR) ? persist_read_bool(KEY_12HOUR) : false;

    if (s_second_rate < 2)
    {
        app_timer_register(1000, animation_timer_callback, NULL);
    }
    else if (s_second_rate == 2)
    {
        app_timer_register(500, animation_timer_callback, NULL);
    }
    else if (s_second_rate == 3)
    {
        app_timer_register(250, animation_timer_callback, NULL);
    }
    else if (s_second_rate == 4)
    {
        app_timer_register(100, animation_timer_callback, NULL);
    }
    else if (s_second_rate == 5)
    {
        app_timer_register(66, animation_timer_callback, NULL);
    }
    s_last_second = -1;
    s_msecond = 0;

}
Esempio n. 12
0
// Creates all of the objects needed for the watch.  Normally called
// only by handle_init(), but might be invoked midstream in a
// memory-panic situation.
void create_objects() {
  app_log(APP_LOG_LEVEL_INFO, __FILE__, __LINE__, "create_objects");
  window = window_create();
  assert(window != NULL);

  struct WindowHandlers window_handlers;
  memset(&window_handlers, 0, sizeof(window_handlers));
  window_handlers.load = window_load_handler;
  window_handlers.appear = window_appear_handler;
  window_handlers.disappear = window_disappear_handler;
  window_handlers.unload = window_unload_handler;
  window_set_window_handlers(window, window_handlers);

  window_set_fullscreen(window, true);
  window_stack_push(window, false);

  hand_cache_init(&hour_cache);
  hand_cache_init(&minute_cache);
  hand_cache_init(&second_cache);

  Layer *window_layer = window_get_root_layer(window);
  GRect window_frame = layer_get_frame(window_layer);

  clock_face_layer = layer_create(window_frame);
  assert(clock_face_layer != NULL);
  layer_set_update_proc(clock_face_layer, &clock_face_layer_update_callback);
  layer_add_child(window_layer, clock_face_layer);

  {
    const struct IndicatorTable *window = &battery_table[config.face_index];
    init_battery_gauge(window_layer, window->x, window->y, window->invert, window->opaque);
  }
  {
    const struct IndicatorTable *window = &bluetooth_table[config.face_index];
    init_bluetooth_indicator(window_layer, window->x, window->y, window->invert, window->opaque);
  }

  for (int i = 0; i < NUM_DATE_WINDOWS; ++i) {
    const struct IndicatorTable *window = &date_windows[i][config.face_index];
    Layer *layer = layer_create_with_data(GRect(window->x - 19, window->y - 8, 39, 19), sizeof(DateWindowData));
    assert(layer != NULL);
    date_window_layers[i] = layer;
    DateWindowData *data = (DateWindowData *)layer_get_data(layer);
    data->date_window_index = i;

    layer_set_update_proc(layer, &date_window_layer_update_callback);
    layer_add_child(window_layer, layer);
  }

#ifdef MAKE_CHRONOGRAPH
  create_chrono_objects();
#endif  // MAKE_CHRONOGRAPH

  // Init all of the hands, taking care to arrange them in the correct
  // stacking order.
  int i;
  for (i = 0; stacking_order[i] != STACKING_ORDER_DONE; ++i) {
    switch (stacking_order[i]) {
    case STACKING_ORDER_HOUR:
      hour_layer = layer_create(window_frame);
      assert(hour_layer != NULL);
      layer_set_update_proc(hour_layer, &hour_layer_update_callback);
      layer_add_child(window_layer, hour_layer);
      break;

    case STACKING_ORDER_MINUTE:
      minute_layer = layer_create(window_frame);
      assert(minute_layer != NULL);
      layer_set_update_proc(minute_layer, &minute_layer_update_callback);
      layer_add_child(window_layer, minute_layer);
      break;

    case STACKING_ORDER_SECOND:
      second_layer = layer_create(window_frame);
      assert(second_layer != NULL);
      layer_set_update_proc(second_layer, &second_layer_update_callback);
      layer_add_child(window_layer, second_layer);
      break;

    case STACKING_ORDER_CHRONO_MINUTE:
#if defined(ENABLE_CHRONO_MINUTE_HAND) && defined(MAKE_CHRONOGRAPH)
      chrono_minute_layer = layer_create(window_frame);
      assert(chrono_minute_layer != NULL);
      layer_set_update_proc(chrono_minute_layer, &chrono_minute_layer_update_callback);
      layer_add_child(window_layer, chrono_minute_layer);
#endif  // ENABLE_CHRONO_MINUTE_HAND
      break;

    case STACKING_ORDER_CHRONO_SECOND:
#if defined(ENABLE_CHRONO_SECOND_HAND) && defined(MAKE_CHRONOGRAPH)
      chrono_second_layer = layer_create(window_frame);
      assert(chrono_second_layer != NULL);
      layer_set_update_proc(chrono_second_layer, &chrono_second_layer_update_callback);
      layer_add_child(window_layer, chrono_second_layer);
#endif  // ENABLE_CHRONO_SECOND_HAND
      break;

    case STACKING_ORDER_CHRONO_TENTH:
#if defined(ENABLE_CHRONO_TENTH_HAND) && defined(MAKE_CHRONOGRAPH)
      chrono_tenth_layer = layer_create(window_frame);
      assert(chrono_tenth_layer != NULL);
      layer_set_update_proc(chrono_tenth_layer, &chrono_tenth_layer_update_callback);
      layer_add_child(window_layer, chrono_tenth_layer);
#endif  // ENABLE_CHRONO_TENTH_HAND
      break;
    }
  }
}
Esempio n. 13
0
static void main_window_load(Window *window) {
  
  
  // Set up the weather areas
  // Use system font, apply it and add to Window
  s_weather_font = fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD);
  s_weather_title_font = fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD);
  
  //Create GBitmap, then set to created BitmapLayer
  s_background_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BACKGROUND);
  s_background_layer = bitmap_layer_create(GRect(0, 0, 144, 168));
  bitmap_layer_set_bitmap(s_background_layer, s_background_bitmap);
  layer_add_child(window_get_root_layer(window), bitmap_layer_get_layer(s_background_layer));
  
  // Create time TextLayer
  s_time_layer = text_layer_create(GRect(0, 138, 144, 30));
  text_layer_set_background_color(s_time_layer, GColorClear);
  text_layer_set_text_color(s_time_layer, GColorWhite);
  
  //Apply to TextLayer
  text_layer_set_font(s_time_layer, s_weather_font);
  text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter);
  
  // Add it as a child layer to the Window's root layer
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_time_layer));

  // Set some intial string
  text_layer_set_text(s_time_layer, "00:00:00");  

  
  // Create temperature Layer
  s_weather_layer[0] = text_layer_create(GRect(0, 0, 144, 28));
  s_weather_title[0] = text_layer_create(GRect(0, 28, 144, 18));
  s_weather_layer[1] = text_layer_create(GRect(0, 46, 144, 28));
  s_weather_title[1] = text_layer_create(GRect(0, 74, 144, 18));
  s_weather_layer[2] = text_layer_create(GRect(0, 92, 144, 28));
  s_weather_title[2] = text_layer_create(GRect(0, 120, 144, 18));
  

  int i;
  for (i =0; i < 3; i++)
    {
    text_layer_set_background_color(s_weather_layer[i], GColorClear);
    text_layer_set_text_color(s_weather_layer[i], GColorWhite);
    text_layer_set_text_alignment(s_weather_layer[i], GTextAlignmentCenter);
    text_layer_set_text(s_weather_layer[i], "00-00 NNN");
    text_layer_set_font(s_weather_layer[i], s_weather_font);
    layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_weather_layer[i]));

    text_layer_set_background_color(s_weather_title[i], GColorClear);
    text_layer_set_text_color(s_weather_title[i], GColorWhite);
    text_layer_set_text_alignment(s_weather_title[i], GTextAlignmentCenter);
    text_layer_set_font(s_weather_title[i], s_weather_title_font);
    layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_weather_title[i]));

  }
  
  text_layer_set_text(s_weather_title[0], "North Head");
  text_layer_set_text(s_weather_title[1], "Sydney Harbour");
  text_layer_set_text(s_weather_title[2], "Fort Denison");
  
  // Make sure the time is displayed from the start
  update_time();
}
Esempio n. 14
0
//Hippo Command, I put my pants on backwards!
void handle_init(void) {
    APP_LOG(APP_LOG_LEVEL_DEBUG, "INIT MEMORY: %u bytes used, %u bytes free", (unsigned) heap_bytes_used(), (unsigned) heap_bytes_free());
    
    // TODO: restore this once done profiling
#ifndef LOCK_SHIP
    srand(time(NULL));
    load_holomesh(rand() % c_craft_info_count);
#else
    load_holomesh(LOCK_SHIP);
#endif
    
    APP_LOG(APP_LOG_LEVEL_DEBUG, "UI MEMORY: %u bytes used, %u bytes free", (unsigned) heap_bytes_used(), (unsigned) heap_bytes_free());

    my_window = window_create();
    window_set_background_color(my_window, GColorBlack);

    GRect logoRect = GRect(0, 12, c_viewportWidth, c_viewportWidth);
    logoLayer = bitmap_layer_create(logoRect);
    bitmap_layer_set_bitmap(logoLayer, logoBitmap);
    layer_add_child(window_get_root_layer(my_window), bitmap_layer_get_layer(logoLayer));

    // Fonts    
    g_font_sw = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_14));
    g_font_sw_symbol = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_SYMBOL_14));
    g_font_time = fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD);
    g_font_info = fonts_get_system_font(FONT_KEY_GOTHIC_14);
    
    // Paint layer
    frameBufferLayer = bitmap_layer_create(GRect(0, 0, c_viewportWidth, c_viewportHeight));
    layer_add_child(window_get_root_layer(my_window), bitmap_layer_get_layer(frameBufferLayer));
    
    frameBufferBitmap = gbitmap_create_blank_with_palette(
        GSize(c_viewportWidth, c_viewportHeight),
        GBitmapFormat2BitPalette,
        c_palette,
        false);
    bitmap_layer_set_bitmap(frameBufferLayer, frameBufferBitmap);
    bitmap_layer_set_compositing_mode(frameBufferLayer, GCompOpSet);
    
    paint();

    GRect layerSize = GRect(0, 0, c_viewportWidth, c_viewportHeight);

    // Two small text layers
    textLayer = text_layer_create(layerSize);
    text_layer_set_background_color(textLayer, GColorClear);
    text_layer_set_text_color(textLayer, GColorYellow);
    text_layer_set_font(textLayer, g_font_sw);
    layer_add_child(window_get_root_layer(my_window), text_layer_get_layer(textLayer));

    //Jet Force Push-up, you silly-billy.   
    textLayerSym = text_layer_create(layerSize);
    text_layer_set_background_color(textLayerSym, GColorClear);
    text_layer_set_text_color(textLayerSym, GColorYellow);
    text_layer_set_font(textLayerSym, g_font_sw_symbol);
    layer_set_hidden(text_layer_get_layer(textLayerSym), true);
    layer_add_child(window_get_root_layer(my_window), text_layer_get_layer(textLayerSym));

    //Hippo Command, I also put my watch on backwards!

    // Info text layer
    infoTextLayer = text_layer_create(layerSize);
    text_layer_set_background_color(infoTextLayer, GColorClear);
    text_layer_set_text_color(infoTextLayer, GColorYellow);
    text_layer_set_font(infoTextLayer, g_font_info);
    layer_add_child(window_get_root_layer(my_window), text_layer_get_layer(infoTextLayer));
    
    // Time
    GSize timeSize = graphics_text_layout_get_content_size(
        "00:00 AM",
        g_font_time,
        layerSize,
        0,
        GTextAlignmentLeft);
    GRect timeRect = { GPoint(DT_EDGE_PAD, c_viewportHeight - timeSize.h), GSize(c_viewportWidth, timeSize.h) };
    timeLayer = text_layer_create(timeRect);
    text_layer_set_background_color(timeLayer, GColorClear);
    text_layer_set_text_color(timeLayer, GColorYellow);
    text_layer_set_font(timeLayer, g_font_time);
    //text_layer_set_text(timeLayer, "23:45 AM");
    layer_add_child(window_get_root_layer(my_window), text_layer_get_layer(timeLayer));
    
    // Date
    dateLayer = text_layer_create(layerSize);
    text_layer_set_background_color(dateLayer, GColorClear);
    text_layer_set_text_color(dateLayer, GColorYellow);
    text_layer_set_font(dateLayer, g_font_info);
    layer_add_child(window_get_root_layer(my_window), text_layer_get_layer(dateLayer));
    


    time_t t = time(NULL);
    update_time_display(localtime(&t));
    update_date_display(localtime(&t));
    update_title_and_info();
    
    APP_LOG(APP_LOG_LEVEL_DEBUG, "FINAL MEMORY: %u bytes used, %u bytes free", (unsigned) heap_bytes_used(), (unsigned) heap_bytes_free());
    
    window_stack_push(my_window, true);
    tick_timer_service_subscribe(SECOND_UNIT | MINUTE_UNIT, tick_handler);
    
    g_timer = app_timer_register(c_refreshTimer, animation_timer_trigger, NULL);
    
    accel_data_service_subscribe(c_accelSampleCount, accel_data_handler);
    accel_service_set_sampling_rate(ACCEL_SAMPLING_25HZ);
}
Esempio n. 15
0
static void initialise_ui(void) {
  s_window = window_create();
  #ifndef PBL_SDK_3
    window_set_fullscreen(s_window, true);
  #endif
  
  s_res_roboto_bold_subset_49 = fonts_get_system_font(FONT_KEY_ROBOTO_BOLD_SUBSET_49);
  s_res_roboto_condensed_21 = fonts_get_system_font(FONT_KEY_ROBOTO_CONDENSED_21);
  
  // s_time
  s_time = text_layer_create(GRect(0, 0, 144, 25));
  text_layer_set_text(s_time, "12:34");
  text_layer_set_text_alignment(s_time, GTextAlignmentCenter);
  text_layer_set_font(s_time, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_time);
  
  // s_time_elapsed
  s_time_elapsed = text_layer_create(GRect(0, 25, 144, 25));
  text_layer_set_background_color(s_time_elapsed, GColorClear);
  text_layer_set_text_color(s_time_elapsed, GColorBlack);
  text_layer_set_text(s_time_elapsed, "00:00:00");
  text_layer_set_text_alignment(s_time_elapsed, GTextAlignmentCenter);
  text_layer_set_font(s_time_elapsed, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_time_elapsed);
  
  // s_countdown
  s_countdown = text_layer_create(GRect(20, 50, 100, 49));
  text_layer_set_background_color(s_countdown, GColorClear);
  text_layer_set_text(s_countdown, "23");
  text_layer_set_text_alignment(s_countdown, GTextAlignmentCenter);
  text_layer_set_font(s_countdown, s_res_roboto_bold_subset_49);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_countdown);
  
  // s_countup
  s_countup = text_layer_create(GRect(20, 108, 100, 23));
  text_layer_set_background_color(s_countup, GColorClear);
  text_layer_set_text(s_countup, "37");
  text_layer_set_text_alignment(s_countup, GTextAlignmentCenter);
  text_layer_set_font(s_countup, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_countup);
  
  // s_set
  s_set = text_layer_create(GRect(0, 143, 144, 25));
  text_layer_set_text(s_set, "Set: 1");
  text_layer_set_font(s_set, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_set);
  
  // s_menubar
  s_menubar = bitmap_layer_create(GRect(112, 0, 32, 168));
  bitmap_layer_set_background_color(s_menubar, GColorBlack);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_menubar);
  
  // s_restart1
  s_restart1 = text_layer_create(GRect(108, 15, 35, 21));
  text_layer_set_background_color(s_restart1, GColorClear);
  text_layer_set_text_color(s_restart1, GColorWhite);
  text_layer_set_text(s_restart1, "1");
  text_layer_set_text_alignment(s_restart1, GTextAlignmentRight);
  text_layer_set_font(s_restart1, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_restart1);
  
  // s_restart2
  s_restart2 = text_layer_create(GRect(108, 70, 35, 21));
  text_layer_set_background_color(s_restart2, GColorClear);
  text_layer_set_text_color(s_restart2, GColorWhite);
  text_layer_set_text(s_restart2, "2");
  text_layer_set_text_alignment(s_restart2, GTextAlignmentRight);
  text_layer_set_font(s_restart2, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_restart2);
  
  // s_restart3
  s_restart3 = text_layer_create(GRect(108, 129, 35, 21));
  text_layer_set_background_color(s_restart3, GColorClear);
  text_layer_set_text_color(s_restart3, GColorWhite);
  text_layer_set_text(s_restart3, "3");
  text_layer_set_text_alignment(s_restart3, GTextAlignmentRight);
  text_layer_set_font(s_restart3, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_restart3);
  
  /*
  // s_duration
  s_duration = text_layer_create(GRect(20, 43, 100, 23));
  text_layer_set_background_color(s_duration, GColorClear);
  text_layer_set_text(s_duration, "12");
  text_layer_set_text_alignment(s_duration, GTextAlignmentCenter);
  text_layer_set_font(s_duration, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_duration);
  */
}
static void window_load(Window *window) {
    Layer *window_layer = window_get_root_layer(window);
    GRect bounds = layer_get_bounds(window_layer);

    s_layer = layer_create(layer_get_bounds(window_get_root_layer(window)));
    layer_add_child(window_get_root_layer(window), s_layer);
    layer_set_update_proc(s_layer, draw_watchface);

    uint16_t vert_padding = (bounds.size.h - ((NUM_BARS - 1)*PADDING) - (NUM_BARS*HEIGHT)) / 2;
    uint16_t width = bounds.size.w - (2 * PADDING); //this is 120 on basalt

    //create the unary ticks image
    s_unary_ticks_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_UNARY_TICKS);
    s_unary_ticks_layer = bitmap_layer_create(GRect(PADDING,vert_padding,width + 1,HEIGHT));
    bitmap_layer_set_background_color(s_unary_ticks_layer, GColorClear);
    bitmap_layer_set_bitmap(s_unary_ticks_layer, s_unary_ticks_bitmap);
    bitmap_layer_set_compositing_mode(s_unary_ticks_layer, GCompOpSet);
    layer_add_child(window_get_root_layer(window), bitmap_layer_get_layer(s_unary_ticks_layer));

    //create the ternary ticks image and layer for minutes
    s_ternary_ticks_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_TERNARY_TICKS);
    s_ternary_ticks_layer_minutes = bitmap_layer_create(GRect(PADDING, vert_padding + PADDING + HEIGHT, width + 1, HEIGHT));
    bitmap_layer_set_background_color(s_ternary_ticks_layer_minutes, GColorClear);
    bitmap_layer_set_bitmap(s_ternary_ticks_layer_minutes, s_ternary_ticks_bitmap);
    bitmap_layer_set_compositing_mode(s_ternary_ticks_layer_minutes, GCompOpSet);
    layer_add_child(window_get_root_layer(window), bitmap_layer_get_layer(s_ternary_ticks_layer_minutes));

    //create the ternary ticks layer for seconds
    s_ternary_ticks_layer_seconds = bitmap_layer_create(GRect(PADDING, vert_padding + (2*PADDING) + (2*HEIGHT), width + 1, HEIGHT));
    bitmap_layer_set_background_color(s_ternary_ticks_layer_seconds, GColorClear);
    bitmap_layer_set_bitmap(s_ternary_ticks_layer_seconds, s_ternary_ticks_bitmap);
    bitmap_layer_set_compositing_mode(s_ternary_ticks_layer_seconds, GCompOpSet);
    layer_add_child(window_get_root_layer(window), bitmap_layer_get_layer(s_ternary_ticks_layer_seconds));

    if (persist_read_int(KEY_TOP_BAR_COLOR)) {
        s_top_bar_color = GColorFromHEX(persist_read_int(KEY_TOP_BAR_COLOR));
        ///	set_background_and_text_color(background_color);
    } else {
        s_top_bar_color = GColorRed;
    }

    if (persist_read_int(KEY_MIDDLE_BAR_COLOR)) {
        s_middle_bar_color = GColorFromHEX(persist_read_int(KEY_MIDDLE_BAR_COLOR));
    } else {
        s_middle_bar_color = GColorGreen;
    }

    if (persist_read_int(KEY_BOTTOM_BAR_COLOR)) {
        s_bottom_bar_color = GColorFromHEX(persist_read_int(KEY_BOTTOM_BAR_COLOR));
    } else {
        s_bottom_bar_color = GColorBlue;
    }

    if (persist_read_int(KEY_BACKGROUND_COLOR)) {
        set_background_and_text_color(persist_read_int(KEY_BACKGROUND_COLOR));
    } else {
        set_background_and_text_color(0xFFFFFF);
    }

    if (persist_read_int(KEY_DEGREEOPTION)) {
        degreeOption = persist_read_int(KEY_DEGREEOPTION);
    } else {
        degreeOption = 0;
    }

    s_weather_layer = text_layer_create(GRect(0,152, 144, 14));
    text_layer_set_font(s_weather_layer, fonts_get_system_font(FONT_KEY_GOTHIC_14));
    text_layer_set_background_color(s_weather_layer, GColorClear);
    text_layer_set_text_color(s_weather_layer, gcolor_legible_over(background_color));
    text_layer_set_text_alignment(s_weather_layer, GTextAlignmentRight);
    text_layer_set_text(s_weather_layer, "Loading...");
    layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_weather_layer));

    s_bluetooth_icon_layer = layer_create(GRect(0,0,30,30));
    layer_set_update_proc(s_bluetooth_icon_layer, bluetooth_update_proc);
    bluetooth_path = gpath_create(&BLUETOOTH_INFO);
    layer_add_child(window_get_root_layer(window), s_bluetooth_icon_layer);

    //show the correct state of the bluetooth connection from the start
#ifdef PBL_SDK_2
    bluetooth_callback(bluetooth_connection_service_peek());
#elif PBL_SDK_3
    bluetooth_callback(connection_service_peek_pebble_app_connection());
#endif

    s_date_layer = text_layer_create(GRect(0,0,144,14));
    text_layer_set_font(s_date_layer, fonts_get_system_font(FONT_KEY_GOTHIC_14));
    text_layer_set_text_color(s_date_layer, gcolor_legible_over(background_color));
    text_layer_set_background_color(s_date_layer, GColorClear);
    text_layer_set_text_alignment(s_date_layer, GTextAlignmentRight);
    layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_date_layer));

}
Esempio n. 17
0
static void hands_update_proc(Layer *layer, GContext *ctx) {
  time_t now = time(NULL);
  struct tm *t = localtime(&now);
  
  graphics_context_set_stroke_color(ctx, hand_color);
  
  #ifdef PBL_COLOR
    graphics_context_set_antialiased(ctx, false);
  #endif
  
  GRect bounds = layer_get_bounds(layer);
  GPoint center = grect_center_point(&bounds);
  
  //minute hand
  int16_t hand_length = bounds.size.w / 2 ;
  int32_t angle = TRIG_MAX_ANGLE * t->tm_min / 60;
  GPoint hand = {
    .x = (int16_t)(sin_lookup(angle) * (int32_t)hand_length / TRIG_MAX_RATIO) + center.x,
    .y = (int16_t)(-cos_lookup(angle) * (int32_t)hand_length / TRIG_MAX_RATIO) + center.y,
  };
  #ifdef PBL_COLOR
    graphics_context_set_stroke_width(ctx, 3);
  #endif
  graphics_draw_line(ctx, hand, center);
  
  //hour hand
  hand_length = hand_length - 25;
  angle = (TRIG_MAX_ANGLE * (((t->tm_hour % 12) * 6) + (t->tm_min / 10))) / (12 * 6);
  hand = (GPoint){
    .x = (int16_t)(sin_lookup(angle) * (int32_t)hand_length / TRIG_MAX_RATIO) + center.x,
    .y = (int16_t)(-cos_lookup(angle) * (int32_t)hand_length / TRIG_MAX_RATIO) + center.y,
  };
  #ifdef PBL_COLOR
   graphics_context_set_stroke_width(ctx, 5);
  #endif
  graphics_draw_line(ctx, hand, center);
  
  #ifndef PBL_RECT
    graphics_context_set_fill_color(ctx, hand_color);
    graphics_fill_circle(ctx, center, 7);
  #endif
  
}



static void handle_second_tick(struct tm *tick_time, TimeUnits units_changed) {
  
  #ifndef PBL_COLOR
     memset(aplite_visited, 0, 168*20);
  #endif
  
 
  //adjusting shadow direction according to minute hand location
  if (tick_time->tm_min >= 0 && tick_time->tm_min < 15) {
    s_effect_offset.offset_x = SHADOW_LENGTH;
    s_effect_offset.offset_y = SHADOW_LENGTH;
  } else if (tick_time->tm_min >= 15 && tick_time->tm_min < 30) {
    s_effect_offset.offset_x = -SHADOW_LENGTH;
    s_effect_offset.offset_y = SHADOW_LENGTH;
  } else if (tick_time->tm_min >= 30 && tick_time->tm_min < 45) {  
    s_effect_offset.offset_x = -SHADOW_LENGTH;
    s_effect_offset.offset_y = -SHADOW_LENGTH;  
  } else {
    s_effect_offset.offset_x = SHADOW_LENGTH;
    s_effect_offset.offset_y = -SHADOW_LENGTH;  
  }  
  layer_mark_dirty(window_get_root_layer(window));
}

static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  s_hands_layer = layer_create(bounds);
  layer_set_update_proc(s_hands_layer, hands_update_proc);
  layer_add_child(window_layer, s_hands_layer);
  
  //creating shadow layer
  s_effect_offset = (EffectOffset){
    .orig_color = hand_color,
    .offset_color = shadow_color,
    .option = 1
      
    // creating array for "visited" pixels and assigning it to shadow effect parameter
    #ifndef PBL_COLOR  
      ,
      .aplite_visited = aplite_visited
    #endif 
  };
  
  s_effect_layer = effect_layer_create(bounds);
  effect_layer_add_effect(s_effect_layer, effect_shadow, &s_effect_offset);
  effect_layer_add_effect(s_effect_layer, effect_blur, (void*)1);
  layer_add_child(window_layer, effect_layer_get_layer(s_effect_layer));
  
}

static void window_unload(Window *window) {
  layer_destroy(s_hands_layer);
}
Esempio n. 18
0
// Create the initial window
static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  //GRect bounds = layer_get_bounds(window_layer);
  text_layer = text_layer_create((GRect) { .origin = { 0, 0 }, .size = { /*bounds.size.w*/ 144, 168} });
static void initialise_ui(void) {
  s_window = window_create();
  window_set_background_color(s_window, GColorBlack);
  #ifndef PBL_SDK_3
    window_set_fullscreen(s_window, 1);
  #endif

  s_res_bitham_30_black = fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD);
  s_res_roboto_condensed_21 = fonts_get_system_font(FONT_KEY_ROBOTO_CONDENSED_21);
  s_res_roboto_condensed_16 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_CONDENSED_16));
  // s_time_text_layer
  s_time_text_layer = text_layer_create(GRect(0, 20, 144, 50));
  text_layer_set_text(s_time_text_layer, "03:04");
  text_layer_set_text_alignment(s_time_text_layer, GTextAlignmentCenter);
  text_layer_set_font(s_time_text_layer, s_res_bitham_30_black);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_time_text_layer);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_time_text_layer);

  // s_temperature_text_layer
  s_temperature_text_layer = text_layer_create(GRect(10, 0, 110, 16));
  text_layer_set_background_color(s_temperature_text_layer, GColorBlack);
  text_layer_set_text_color(s_temperature_text_layer, GColorWhite);
  text_layer_set_text(s_temperature_text_layer, "...");
  //text_layer_set_text_alignment(s_temperature_text_layer, GTextAlignmentCenter);
  text_layer_set_font(s_temperature_text_layer, s_res_roboto_condensed_16);;
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_temperature_text_layer);

  // s_battery_textlayer
  s_battery_textlayer = text_layer_create(GRect(110, 0, 30, 16));
  text_layer_set_background_color(s_battery_textlayer, GColorBlack);
  text_layer_set_text_color(s_battery_textlayer, GColorWhite);
  text_layer_set_text(s_battery_textlayer, "...");
  text_layer_set_font(s_battery_textlayer, s_res_roboto_condensed_16);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_battery_textlayer);

  // s_date_layer
  s_date_text_layer = text_layer_create(GRect(15, 67, 116, 25));
  text_layer_set_text(s_date_text_layer, "00/00/0000");
  text_layer_set_text_color(s_date_text_layer, GColorWhite);
  text_layer_set_text_alignment(s_date_text_layer, GTextAlignmentCenter);
  text_layer_set_font(s_date_text_layer, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_date_text_layer);

  #ifndef PBL_SDK_2
    text_layer_set_background_color(s_time_text_layer, GColorDarkCandyAppleRed);
    text_layer_set_background_color(s_date_text_layer, GColorDarkCandyAppleRed);
    text_layer_set_text_color(s_time_text_layer, GColorWhite);
    #else
    text_layer_set_background_color(s_time_text_layer, GColorWhite);
    text_layer_set_background_color(s_date_text_layer, GColorWhite);
  #endif
  
  
  // Create battery meter Layer
  s_battery_layer = layer_create(GRect(10, 0, 30, 10));
  layer_set_update_proc(s_battery_layer, battery_update_proc);


  // Add to Window
  layer_add_child(window_get_root_layer(s_window), s_battery_layer);
}
Esempio n. 20
0
  app_sync_init(&s_sync, s_sync_buffer, sizeof(s_sync_buffer), initial_values, ARRAY_LENGTH(initial_values), s_sync_tuple_changed_callback, NULL, NULL);
  
  
  s_window = window_create();
  window_set_window_handlers(s_window, (WindowHandlers) {
    .load = window_load,
    .unload = window_unload,
  });
  window_stack_push(s_window, true);

  // Init hand paths
  s_minute_arrow = gpath_create(&MINUTE_HAND_POINTS);
  s_hour_arrow = gpath_create(&HOUR_HAND_POINTS);

 
  Layer *window_layer = window_get_root_layer(s_window);
  GRect bounds = layer_get_bounds(window_layer);
  GPoint center = grect_center_point(&bounds);
  
  gpath_move_to(s_minute_arrow, center);
  gpath_move_to(s_hour_arrow, center);
  
  if (strcmp(configs.secondhandoption, "off") == 0) {
    tick_timer_service_subscribe(MINUTE_UNIT, handle_tick);
  }
  else if (strcmp(configs.secondhandoption, "quartz") == 0){
    tick_timer_service_subscribe(SECOND_UNIT, handle_tick);
  }
  else if (strcmp(configs.secondhandoption, "stop2go") == 0){
    tick_timer_service_subscribe(SECOND_UNIT, handle_tick);
  }
Esempio n. 21
0
void npr_layer_create(GRect frame, Window *window)
{
  npr_layer = layer_create_with_data(frame, sizeof(NprLayerData));
  NprLayerData *nld = layer_get_data(npr_layer);

  nld->loading_layer = layer_create(GRect(47, 60, 50, 20));
  layer_set_update_proc(nld->loading_layer, npr_animate_update);
  layer_add_child(npr_layer, nld->loading_layer);

  nld->primary_call_layer = text_layer_create(GRect(0, 0, 44, 20));
  text_layer_set_text_color(nld->primary_call_layer, GColorWhite);
  text_layer_set_background_color(nld->primary_call_layer, GColorClear);
  text_layer_set_font(nld->primary_call_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
  text_layer_set_text_alignment(nld->primary_call_layer, GTextAlignmentLeft);
  layer_add_child(npr_layer, text_layer_get_layer(nld->primary_call_layer));

  nld->primary_frequency_layer = text_layer_create(GRect(0, 9, 110, 45));
  text_layer_set_text_color(nld->primary_frequency_layer, GColorWhite);
  text_layer_set_background_color(nld->primary_frequency_layer, GColorClear);
  text_layer_set_font(nld->primary_frequency_layer, fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD));
  text_layer_set_text_alignment(nld->primary_frequency_layer, GTextAlignmentLeft);
  layer_add_child(npr_layer, text_layer_get_layer(nld->primary_frequency_layer));

  nld->primary_strength_layer = layer_create(GRect(104, 1, 44, 50));
  layer_set_update_proc(nld->primary_strength_layer, primary_strength_layer_update);
  layer_add_child(npr_layer, nld->primary_strength_layer);

  nld->primary_program_layer = text_layer_create(GRect(0, 48, 144, 22));
  text_layer_set_text_color(nld->primary_program_layer, GColorWhite);
  text_layer_set_background_color(nld->primary_program_layer, GColorClear);
  text_layer_set_font(nld->primary_program_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  text_layer_set_text_alignment(nld->primary_program_layer, GTextAlignmentRight);
  layer_add_child(npr_layer, text_layer_get_layer(nld->primary_program_layer));

  nld->secondary_call_layer = text_layer_create(GRect(0, 75, 44, 20));
  text_layer_set_text_color(nld->secondary_call_layer, GColorWhite);
  text_layer_set_background_color(nld->secondary_call_layer, GColorClear);
  text_layer_set_font(nld->secondary_call_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));
  text_layer_set_text_alignment(nld->secondary_call_layer, GTextAlignmentLeft);
  layer_add_child(npr_layer, text_layer_get_layer(nld->secondary_call_layer));

  nld->secondary_frequency_layer = text_layer_create(GRect(0, 84, 110, 45));
  text_layer_set_text_color(nld->secondary_frequency_layer, GColorWhite);
  text_layer_set_background_color(nld->secondary_frequency_layer, GColorClear);
  text_layer_set_font(nld->secondary_frequency_layer, fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD));
  text_layer_set_text_alignment(nld->secondary_frequency_layer, GTextAlignmentLeft);
  layer_add_child(npr_layer, text_layer_get_layer(nld->secondary_frequency_layer));

  nld->secondary_strength_layer = layer_create(GRect(104, 76, 44, 50));
  layer_set_update_proc(nld->secondary_strength_layer, secondary_strength_layer_update);
  layer_add_child(npr_layer, nld->secondary_strength_layer);

  nld->secondary_program_layer = text_layer_create(GRect(0, 124, 144, 22));
  text_layer_set_text_color(nld->secondary_program_layer, GColorWhite);
  text_layer_set_background_color(nld->secondary_program_layer, GColorClear);
  text_layer_set_font(nld->secondary_program_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  text_layer_set_text_alignment(nld->secondary_program_layer, GTextAlignmentRight);
  layer_add_child(npr_layer, text_layer_get_layer(nld->secondary_program_layer));

  nld->error_icon = gbitmap_create_with_resource(RESOURCE_ID_ICON_ERROR);
  nld->error_icon_layer = bitmap_layer_create(GRect(47, 42, 50, 50));

  layer_add_child(npr_layer, bitmap_layer_get_layer(nld->error_icon_layer));
  layer_set_hidden(bitmap_layer_get_layer(nld->error_icon_layer), true);
  bitmap_layer_set_bitmap(nld->error_icon_layer, nld->error_icon);

  layer_add_child(window_get_root_layer(window), npr_layer);
}
Esempio n. 22
0
static void main_window_load(Window *window) {
  s_menu_icon_image = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_MENU_ICON_1);

  int num_a_items = 0;

  s_first_menu_items[num_a_items++] = (SimpleMenuItem) {
    .title = "Dairy",
    .callback = menu_select_callback,
};
  s_first_menu_items[num_a_items++] = (SimpleMenuItem) {
    .title = "Fruits and Veggies",
    .callback = menu_select_callback,
  };
  s_first_menu_items[num_a_items++] = (SimpleMenuItem) {
    .title = "Meats and Fish",
    .callback = menu_select_callback,
  };
   s_first_menu_items[num_a_items++] = (SimpleMenuItem) {
    .title = "Grains",
    .callback = menu_select_callback,
  };
 s_first_menu_items[num_a_items++] = (SimpleMenuItem) {
    .title = "Misc.",
    .callback = menu_select_callback,
  };

  s_menu_sections[0] = (SimpleMenuSection) {
    .num_items = NUM_FIRST_MENU_ITEMS,
    .items = s_first_menu_items,
  };
  
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_frame(window_layer);

  s_simple_menu_layer = simple_menu_layer_create(bounds, window, s_menu_sections, NUM_MENU_SECTIONS, NULL);

  layer_add_child(window_layer, simple_menu_layer_get_layer(s_simple_menu_layer));
}

void main_window_unload(Window *window) {
  simple_menu_layer_destroy(s_simple_menu_layer);
  gbitmap_destroy(s_menu_icon_image);
}

static void init() {
  s_main_window = window_create();
  window_set_window_handlers(s_main_window, (WindowHandlers) {
    .load = main_window_load,
    .unload = main_window_unload,
  });

}

static void deinit() {
  window_destroy(s_main_window);
}

int main(void) {
  init();
  products_init();
  handle_init();
  app_event_loop();
  deinit();
  products_deinit();
  handle_deinit();
}
static void window_load(Window *window) {
   
  /*
  //Setup BT Layer
  bt_layer = text_layer_create(GRect(5, 5, 144, 30));
  text_layer_set_font(bt_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  if(bluetooth_connection_service_peek() == true)
  {
    text_layer_set_text(bt_layer, "BT: CONNECTED");
  }
  else
  {
    text_layer_set_text(bt_layer, "BT: DISCONNECTED");
  }
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(bt_layer));*/

  
  
        // Although we already defined NUM_FIRST_MENU_ITEMS, you can define
        // an int as such to easily change the order of menu items later
        int num_a_items = 0;

        // This is an example of how you'd set a simple menu item
        first_menu_items[num_a_items++] = (SimpleMenuItem){
        // You should give each menu item a title and callback
        .title = "Chambre",
        .subtitle = "Sélection",
        .callback = menu_select_callback,
        };
        // The menu items appear in the order saved in the menu items array
        first_menu_items[num_a_items++] = (SimpleMenuItem){
        .title = "Cuisine",
        // You can also give menu items a subtitle
        .subtitle = "Sélection",
        .callback = menu_select_callback,
        };
        first_menu_items[num_a_items++] = (SimpleMenuItem){
        .title = "Bureau",
        .subtitle = "Sélection",
        .callback = menu_select_callback,
        // This is how you would give a menu item an icon
        //  .icon = menu_icon_image,
        };
        first_menu_items[num_a_items++] = (SimpleMenuItem){
        // You should give each menu item a title and callback
        .title = "Salle de bain",
        .subtitle = "Sélection",
        .callback = menu_select_callback,
        };
        first_menu_items[num_a_items++] = (SimpleMenuItem){
        // You should give each menu item a title and callback
        .title = "TV",
        .subtitle = "Sélection",
        .callback = menu_select_callback,
        };

        // This initializes the second section
        second_menu_items[0] = (SimpleMenuItem){
        .title = "Retour",
        // You can use different callbacks for your menu items
        .callback = special_select_callback,
        };

        // Bind the menu items to the corresponding menu sections
        menu_sections[0] = (SimpleMenuSection){
        .title = "Sélection des pièces",
        .num_items = NUM_FIRST_MENU_ITEMS,
        .items = first_menu_items,
        };
        menu_sections[1] = (SimpleMenuSection){
        // Menu sections can also have titles as well
        .title = "Fin de la sélection",
        .num_items = NUM_SECOND_MENU_ITEMS,
        .items = second_menu_items,
        };

// INITIALISATION WINDOW, MENU LAYER,...



        // Now we prepare to initialize the simple menu layer
        // We need the bounds to specify the simple menu layer's viewport size
        // In this case, it'll be the same as the window's
        Layer *window_layer = window_get_root_layer(window);
        GRect bounds = layer_get_frame(window_layer);

        // Initialize the simple menu layer
        simple_menu_layer = simple_menu_layer_create(bounds, window, menu_sections, NUM_MENU_SECTIONS, NULL);

        // Add it to the window for display
        layer_add_child(window_layer, simple_menu_layer_get_layer(simple_menu_layer));
        }

// Deinitialize resources on window unload that were initialized on window load
        void window_unload(Window *window) {
        simple_menu_layer_destroy(simple_menu_layer);
         // text_layer_destroy(bt_layer);
        }


void init(void) {
	window = window_create();
  
  // Setup the window handlers
        window_set_window_handlers(window, (WindowHandlers) {
        .load = window_load,
        .unload = window_unload,
        });

	window_stack_push(window, true);
  

	
	// Register AppMessage handlers
	app_message_register_inbox_received(in_received_handler); 
	app_message_register_inbox_dropped(in_dropped_handler); 
	app_message_register_outbox_failed(out_failed_handler);
		
	app_message_open(app_message_inbox_size_maximum(), app_message_outbox_size_maximum());

}

void deinit(void) {
	app_message_deregister_callbacks();
	window_destroy(window);
}

int main( void ) {
	init();
	app_event_loop();
	deinit();
}
Esempio n. 24
0
static void initialise_ui(void) {
    
  Fuente15 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_amano_20));
  Fuente30 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_amano_30));
  Fuente50 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_amano_40));
 
	
  // BLFondo
  BLFondo = bitmap_layer_create(GRect(0, 0, 144, 168));
  bitmap_layer_set_bitmap(BLFondo, gbitmap_create_with_resource(RESOURCE_ID_pizarra_WHITE));
  //bitmap_layer_set_background_color(BLFondo, GColorWhite);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)BLFondo);
  
  
  // TLHora
  TLHora = text_layer_create(GRect(0, 10, 75, 70));
  text_layer_set_background_color(TLHora, GColorClear);
  text_layer_set_text_color(TLHora, GColorWhite);
  text_layer_set_text(TLHora, "24");
  text_layer_set_text_alignment(TLHora, GTextAlignmentCenter);
  text_layer_set_font(TLHora, Fuente50);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLHora);
  
  // TLMinuto
  TLMinuto = text_layer_create(GRect(70, 8, 80, 70));
  text_layer_set_text(TLMinuto, "59");
  text_layer_set_background_color(TLMinuto, GColorClear);
  text_layer_set_text_color(TLMinuto, GColorWhite);
  text_layer_set_text_alignment(TLMinuto, GTextAlignmentCenter);
  text_layer_set_font(TLMinuto, Fuente50);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLMinuto);
  
  // TLDiaSem
  TLDiaSem = text_layer_create(GRect(0, 120, 65, 60));
  text_layer_set_background_color(TLDiaSem, GColorClear);
  text_layer_set_text_color(TLDiaSem, GColorWhite);
  text_layer_set_text(TLDiaSem, "ma");
  text_layer_set_text_alignment(TLDiaSem, GTextAlignmentCenter);
  text_layer_set_font(TLDiaSem, Fuente30);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLDiaSem);
  
  // TLDia
  TLDia = text_layer_create(GRect(58, 70, 60, 60));
  text_layer_set_background_color(TLDia, GColorClear);
  text_layer_set_text_color(TLDia, GColorWhite);
  text_layer_set_text(TLDia, "30");
  text_layer_set_text_alignment(TLDia, GTextAlignmentCenter);
  text_layer_set_font(TLDia, Fuente30);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLDia);
  
  // TLMes
  TLMes = text_layer_create(GRect(50, 110, 90, 52));
  text_layer_set_background_color(TLMes, GColorClear);
  text_layer_set_text_color(TLMes, GColorWhite);
  text_layer_set_text(TLMes, "08");
  text_layer_set_text_alignment(TLMes, GTextAlignmentCenter);
  text_layer_set_font(TLMes, Fuente30);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLMes);
  
  
  //ILFondo

  //Comprueba configuración
  inverted = persist_read_bool(KEY_INVERT);
  idioma = persist_read_int(KEY_IDIOMA);
  ILFondo = inverter_layer_create(GRect(0, 0, 144, 168));
  layer_add_child(window_get_root_layer(pwindow), (Layer *)ILFondo);
	
  //Option-specific setup
  if(inverted == true)
  {
     layer_set_hidden((Layer *)ILFondo, false);
  }
  else
  {
     layer_set_hidden((Layer *)ILFondo, true);
  }
  
  
  // TLBateria
  TLBateria = text_layer_create(GRect(115, 70, 40, 30));
  text_layer_set_background_color(TLBateria, GColorClear);
  text_layer_set_text_color(TLBateria, GColorWhite);
  text_layer_set_text(TLBateria, "100");
  text_layer_set_font(TLBateria, Fuente15);
  text_layer_set_text_alignment(TLBateria, GTextAlignmentCenter);
  layer_add_child(window_get_root_layer(pwindow), (Layer *)TLBateria);
	
}
Esempio n. 25
0
static void in_received_handler(DictionaryIterator *iter, void *context) {
  autoconfig_in_received_handler(iter, context);
  layer_set_hidden(inverter_layer_get_layer(inverter_layer),!getInvert());
  layer_mark_dirty(window_get_root_layer(window));
  handle_battery(battery_state_service_peek());
}
Esempio n. 26
0
static void init(void) {

  memset(&normal_time_digits_layers, 0, sizeof(normal_time_digits_layers));
  memset(&normal_time_digits_images, 0, sizeof(normal_time_digits_images));
		
  // Setup messaging
  const int inbound_size = 256;
  const int outbound_size = 256;
  app_message_open(inbound_size, outbound_size);	
	
  window = window_create();
  if (window == NULL) {
      //APP_LOG(APP_LOG_LEVEL_DEBUG, "OOM: couldn't allocate window");
      return;
  }
  window_stack_push(window, true /* Animated */);
  window_layer = window_get_root_layer(window);

  window_set_background_color(window, GColorBlack);


  GRect dummy_frame = { {0, 0}, {0, 0} };

	for (int i = 0; i < TOTAL_NORMAL_DIGITS; ++i) {
    normal_time_digits_layers[i] = bitmap_layer_create(dummy_frame);
   layer_add_child(window_layer, bitmap_layer_get_layer(normal_time_digits_layers[i]));
  }	
 
	
	 // ** { begin setup mask for MASK effect
  mask.text = NULL;
  mask.bitmap_mask = NULL;

  #ifdef PBL_COLOR
    mask.mask_colors = malloc(sizeof(GColor)*4);
    mask.mask_colors[0] = GColorWhite;
    mask.mask_colors[1] = GColorDarkGray;
    mask.mask_colors[2] = GColorLightGray;
//    mask.mask_colors[3] = GColorClear;
  #else
    mask.mask_colors = malloc(sizeof(GColor)*2);
    mask.mask_colors[0] = GColorWhite;
    mask.mask_colors[1] = GColorClear;
  #endif
	  
  mask.background_color = GColorClear;
  mask.bitmap_background = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_MASK);


  // ** end setup mask }
	
  //creating effect layer
  effect_layer_mask = effect_layer_create(GRect(0,0,144,168));
  effect_layer_add_effect(effect_layer_mask, effect_mask, &mask);
  layer_add_child((window_layer), effect_layer_get_layer(effect_layer_mask));

	
	img_battery_100   = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATT_080_100);
    img_battery_30   = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATT_005_030);
    img_battery_00   = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATT_000_005);
    img_battery_charge = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATT_CHARGING);
    layer_batt_img  = bitmap_layer_create(GRect(66, 102, 9,11));
	bitmap_layer_set_bitmap(layer_batt_img, img_battery_100);
	layer_add_child(window_layer, bitmap_layer_get_layer(layer_batt_img));
		
   bluetooth_image = gbitmap_create_with_resource(RESOURCE_ID_ICON_NOBLUETOOTH);
#ifdef PBL_PLATFORM_BASALT
  GRect bitmap_bounds_bt_on = gbitmap_get_bounds(bluetooth_image);
#else
  GRect bitmap_bounds_bt_on = bluetooth_image->bounds;
#endif	
  GRect frame_bt = GRect(66, 102, bitmap_bounds_bt_on.size.w, bitmap_bounds_bt_on.size.h);
  bluetooth_layer = bitmap_layer_create(frame_bt);
  bitmap_layer_set_bitmap(bluetooth_layer, bluetooth_image);
  layer_add_child(window_layer, bitmap_layer_get_layer(bluetooth_layer));
	
	date_font = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ODIN_24));

	layer_date_text = text_layer_create(GRect(0, 10, 144, 26));
	text_layer_set_text_color(layer_date_text, GColorWhite);		
    text_layer_set_background_color(layer_date_text, GColorClear);
    text_layer_set_font(layer_date_text, date_font);
    text_layer_set_text_alignment(layer_date_text, GTextAlignmentRight);
    layer_add_child(window_layer, text_layer_get_layer(layer_date_text));

	layer_ampm_text = text_layer_create(GRect(0, 114, 140, 26));
    text_layer_set_text_color(layer_ampm_text, GColorWhite);
	text_layer_set_background_color(layer_ampm_text, GColorClear);
    text_layer_set_font(layer_ampm_text, date_font);
    text_layer_set_text_alignment(layer_ampm_text, GTextAlignmentRight);
    layer_add_child(window_layer, text_layer_get_layer(layer_ampm_text));

	
  // Avoids a blank screen on watch start.
  time_t now = time(NULL);
  struct tm *tick_time = localtime(&now);  
  handle_tick(tick_time, MONTH_UNIT + DAY_UNIT + HOUR_UNIT + MINUTE_UNIT + SECOND_UNIT);

  Tuplet initial_values[] = {
    TupletInteger(BLUETOOTHVIBE_KEY, persist_read_bool(BLUETOOTHVIBE_KEY)),
    TupletInteger(HOURLYVIBE_KEY, persist_read_bool(HOURLYVIBE_KEY)),
	TupletInteger(FLIP_KEY, persist_read_bool(FLIP_KEY)),
	TupletInteger(COLOUR_KEY, persist_read_bool(COLOUR_KEY)),
	TupletInteger(BLINK_KEY, persist_read_bool(BLINK_KEY)),
  };

  app_sync_init(&sync, sync_buffer, sizeof(sync_buffer), initial_values,
                ARRAY_LENGTH(initial_values), sync_tuple_changed_callback,
                NULL, NULL);

  appStarted = true;
 
	 // handlers
    battery_state_service_subscribe(&update_battery);
    bluetooth_connection_service_subscribe(&bluetooth_connection_callback);
    tick_timer_service_subscribe(SECOND_UNIT, handle_tick);

	 // draw first frame
    force_update();
}
Esempio n. 27
0
static void main_window_load(Window *window) {
  //bg_color = GColorGreen;
  #define bg_color GColorBlack
    
    
  hour_layer = text_layer_create(GRect(-10,-15,94, 75));
  min_layer = text_layer_create(GRect(66,60,85,85));
  text_layer_set_text_color(hour_layer, COLOR_FALLBACK(GColorGreen, GColorWhite));
  text_layer_set_text_color(min_layer, COLOR_FALLBACK(GColorGreen, GColorWhite));
  
  text_layer_set_background_color(hour_layer, bg_color);
    text_layer_set_background_color(min_layer, bg_color);
  
  
  s_bg_layer = text_layer_create(GRect(0,0,144,168));
  text_layer_set_background_color(s_bg_layer, COLOR_FALLBACK(GColorBlack, GColorBlack));
  s_time_layer = text_layer_create(GRect(0,94,144,74));//0, 133, 115, 35));
  am_layer = text_layer_create(GRect(125, 150, 19, 18));
  battery_text_layer = text_layer_create(GRect(0, 150, 144, 20));
  
  date_layer = text_layer_create(GRect(70 ,0, 74, 70));
  
  s_battery_layer = text_layer_create(GRect(0, 160, 125, 20));
  
  
  condition_layer = text_layer_create(GRect(0, 70, 70, 28));  //85 px tall
  temp_layer = text_layer_create(GRect(0, 90, 70, 28));
  city_layer = text_layer_create(GRect(0, 112, 70, 28));
  
  no_phone_bitmap = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_NO_PHONE);
  no_phone_layer = bitmap_layer_create(GRect(0, 80, 60, 70));
  bitmap_layer_set_bitmap(no_phone_layer, no_phone_bitmap);
  bitmap_layer_set_background_color(no_phone_layer, COLOR_FALLBACK(GColorCyan, GColorWhite));
  layer_set_hidden(bitmap_layer_get_layer(no_phone_layer), true);
  bt_handler(bluetooth_connection_service_peek());

  
  ///text_layer_set_text_color(s_battery_layer, COLOR_FALLBACK(GColorWhite, GColorWhite));
  text_layer_set_background_color(s_time_layer, COLOR_FALLBACK(bg_color, GColorBlack));
  text_layer_set_background_color(am_layer, COLOR_FALLBACK(GColorClear, GColorBlack));
  text_layer_set_background_color(battery_text_layer, COLOR_FALLBACK(GColorClear, GColorClear));  //battery layer
  text_layer_set_background_color(s_battery_layer, COLOR_FALLBACK(GColorGreen, GColorWhite));
  text_layer_set_background_color(condition_layer, COLOR_FALLBACK(GColorCyan, GColorWhite));
  text_layer_set_background_color(temp_layer, COLOR_FALLBACK(GColorCyan, GColorWhite));
  text_layer_set_background_color(city_layer, COLOR_FALLBACK(GColorCyan, GColorWhite));
  text_layer_set_text_color(condition_layer, COLOR_FALLBACK(GColorBlack, GColorBlack));
  text_layer_set_text_color(temp_layer, COLOR_FALLBACK(GColorBlack, GColorBlack));
  text_layer_set_text_color(city_layer, COLOR_FALLBACK(GColorBlack, GColorBlack));
  text_layer_set_text_color(battery_text_layer, COLOR_FALLBACK(GColorOrange, GColorWhite));

  
  text_layer_set_background_color(date_layer, COLOR_FALLBACK(GColorOrange, GColorWhite));
  text_layer_set_text_color(date_layer, COLOR_FALLBACK(GColorBlack, GColorBlack));

  text_layer_set_text_color(am_layer, COLOR_FALLBACK(GColorRed, GColorWhite));

  text_layer_set_text_color(s_time_layer, COLOR_FALLBACK(GColorGreen, GColorWhite));
  text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter);
  text_layer_set_text_alignment(date_layer, GTextAlignmentCenter);
  text_layer_set_text_alignment(battery_text_layer, GTextAlignmentCenter);
  
  text_layer_set_text_alignment(condition_layer, GTextAlignmentCenter);
  text_layer_set_text_alignment(temp_layer, GTextAlignmentCenter);
  text_layer_set_text_alignment(city_layer, GTextAlignmentCenter);
  
  
  text_layer_set_text(s_time_layer, "  :  ");
  s_custom_font_24 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_CHAMPAGNE_72));
  s_custom_font_18 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_CHAMPAGNE_20));//DS_DIGI_18));
  s_custom_font_12 = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_CHAMPAGNE_12));
  text_layer_set_font(s_time_layer, s_custom_font_24); //fonts_get_system_font(FONT_KEY_BITHAM_30_BLACK));
  text_layer_set_font(date_layer, s_custom_font_18);
  text_layer_set_font(hour_layer, s_custom_font_24);
  text_layer_set_font(min_layer, s_custom_font_24);
  text_layer_set_font(condition_layer, s_custom_font_18);
  text_layer_set_font(temp_layer, s_custom_font_18);
  text_layer_set_font(city_layer, s_custom_font_12);
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_bg_layer));
  //text_layer_set_font(s_battery_layer, s_custom_font_18); 
  //layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_time_layer));
  
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_battery_layer));
  //layer_add_child(window_get_root_layer(window), text_layer_get_layer(am_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(hour_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(min_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(date_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(condition_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(temp_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(city_layer));
  layer_add_child(window_get_root_layer(window), text_layer_get_layer(battery_text_layer));
  layer_add_child(window_get_root_layer(window), bitmap_layer_get_layer(no_phone_layer));
  
  
  Tuplet initial_values[] = {
    //TupletInteger(WEATHER_ICON_KEY, (uint8_t) 1),
    TupletCString(WEATHER_TEMPERATURE_KEY, ""),
    TupletCString(WEATHER_CITY_KEY, ""),
    TupletCString(WEATHER_CONDITION_KEY, "Loading")
  };

  app_sync_init(&s_sync, s_sync_buffer, sizeof(s_sync_buffer), 
      initial_values, ARRAY_LENGTH(initial_values),
      sync_tuple_changed_callback, sync_error_callback, NULL
  );

  request_weather();
}
Esempio n. 28
0
void minutes_layer_init(Window *window){
	minutes_layer = layer_create(GRect(0, 0, 144, 168));
	layer_set_update_proc(minutes_layer, minutes_proc);
	layer_add_child(window_get_root_layer(window), minutes_layer);
}
Esempio n. 29
0
static void handle_window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  tl_current_time = text_layer_create_default((GRect) { .origin = { 0, 10 }, .size = { bounds.size.w, 50 } });
Esempio n. 30
0
static void initialise_ui(void) {
  LOG_FUNC();
  s_window = window_create();
  window_set_background_color(s_window, GColorClear);
  
  s_res_image_background = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BACKGROUND);
  s_res_image_bt_active = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BT_ACTIVE);
  s_res_image_bt_passive = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BT_PASSIVE);
  s_res_image_battery = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_BATTERY);
  s_res_image_outbound = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_OUTBOUND);
  s_res_image_inbound = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_INBOUND);

  s_res_roboto_condensed_21 = fonts_get_system_font(FONT_KEY_ROBOTO_CONDENSED_21);
  s_res_bitham_42_medium_numbers = fonts_get_system_font(FONT_KEY_BITHAM_42_MEDIUM_NUMBERS);
  s_res_gothic_18 = fonts_get_system_font(FONT_KEY_GOTHIC_24);

  // s_bitmaplayer_bg
  s_bitmaplayer_bg = bitmap_layer_create(GRect(0, 0, 144, 168));
  bitmap_layer_set_bitmap(s_bitmaplayer_bg, s_res_image_background);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_bitmaplayer_bg);
  
  // s_timelayer
  s_timelayer = text_layer_create(GRect(5, 13, 134, 50));
  text_layer_set_background_color(s_timelayer, GColorClear);
  text_layer_set_text_color(s_timelayer, GColorWhite);
  text_layer_set_text(s_timelayer, "00:00");
  text_layer_set_text_alignment(s_timelayer, GTextAlignmentCenter);
  text_layer_set_font(s_timelayer, s_res_bitham_42_medium_numbers);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_timelayer);
  
  // s_daylayer
  s_daylayer = text_layer_create(GRect(5, 64, 134, 26));
  text_layer_set_background_color(s_daylayer, GColorClear);
  text_layer_set_text_color(s_daylayer, GColorWhite);
  text_layer_set_text(s_daylayer, "Mon");
  text_layer_set_text_alignment(s_daylayer, GTextAlignmentCenter);
  text_layer_set_font(s_daylayer, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_daylayer);
  layer_set_hidden(text_layer_get_layer(s_daylayer), true);
  
  // s_datelayer
  s_datelayer = text_layer_create(GRect(5, 64, 134, 26));
  text_layer_set_background_color(s_datelayer, GColorClear);
  text_layer_set_text_color(s_datelayer, GColorWhite);
  text_layer_set_text(s_datelayer, "2.5.2015");
  text_layer_set_text_alignment(s_datelayer, GTextAlignmentCenter);
  text_layer_set_font(s_datelayer, s_res_roboto_condensed_21);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_datelayer);
  
  // s_bitmaplayer_outbound
  s_bitmaplayer_outbound = bitmap_layer_create(GRect(5, 110, 14, 14));
  bitmap_layer_set_bitmap(s_bitmaplayer_outbound, s_res_image_outbound);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_bitmaplayer_outbound);
  
  // s_outboundlayer
  s_outboundlayer = text_layer_create(GRect(24, 100, 115, 26));
  text_layer_set_background_color(s_outboundlayer, GColorClear);
  text_layer_set_text_color(s_outboundlayer, GColorWhite);
  text_layer_set_text(s_outboundlayer, "Text layer");
  text_layer_set_font(s_outboundlayer, s_res_gothic_18);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_outboundlayer);
  
  // s_bitmaplayer_inbound
  s_bitmaplayer_inbound = bitmap_layer_create(GRect(5, 135, 14, 14));
  bitmap_layer_set_bitmap(s_bitmaplayer_inbound, s_res_image_inbound);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_bitmaplayer_inbound);
  
  // s_inboundlayer
  s_inboundlayer = text_layer_create(GRect(24, 125, 115, 26));
  text_layer_set_background_color(s_inboundlayer, GColorClear);
  text_layer_set_text_color(s_inboundlayer, GColorWhite);
  text_layer_set_text(s_inboundlayer, "Text layer");
  text_layer_set_font(s_inboundlayer, s_res_gothic_18);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_inboundlayer);

  // s_bitmaplayer_bt
  s_bitmaplayer_bt = bitmap_layer_create(GRect(125, 110, 14, 14));
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_bitmaplayer_bt);
  
  // s_btlayer
  s_btlayer = text_layer_create(GRect(5, 100, 115, 26));
  text_layer_set_background_color(s_btlayer, GColorClear);
  text_layer_set_text_color(s_btlayer, GColorWhite);
  text_layer_set_text(s_btlayer, "Text layer");
  text_layer_set_font(s_btlayer, s_res_gothic_18);
  text_layer_set_text_alignment(s_btlayer, GTextAlignmentRight);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_btlayer);
  
  // s_bitmaplayer_battery
  s_bitmaplayer_battery = bitmap_layer_create(GRect(125, 135, 14, 14));
  bitmap_layer_set_bitmap(s_bitmaplayer_battery, s_res_image_battery);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_bitmaplayer_battery);
  
  // s_batterylayer
  s_batterylayer = text_layer_create(GRect(5, 125, 115, 26));
  text_layer_set_background_color(s_batterylayer, GColorClear);
  text_layer_set_text_color(s_batterylayer, GColorWhite);
  text_layer_set_text(s_batterylayer, "Text layer");
  text_layer_set_font(s_batterylayer, s_res_gothic_18);
  text_layer_set_text_alignment(s_batterylayer, GTextAlignmentRight);
  layer_add_child(window_get_root_layer(s_window), (Layer *)s_batterylayer);
}