예제 #1
0
void thread_window_load(Window *window)
{
	struct ThreadData *thread = GetSelectedThread();
	
	thread_scroll_layer = scroll_layer_create(window_frame);

	scroll_layer_set_shadow_hidden(thread_scroll_layer, true);
	scroll_layer_set_click_config_onto_window(thread_scroll_layer, window);
	scroll_layer_set_content_size(thread_scroll_layer, GSize(window_frame.size.w, 0));
	scroll_layer_set_content_offset(thread_scroll_layer, GPoint(0, 0), false);

	ScrollLayerCallbacks scrollOverride =
	{
		.click_config_provider = &thread_click_config,
		.content_offset_changed_handler = &thread_offset_changed_handler
	};
	scroll_layer_set_callbacks(thread_scroll_layer, scrollOverride);

	thread_title_layer = layer_create(GRect(0, 0, window_frame.size.w, 22));
	layer_set_update_proc(thread_title_layer, thread_title_layer_update_proc);
	scroll_layer_add_child(thread_scroll_layer, thread_title_layer);

	layer_add_child(window_get_root_layer(window), scroll_layer_get_layer(thread_scroll_layer));

	thread_view_comments_layer = text_layer_create(GRect(0, 0, window_frame.size.w, LOAD_COMMENTS_HEIGHT));
	text_layer_set_text(thread_view_comments_layer, "View Comments");
	text_layer_set_font(thread_view_comments_layer, GetBiggerFont());
	text_layer_set_text_alignment(thread_view_comments_layer, GTextAlignmentCenter);
	scroll_layer_add_child(thread_scroll_layer, text_layer_get_layer(thread_view_comments_layer));

	thread_inverter_hidden = true;
	thread_inverter_layer = inverter_layer_create(GRect(0, 0, window_frame.size.w, LOAD_COMMENTS_HEIGHT));
	layer_set_hidden(inverter_layer_get_layer(thread_inverter_layer), true);
	scroll_layer_add_child(thread_scroll_layer, inverter_layer_get_layer(thread_inverter_layer));

	if(thread->type == 1)
	{
		// we are an image
		thread_body_layer = NULL;

		thread_bitmap_layer = bitmap_layer_create(GRect(0, 22, window_frame.size.w, window_frame.size.h));
		scroll_layer_add_child(thread_scroll_layer, bitmap_layer_get_layer(thread_bitmap_layer));

		scroll_layer_set_content_size(thread_scroll_layer, GSize(window_frame.size.w, 22 + window_frame.size.h + 10));

		thread_update_comments_position();
	}
	else
	{
		//current_thread.image = NULL;
		thread_bitmap_layer = NULL;

		thread_body_layer = text_layer_create(GRect(0, 22, window_frame.size.w, 10000));
		text_layer_set_font(thread_body_layer, GetFont());
		scroll_layer_add_child(thread_scroll_layer, text_layer_get_layer(thread_body_layer));
	}
}
예제 #2
0
void setup_message_layer() {
	int header_height = get_header_height();
	int text_height = get_text_height();
	setup_header(header_height);
	layer_set_frame(text_layer_get_layer(messagetext_layer), GRect(0, header_height, 144, text_height));
	scroll_layer_set_content_offset(message_layer, GPoint(0, 0), false);
	scroll_layer_set_content_size(message_layer, GSize(144, header_height + text_height));
	layer_set_hidden(scroll_layer_get_layer(message_layer), false);
}
예제 #3
0
static void history_window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  history_scroller = scroll_layer_create(bounds);
  scroll_layer_set_click_config_onto_window(history_scroller, window);

  int items = current_history_batch * HISTORY_BATCH_SIZE +
    history[current_history_batch].last_event + 1;
  int width = 142;
  int margin = (bounds.size.w - width)/2;
  GSize max_size = GSize(bounds.size.w, (items + 9) * 19); // font size is 18, 5 newlines before and 4 after
  history_layer = text_layer_create(GRect(margin, 0, width, max_size.h));
  if ((current_history_batch == 0) && (history[0].last_event < 0)) {
    strcpy(history_text, "No history recorded.");
  }
  else {
    // int history_events = current_history_batch * HISTORY_BATCH_SIZE + history[current_history_batch].last_event + 1;
    // APP_LOG(APP_LOG_LEVEL_DEBUG, "%d history events", history_events);
    strcpy(history_text, "\n\n\n\n\n");
    for (int b=current_history_batch; b>=0; b--) {
      // APP_LOG(APP_LOG_LEVEL_DEBUG, "Processing batch %d", b);
      for (int e=history[b].last_event; e>=0; e--) {
        // APP_LOG(APP_LOG_LEVEL_DEBUG, "Feeling %d at %d (%d/%d)", history[b].mood[e], (int) history[b].event_time[e], e, b);
        struct tm *lt = localtime(&history[b].event_time[e]);
        strftime(timestr, sizeof(timestr), "%V %a %k:%M", lt);
        snprintf(event_text, sizeof(event_text), "%s %s\n", timestr, Moods[history[b].mood[e]]);
        strncat(history_text, event_text, sizeof(event_text));
      }
    }
  }
  strncat(history_text, "\n\n\n\n", 5);
  text_layer_set_text(history_layer, history_text);
  text_layer_set_font(history_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18));
  text_layer_set_overflow_mode(history_layer, GTextOverflowModeWordWrap);
  text_layer_set_text_color(history_layer, GColorBlack);
  text_layer_set_background_color(history_layer, GColorWhite);
  max_size = text_layer_get_content_size(history_layer);
  max_size.w = bounds.size.w;
  text_layer_set_size(history_layer, max_size);
  scroll_layer_set_content_size(history_scroller, max_size);
  scroll_layer_add_child(history_scroller, text_layer_get_layer(history_layer));
  scroll_layer_set_content_offset(history_scroller, GPoint(0, 40), true);
  layer_add_child(window_layer, scroll_layer_get_layer(history_scroller));
}
static void resetListParameters() {
	for (int i = 0; i < numItems; i++) {
		checklistOrderArr[i] = i;		// Assume that order is the same for the parsed string (which it will be when intially parsed)
	}

	// Highlight the top row
	highlightedChecklistNumber = 0;
	scrollNumber = 0;
	runningOffset = 0;
	if (sumStatusArr() == 0) {
		hasCheckedItems = 0;	//false
		lastCheckedItem = numItems - 1;		// the last checked item must initialised to the final entry to function correctly
	} else {
		hasCheckedItems = 1;		//true
	}
	// Reset the scroll to the top of the list
	scroll_layer_set_content_offset(s_checklist_scroll, GPoint(0, 0), true);		// Scroll
}
static void down_click_handler(ClickRecognizerRef recognizer, void *context) {
	if (highlightedChecklistNumber == (numItems - 1)) {
		// Reached the last list item, don't move anything!
	} else {
		if (scrollNumber == NUM_VISIBLE_ITEMS) {
			// Need to scroll downwards
			if (runningOffset >= (sizeOfContent)) {
				// Can't scroll any further
				scrollNumber++;		// Decrement scrollNumber, to account for the upper most item
			} else {
				scroll_layer_set_content_offset(s_checklist_scroll, GPoint(0, runningOffset -= SCROLL_OFFSET), true);		// Scroll down
			}
		} else {
			scrollNumber++;		// No scroll intended, so increment number
		}
		highlightedChecklistNumber++;		// Decrement the highlighted item
		highlightChecklistItem(highlightedChecklistNumber);		// Update the highlighted item display
	}
}
// Click handlers ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
static void up_click_handler(ClickRecognizerRef recognizer, void *context) {
	if (highlightedChecklistNumber == 0) {
		// Reached the first list item, don't move anything!
	} else {
		if (scrollNumber == 1) {
			// Need to scroll upwards
			if (runningOffset == 0) {
				// Can't scroll any further
				scrollNumber--;		// Decrement scrollNumber, to account for the upper most item
			} else {
				scroll_layer_set_content_offset(s_checklist_scroll, GPoint(0, runningOffset += SCROLL_OFFSET), true);		// Scroll up
			}
		} else {
			scrollNumber--;		// No scroll intended, so decrement number
		}
		highlightedChecklistNumber--;		// Decrement the highlighted item
		highlightChecklistItem(highlightedChecklistNumber);		// Update the highlighted item display
	}
}
예제 #7
0
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);
}
예제 #8
0
void scroll_layer_scroll_down_click_handler(ClickRecognizerRef recognizer, void *l) {
    ScrollLayer* scroll_layer=(ScrollLayer*)l;
    GPoint offset=scroll_layer_get_content_offset(scroll_layer);
    offset.y-=SCROLL_LAYER_SCROLL_AMOUNT;
    scroll_layer_set_content_offset(scroll_layer,offset,true);
}
예제 #9
0
void scroll_layer_scroll_up_click_handler(ClickRecognizerRef recognizer, ScrollLayer *scroll_layer) {
    GPoint offset=scroll_layer_get_content_offset(scroll_layer);
    offset.y+=SCROLL_LAYER_SCROLL_AMOUNT;
    scroll_layer_set_content_offset(scroll_layer,offset,true);
}