⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 currencyconvertore.c

📁 mtk工具箱,计算器的详细设计,可以由此入手了解mtk的
💻 C
📖 第 1 页 / 共 5 页
字号:
 *  update the currency id and redraw the screen
 * PARAMETERS
 *  index       [IN]        Index of selected item.
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_rate_inline_select_highlight_hdlr(S32 index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S8 i;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < CCONV_MAX_RATEENTRIES; i++)
    {
        if (g_cconv_ctx->curID[i] != mmi_cconv_get_cur_id(g_cconv_ctx->curIndex[i], g_cconv_ctx->curList[i]))
        {
            g_cconv_ctx->curID[i] = mmi_cconv_get_cur_id(g_cconv_ctx->curIndex[i], g_cconv_ctx->curList[i]);
            CloseCategory57Screen();
            /* mmi_cconv_rate_layout_inline_items(); */
            mmi_cconv_rate_select_list();
            RedrawCategoryFunction();
            return;
        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_rate_inline_edit_highlight_hdlr
 * DESCRIPTION
 *  Set group key handlers of inline editor
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_rate_inline_edit_highlight_hdlr(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    SetKeyHandler(mmi_cconv_rate_inline_edit_key_hdlr, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
    DisableCategory57ScreenDone();
    SetLeftSoftkeyFunction(mmi_cconv_rate_save_change, KEY_EVENT_UP);
    SetCategory57RightSoftkeyFunctions(mmi_cconv_rate_save_change, GoBackHistory);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_rate_inline_edit_validation_hdlr
 * DESCRIPTION
 *  Correct the cursor posiition of inline edit
 * PARAMETERS
 *  buffer          [?]         Content of inline edit.
 *  cursor          [?]         Content after the cursor position
 *  text_length     [IN]        Content length
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_rate_inline_edit_validation_hdlr(U8 *buffer, U8 *cursor, S32 text_length)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 diff;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (!(g_cconv_ctx->selectedLocalCurID < CCONV_NAMED_CURRENCY))
    {
        return;
    }

    diff = gui_strlen((UI_string_type) curShortName[g_cconv_ctx->selectedLocalCurID]) -
        gui_strlen((UI_string_type) cursor) + 1;

    if (diff > 0)
    {
        gui_single_line_input_box_previous_steps(&MMI_inline_singleline_inputbox, diff);
    }
    else if (diff < 0)
    {
        gui_single_line_input_box_next_steps(&MMI_inline_singleline_inputbox, diff);
    }
	redraw_inline_singleline_inputbox();
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_rate_inline_edit_key_hdlr
 * DESCRIPTION
 *  Correct the cursor posiition of inline edit
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_rate_inline_edit_key_hdlr(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 diff;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_cconv_ctx->selectedLocalCurID < CCONV_NAMED_CURRENCY)
    {

        diff = gui_strlen((UI_string_type) curShortName[g_cconv_ctx->selectedLocalCurID]) -
            gui_strlen((UI_string_type) MMI_inline_singleline_inputbox.current_text_p) + 1;

        if (diff > 0)
        {
            gui_single_line_input_box_previous_steps(&MMI_inline_singleline_inputbox, diff);
        }
        else if (diff < 0)
        {
            inline_edit_singleline_inputbox_next_character();
            /* gui_single_line_input_box_next_steps(&MMI_inline_singleline_inputbox, diff); */
        }
    }
    else
    {
        inline_edit_singleline_inputbox_next_character();
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_get_cur_id
 * DESCRIPTION
 *  Returns the id of a currency given the index in the list provided.
 * PARAMETERS
 *  index       [IN]        Index of the currency in the list.
 *  list        [IN]        A list that contains the currency.
 * RETURNS
 *  currency id.
 *****************************************************************************/
S32 mmi_cconv_get_cur_id(S32 index, S8 **list)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S8 i;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < CCONV_MAX_CURRENCY; i++)
    {
        if (list[index] == curName[i])
        {
            return i;
        }
    }
    return 0;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_get_cur_index
 * DESCRIPTION
 *  Returns the index of a currency in the list provided.
 * PARAMETERS
 *  id          [IN]        Id of the currency.
 *  list        [IN]        A list that contains the currency.
 *  nItems      [IN]        Number of items in the list.
 * RETURNS
 *  currency index in the list.
 *****************************************************************************/
S32 mmi_cconv_get_cur_index(S32 id, S8 **list, S8 nItems)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S8 i;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < nItems; i++)
    {
        if (list[i] == curName[id])
        {
            return i;
        }
    }
    return 0;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_get_exchange_rate
 * DESCRIPTION
 *  Returns predefined exchange rate by given currency id.
 * PARAMETERS
 *  currencyID1     [IN]        Id of currency 1.
 *  currencyID2     [IN]        Id of currency 2.
 * RETURNS
 *  Predefined exchange rate.
 *****************************************************************************/
DOUBLE mmi_cconv_get_exchange_rate(S32 currencyID1, S32 currencyID2)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S8 i;
    DOUBLE rate1 = 0, rate2 = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < CCONV_MAX_RATEENTRIES; i++)
    {
        if (g_cconv_ctx->curID[i] == currencyID1)
        {
            rate1 = g_cconv_ctx->rate[i];
            break;
        }
    }

    for (i = 0; i < CCONV_MAX_RATEENTRIES; i++)
    {
        if (g_cconv_ctx->curID[i] == currencyID2)
        {
            rate2 = g_cconv_ctx->rate[i];
            break;
        }
    }

    if (rate2 == 0)
    {
        rate2 = 1;  /* get around with divide zero case. */
    }

    if (currencyID1 == g_cconv_ctx->selectedLocalCurID)
    {
        return 1 / rate2;
    }
    else if (currencyID2 == g_cconv_ctx->selectedLocalCurID)
    {
        return rate1;
    }
    else
    {
        return rate1 / rate2;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_compute_result
 * DESCRIPTION
 *  Convert the result and display.
 * PARAMETERS
 *  buffer      [?]     A string of number for conversion.
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_compute_result(U8 *buffer)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 precision;
    DOUBLE result, conversion_factor;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* CloseCategory57Screen(); */

    if ((gui_strlen((UI_string_type) buffer) < 1))
    {
        memset(g_cconv_ctx->ForeBuff, 0, 15);
    }
    else
    {
        /* calculate result */
        conversion_factor = g_cconv_ctx->selectedRate;

        result = (DOUBLE) (conversion_factor * gui_atof((UI_string_type) buffer));

        precision = CalcComputePrecision(result, CCONV_MAX_RESULT);

        gui_float_string(result, precision, (S8*) g_cconv_ctx->ForeBuff);
    }
    RedrawCategoryFunction();
}


/*****************************************************************************
 * FUNCTION
 *  mmi_cconv_return_to_menu
 * DESCRIPTION
 *  Exit application and return to menu.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_cconv_return_to_menu(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    GoBackToHistory(SCR_EXTRA);
    /* GoBackHistory(); */
}
#endif /* __MMI_EXTENDED_CURRENCY_CONVERTER__ */ // #ifdef __MMI_EXTENDED_CURRENCY_CONVERTER__
#endif /* _MMI_CURRENCYCONVERTORE_C */ // #ifndef _MMI_CURRENCYCONVERTORE_C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -