示例#1
0
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);

}
示例#2
0
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;
}
示例#3
0
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(&reg_label, &box->rect);
    if (!DFB_REGION_CONTAINS_POINT(&reg_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);
}
示例#4
0
/* 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);
    }
}
示例#5
0
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);
}