📄 currencyconvertore.c
字号:
* 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 + -