DFBResult lite_set_progressbar_images(LiteProgressBar *progressbar, const char *filename_fg, const char *filename_bg) { DFBResult res; LITE_NULL_PARAMETER_CHECK(progressbar); LITE_NULL_PARAMETER_CHECK(filename_fg); LITE_BOX_TYPE_PARAMETER_CHECK(LITE_BOX(progressbar), LITE_TYPE_PROGRESSBAR); D_DEBUG_AT(LiteProgressBarDomain, "Load progressbar from files: %s %s\n", filename_fg, filename_bg); res = lite_util_load_image(filename_fg, DSPF_UNKNOWN, &progressbar->surface_fg, &progressbar->width, &progressbar->height, NULL); if (res != DFB_OK) return res; if (filename_bg) { res = lite_util_load_image(filename_bg, DSPF_UNKNOWN, &progressbar->surface_bg, &progressbar->width, &progressbar->height, NULL); if(res != DFB_OK) return res; } return lite_update_box(LITE_BOX(progressbar), NULL); }
DFBResult lite_set_progressbar_value(LiteProgressBar *progressbar, float value) { LITE_NULL_PARAMETER_CHECK(progressbar); progressbar->value = value; lite_update_box(LITE_BOX(progressbar), NULL); return DFB_OK; }
static void on_cbs_motion(int *y) { pthread_mutex_lock(&ui_mutex); if (y == NULL) { /* back to the original position */ pthread_mutex_unlock(&ui_mutex); return; } LiteBox *box = LITE_BOX(detailLabel); int cur_line, delta_line; int downX = getUiControlObj()->downX; int downY = getUiControlObj()->downY; int dy = downY - *y; DFBRegion reg_label; dfb_region_from_rectangle(®_label, &box->rect); if (!DFB_REGION_CONTAINS_POINT(®_label, downX, downY)) { pthread_mutex_unlock(&ui_mutex); return; } lite_get_label_cur_line(detailLabel, &cur_line); delta_line = dy / VERTICAL_SWIPE_THRESHOLD; LOG_DBG("[%s] total_line = %d, cur_line = %d, delta_line = %d\n", __func__, total_line, cur_line, delta_line); if (total_line <= MAX_CBS_DETAIL_LINES) { pthread_mutex_unlock(&ui_mutex); return; } cur_line += delta_line; if (cur_line < 0) { cur_line = 0; } else if (cur_line >= max_moved_lines) { cur_line = max_moved_lines; } LiteBox *scroll_box = LITE_BOX(scrollbarImg); scroll_box->rect.y = cur_line * scroll_step + SCROLLBAR_TOP; lite_reinit_box_and_children(scroll_box); lite_update_box(scroll_box->parent, NULL); LOG_DBG("[%s] scroll_step = %d, scroll_box->rect.y = %d, cur_line = %d\n", __func__, scroll_step, scroll_box->rect.y, cur_line); lite_set_label_cur_line(detailLabel, cur_line); pthread_mutex_unlock(&ui_mutex); }
/* use default max_width when max_width is zero */ static __setup_label_by_tag(LiteLabel* label, char* tag, DFBColor *color, int max_width, LiteFontStyle style, DFBColor *color2, char* text2) { if (label == NULL || tag == NULL || color == NULL) { LOG_ERR("setup_label_by_tag failed: invalid input\n"); return; } MULTI_LANG_TEXT_STRUCT* ml; LiteBox *box; LiteLabelAlignment alignment; ml = get_lang_struct_by_tag(tag); if (ml != NULL) { box = LITE_BOX(label); alignment = get_lang_alignment(ml); box->rect.x = ml->xlocation; box->rect.y = ml->ylocation; if (alignment == LITE_LABEL_RIGHT) { max_width = (max_width == 0) ? RIGHT_MARGIN_WIDTH : max_width; box->rect.w = max_width - ml->xlocation; /* Use 220 for right-alignment case */ } else { max_width = (max_width == 0) ? MKD_SCREEN_WIDTH : max_width; box->rect.w = max_width - ml->xlocation; } box->rect.h = 64; lite_set_label_text(label, ml->content); lite_set_label_color(label, color); if (!DFB_COLOR_EQUAL(*color2, Colors.none)) { lite_set_label_color2(label, color2); } if (text2 != NULL) { lite_set_label_text2(label, text2); } lite_set_label_font(label, get_lang_font(ml), style, ml->fontsize, DFFA_AUTOHINTING); lite_set_label_alignment(label, get_lang_alignment(ml)); lite_reinit_box_and_children(box); lite_update_box(box->parent, NULL); } }
static void switch_ui() { pthread_mutex_lock(&ui_mutex); DFBResult res; char meterbuf[16]; int distance, unit_factor; bool negative_dist; enum mileage_unit mUnit = getInfoManager()->get_mileage_unit(); if (mUnit == MILEAGE_UNIT_MILE) { lite_set_label_text(meterLabel, get_lang_str_by_tag("LS_SC_MILE_1ST")); } else { lite_set_label_text(meterLabel, get_lang_str_by_tag("LS_SC_KM_1ST")); } distance = getInfoManager()->rke_get_cbs_distance(CBS_DETAIL_ID_FRONT_BRAKES); unit_factor = getInfoManager()->rke_get_cbs_unit_factor(CBS_DETAIL_ID_FRONT_BRAKES); negative_dist = getInfoManager()->rke_is_cbs_distance_negative(CBS_DETAIL_ID_FRONT_BRAKES); if (distance == RKE_ERR) { snprintf(meterbuf, sizeof(meterbuf), "%s", get_lang_str_by_tag("LS_SC_SINCENODATA_1ST")); } else if (negative_dist) { snprintf(meterbuf, sizeof(meterbuf), "%s %d", get_lang_str_by_tag("LS_SC_SINCE_1ST"), distance * unit_factor); } else { snprintf(meterbuf, sizeof(meterbuf), "%d", distance * unit_factor); } lite_set_label_text(meterNumLabel, meterbuf); switch (getInfoManager()->rke_get_cbs_status(CBS_DETAIL_ID_FRONT_BRAKES)) { case CBSS_GRAY: res = lite_load_image(iconImg, IMAGE_DIR "1_2_frontbreaks_grey.png"); setup_label_by_tag_width(detailLabel, "LS_FRONT_BRAKEDESC_SENSOR", RIGHT_MARGIN_WIDTH); break; case CBSS_GREEN: res = lite_load_image(iconImg, IMAGE_DIR "1_2_frontbreaks_white.png"); setup_label_by_tag_width(detailLabel, "LS_FRONT_BRAKEDESC", RIGHT_MARGIN_WIDTH); break; case CBSS_YELLOW: res = lite_load_image(iconImg, IMAGE_DIR "1_2_frontbreaks_yellow.png"); setup_label_by_tag_width(detailLabel, "LS_FRONT_BRAKEDESC_Y", RIGHT_MARGIN_WIDTH); break; default: case CBSS_RED: res = lite_load_image(iconImg, IMAGE_DIR "1_2_frontbreaks_red.png"); setup_label_by_tag_width(detailLabel, "LS_FRONT_BRAKEDESC_R", RIGHT_MARGIN_WIDTH); break; } lite_get_label_total_lines(detailLabel, &total_line); lite_set_label_cur_line(detailLabel, 0); max_moved_lines = total_line - MAX_CBS_DETAIL_LINES; LiteBox *box = LITE_BOX(scrollbarImg); if (total_line < 5) { lite_set_box_visible(LITE_BOX(scrollbarImg), false); } else { if (total_line == 5) { box->rect.x = 223; box->rect.y = SCROLLBAR_TOP; box->rect.w = 4; box->rect.h = 56; lite_load_image(scrollbarImg, IMAGE_DIR "key_scrollbar_3.png"); } else if (total_line == 6) { box->rect.x = 223; box->rect.y = SCROLLBAR_TOP; box->rect.w = 4; box->rect.h = 40; lite_load_image(scrollbarImg, IMAGE_DIR "key_scrollbar_2.png"); } else if (total_line >= 7) { box->rect.x = 223; box->rect.y = SCROLLBAR_TOP; box->rect.w = 4; box->rect.h = 24; lite_load_image(scrollbarImg, IMAGE_DIR "key_scrollbar_1.png"); } lite_reinit_box_and_children(box); lite_update_box(box->parent, NULL); lite_set_box_visible(box, true); scroll_step = (SCROLLBAR_BOTTOM - SCROLLBAR_TOP - box->rect.h) / max_moved_lines; } pthread_mutex_unlock(&ui_mutex); }