static void window_load(Window *window) { Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_bounds(window_layer); s_scroll_layer = scroll_layer_create(bounds); scroll_layer_set_click_config_onto_window(s_scroll_layer, window); layer_add_child(window_layer, scroll_layer_get_layer(s_scroll_layer)); s_text_layer = text_layer_create(GRect(bounds.origin.x, bounds.origin.y, bounds.size.w, 2000)); text_layer_set_text(s_text_layer, s_long_text); text_layer_set_text_alignment(s_text_layer, GTextAlignmentCenter); text_layer_set_font(s_text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24_BOLD)); scroll_layer_add_child(s_scroll_layer, text_layer_get_layer(s_text_layer)); scroll_layer_set_content_size(s_scroll_layer, text_layer_get_content_size(s_text_layer)); // Must be after added to the view heirachy text_layer_enable_screen_text_flow_and_paging(s_text_layer, 2); // Enable ScrollLayer paging scroll_layer_set_paging(s_scroll_layer, true); }
void instruction_window_load(Window *window) { // set size variables for instructions short size = get_instruction_size(instruction_type); short height = get_instruction_height(instruction_type); ResHandle rh = get_resource_handle(instruction_type); // allocate text holder and load resource instruction_text_ptr = malloc(size*sizeof(char)); reset_text(); resource_load(rh, (uint8_t *)instruction_text_ptr, size*sizeof(char)); // get bounds of the window and set bounds of text Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_frame(window_layer); GRect text_bounds = GRect(0, 0, bounds.size.w, height); // create layers s_instruction_scroll_layer = scroll_layer_create(bounds); s_instruction_text_layer = text_layer_create(text_bounds); // setup scroll view scroll_layer_set_content_size(s_instruction_scroll_layer, GSize(SCROLL_WIDTH,height)); scroll_layer_set_click_config_onto_window(s_instruction_scroll_layer, s_instruction_window); // setup text view text_layer_set_text(s_instruction_text_layer, instruction_text_ptr); text_layer_set_text_alignment(s_instruction_text_layer, GTextAlignmentCenter); // add children layer_add_child(window_get_root_layer(s_instruction_window), scroll_layer_get_layer(s_instruction_scroll_layer)); scroll_layer_add_child(s_instruction_scroll_layer, text_layer_get_layer(s_instruction_text_layer)); scroll_layer_set_content_offset(s_instruction_scroll_layer, GPoint(0,0), false); // free memory free(instruction_text_ptr); }
static void window_appear(Window* window) { Layer* window_layer = window_get_root_layer(window); GRect bounds = layer_get_bounds(window_layer); scroll_layer = scroll_layer_create(bounds); scroll_layer_set_click_config_onto_window(scroll_layer, window); #ifdef PBL_ROUND scroll_layer_set_paging(scroll_layer, true); #endif urlab_logo = gbitmap_create_with_resource(RESOURCE_ID_URLAB_LOGO); GRect image_bound = gbitmap_get_bounds(urlab_logo); image_layer = bitmap_layer_create(GRect(0, 0, bounds.size.w, image_bound.size.h)); bitmap_layer_set_bitmap(image_layer, urlab_logo); bitmap_layer_set_alignment(image_layer, GAlignCenter); scroll_layer_add_child(scroll_layer, bitmap_layer_get_layer(image_layer)); text_layer = text_layer_create(GRect(0, image_bound.size.h, bounds.size.w , bounds.size.h / 2)); text_layer_set_text (text_layer, about_text); text_layer_set_text_alignment(text_layer, GTextAlignmentCenter); #ifdef PBL_ROUND uint8_t inset = 4; text_layer_enable_screen_text_flow_and_paging(text_layer, inset); #endif layer_add_child(window_layer, text_layer_get_layer(text_layer)); scroll_layer_add_child(scroll_layer, text_layer_get_layer(text_layer)); layer_add_child(window_layer, scroll_layer_get_layer(scroll_layer)); scroll_layer_set_content_size(scroll_layer, GSize(bounds.size.w, image_bound.size.h + bounds.size.h / 2)); }
void show_help(void) { initialise_ui(); window_set_window_handlers(s_window, (WindowHandlers) { .unload = handle_window_unload, }); #ifdef PBL_COLOR window_set_background_color(s_window, GColorPastelYellow); #endif window_stack_push(s_window, true); GRect bounds = layer_get_frame(window_get_root_layer(s_window)); GRect max_text_bounds = GRect(0, 0, bounds.size.w, 10000); scroll_layer = scroll_layer_create(bounds); scroll_layer_set_click_config_onto_window(scroll_layer, s_window); text_layer = text_layer_create(max_text_bounds); text_layer_set_text(text_layer, scroll_text); text_layer_set_font(text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18)); GSize max_size = text_layer_get_content_size(text_layer); max_size = GSize(max_size.w, max_size.h + 10); text_layer_set_size(text_layer, max_size); scroll_layer_set_content_size(scroll_layer, GSize(bounds.size.w, max_size.h)); scroll_layer_add_child(scroll_layer, text_layer_get_layer(text_layer)); layer_add_child(window_get_root_layer(s_window), scroll_layer_get_layer(scroll_layer));
static void result_window_load(Window *window) { Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_bounds(window_layer); RestaurantInformation *ptr; uint8_t status; bool valid_result = false; // create action bar and bind key pressing only when valid result is displayed #ifdef PBL_ROUND // no need for the following variables #else GSize max_size, sub_max_size; int title_height; TextLayer *temp; #endif APP_LOG(APP_LOG_LEVEL_DEBUG, "Result window load"); status = search_result.query_status; switch(status){ case QUERY_STATUS_SUCCESS: valid_result = true; // Randomly pick up the restaurant search_result.random_result = rand()%search_result.num_of_restaurant; // Collect required fields ptr = &(search_result.restaurant_info[search_result.random_result]); strncpy(title_text, ptr->name, sizeof(title_text)); if(user_setting.unit == 0){ snprintf(sub_text, sizeof(sub_text), "%s %u %s", direction_name[ptr->direction], (unsigned int)(ptr->distance), setting_unit_option_text[user_setting.unit]); } else{ snprintf(sub_text, sizeof(sub_text), "%s %u.%u %s", direction_name[ptr->direction], (unsigned int)(ptr->distance/100), (unsigned int)(ptr->distance%100), setting_unit_option_text[user_setting.unit]); } break; case QUERY_STATUS_NO_RESULT: case QUERY_STATUS_GPS_TIMEOUT: // Set corresponding error messages to title and subtitle strncpy(title_text, query_status_error_message[status], sizeof(title_text)); strncpy(sub_text, query_status_error_sub_message[status], sizeof(sub_text)); break; case QUERY_STATUS_GOOGLE_API_ERROR: // Collect error message from returned information strncpy(title_text, query_status_error_message[status], sizeof(title_text)); strncpy(sub_text, search_result.api_error_message, sizeof(sub_text)); break; default: // Other query status = unknown error strncpy(title_text, unknown_error_message, sizeof(title_text)); snprintf(sub_text, sizeof(sub_text), "%s %s%d", unknown_error_sub_message, "Incorrect query status:",status); break; } #ifdef PBL_ROUND // action bar part if(valid_result == true){ icon_agenda_bitmap = gbitmap_create_with_resource(RESOURCE_ID_ICON_AGENDA); text_layer_width = bounds.size.w - ACTION_BAR_WIDTH; s_result_action_bar_layer = action_bar_layer_create(); #ifdef PBL_COLOR action_bar_layer_set_background_color(s_result_action_bar_layer, highlight_alt_bg_color); #endif } else{ text_layer_width = bounds.size.w; } // title part s_result_title_layer = layer_create(bounds); layer_set_update_proc(s_result_title_layer, result_title_layer_update_proc); // subtitle part s_result_sub_layer = layer_create(GRect(bounds.origin.x, bounds.origin.y+120, bounds.size.w, bounds.size.h-100)); layer_set_update_proc(s_result_sub_layer, result_sub_layer_update_proc); layer_add_child(window_layer, s_result_title_layer); layer_add_child(window_layer, s_result_sub_layer); action_bar_layer_add_to_window(s_result_action_bar_layer, window); action_bar_layer_set_icon(s_result_action_bar_layer, BUTTON_ID_SELECT, icon_agenda_bitmap); action_bar_layer_set_click_config_provider(s_result_action_bar_layer, result_click_config_provider); #else // #ifdef PBL_ROUND // action bar part if(valid_result == true){ icon_agenda_bitmap = gbitmap_create_with_resource(RESOURCE_ID_ICON_AGENDA); text_layer_width = bounds.size.w - ACTION_BAR_WIDTH; s_result_action_bar_layer = action_bar_layer_create(); #ifdef PBL_COLOR action_bar_layer_set_background_color(s_result_action_bar_layer, highlight_alt_bg_color); #endif action_bar_layer_add_to_window(s_result_action_bar_layer, window); action_bar_layer_set_icon(s_result_action_bar_layer, BUTTON_ID_SELECT, icon_agenda_bitmap); } else{ text_layer_width = bounds.size.w; } // compute require height for sub-title temp = text_layer_create(GRect(bounds.origin.x, bounds.origin.y, text_layer_width, bounds.size.h)); text_layer_set_font(temp, fonts_get_system_font(FONT_KEY_GOTHIC_24_BOLD)); text_layer_set_text(temp, sub_text); sub_max_size = text_layer_get_content_size(temp); text_layer_destroy(temp); // title part s_result_title_text_layer = text_layer_create(GRect(bounds.origin.x, bounds.origin.y, text_layer_width, 2000)); text_layer_set_font(s_result_title_text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD)); text_layer_set_text_alignment(s_result_title_text_layer, GTextAlignmentLeft); text_layer_set_overflow_mode(s_result_title_text_layer, GTextOverflowModeWordWrap); text_layer_set_background_color(s_result_title_text_layer, bg_color); text_layer_set_text_color(s_result_title_text_layer, text_color); text_layer_set_text(s_result_title_text_layer, title_text); max_size = text_layer_get_content_size(s_result_title_text_layer); // adjust title height. Always have 10px padding for certain characters to display if(max_size.h > (bounds.size.h - sub_max_size.h + 10)) title_height = (bounds.size.h - sub_max_size.h + 10); // title is very long: leave some space for sub-title. else if(max_size.h < (bounds.size.h/2 + 10)) title_height = (bounds.size.h/2 + 10); // title is short: make it half part else title_height = max_size.h + 10; // title is long, but not very long: use current size // create scroll layer s_result_scroll_layer = scroll_layer_create(GRect(bounds.origin.x, bounds.origin.y, text_layer_width, title_height)); if(valid_result == true){ scroll_layer_set_click_config_onto_window(s_result_scroll_layer, window); scroll_layer_set_callbacks(s_result_scroll_layer, (ScrollLayerCallbacks){.click_config_provider=result_click_config_provider});
static void main_window_load(Window *window) { Layer *window_layer = window_get_root_layer(window); GRect window_bounds = layer_get_bounds(window_layer); title_layer = text_layer_create( GRect(0, 0,window_bounds.size.w, window_bounds.size.h)); text_layer_set_text_alignment(title_layer, GTextAlignmentCenter); text_layer_set_text(title_layer, "FloodWatch"); text_layer_set_text_color(title_layer, GColorBlack); text_layer_set_background_color(title_layer, GColorClear); text_layer_set_font(title_layer, fonts_get_system_font(FONT_KEY_ROBOTO_CONDENSED_21)); layer_add_child(window_layer, text_layer_get_layer(title_layer)); region_layer = text_layer_create( GRect(0, 20,window_bounds.size.w, window_bounds.size.h)); text_layer_set_text_alignment(region_layer, GTextAlignmentCenter); text_layer_set_text(region_layer, "Jakarta - Timur"); text_layer_set_text_color(region_layer, GColorWhite); text_layer_set_background_color(region_layer, GColorClear); text_layer_set_font(region_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24)); layer_add_child(window_layer, text_layer_get_layer(region_layer)); s_scroll_layer = scroll_layer_create(window_bounds); scroll_layer_set_click_config_onto_window(s_scroll_layer, window); scroll_layer_set_shadow_hidden(s_scroll_layer, true); layer_add_child(window_layer, scroll_layer_get_layer(s_scroll_layer)); // Get the ContentIndicator from the ScrollLayer s_indicator = scroll_layer_get_content_indicator(s_scroll_layer); // Create two Layers to draw the arrows s_indicator_up_layer = layer_create(GRect(window_bounds.origin.x, window_bounds.origin.y, window_bounds.size.w, STATUS_BAR_LAYER_HEIGHT)); s_indicator_down_layer = layer_create(GRect(0, window_bounds.size.h - STATUS_BAR_LAYER_HEIGHT, window_bounds.size.w, STATUS_BAR_LAYER_HEIGHT)); layer_add_child(window_layer, s_indicator_up_layer); layer_add_child(window_layer, s_indicator_down_layer); // Configure the properties of each indicator const ContentIndicatorConfig up_config = (ContentIndicatorConfig) { .layer = s_indicator_up_layer, .times_out = false, .alignment = GAlignCenter, .colors = { .foreground = GColorBlack, .background = GColorLightGray } }; content_indicator_configure_direction(s_indicator, ContentIndicatorDirectionUp, &up_config); const ContentIndicatorConfig down_config = (ContentIndicatorConfig) { .layer = s_indicator_down_layer, .times_out = false, .alignment = GAlignCenter, .colors = { .foreground = GColorBlack, .background = GColorLightGray } }; content_indicator_configure_direction(s_indicator, ContentIndicatorDirectionDown, &down_config); reports_layer = text_layer_create(GRect(0, 50, window_bounds.size.w, 2000)); text_layer_set_text(reports_layer, reports); text_layer_set_text_alignment(reports_layer, GTextAlignmentCenter); text_layer_set_font(reports_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD)); text_layer_set_text_color(region_layer, GColorBlack); text_layer_set_background_color(region_layer, GColorClear); scroll_layer_add_child(s_scroll_layer, text_layer_get_layer(reports_layer)); GSize text_size = text_layer_get_content_size(reports_layer); layer_set_frame(text_layer_get_layer(reports_layer), GRect(0, 50, window_bounds.size.w, text_size.h)); scroll_layer_set_content_size(s_scroll_layer, text_size); }
.unload = window_unload, }); window_stack_push(s_main_window, true); s_def_window = window_create(); Layer *window_layer2 = window_get_root_layer(s_def_window); GRect bounds2 = layer_get_bounds(window_layer2); window_set_window_handlers(s_def_window, (WindowHandlers) { .load = window_load2, .unload = window_unload2, }); window_set_click_config_provider(s_main_window, click_config_provider); // Initialize the scroll layer s_scroll_layer = scroll_layer_create(bounds2); s_word_layer = text_layer_create(GRect(5, 5, bounds2.size.w - 10, bounds2.size.h)); s_def_layer = text_layer_create(GRect(5, 40, bounds2.size.w - 10, bounds2.size.h)); // Create new dictation session s_dictation_session = dictation_session_create(sizeof(s_last_text_buffer), dictation_session_callback, NULL); window_set_background_color(s_main_window, GColorVividCerulean); window_set_background_color(s_def_window, GColorVividCerulean); text_layer_set_text(s_question_layer, "PebbleDict"); s_speaking_enabled = true;