📄 currencyconvertore.c
字号:
{
curShortName[i] = GetString((U16) (STR_CURRENCYCONV_USD_ABBR + i));
}
else
{
curShortName[i] = strEmpty;
}
}
g_cconv_ctx->reloadFromNVRAM = TRUE;
g_cconv_ctx->isRedrawScreen = FALSE;
if (g_cconv_ctx->reloadFromNVRAM)
{
ReadValue(NVRAM_CCONV_SELECTED_CURRENCY1, &g_cconv_ctx->localCurID, DS_BYTE, &error);
if (error == NVRAM_READ_FAIL)
{
g_cconv_ctx->localCurID = 0;
}
ReadValue(NVRAM_CCONV_SELECTED_CURRENCY2, &g_cconv_ctx->foreignCurID, DS_BYTE, &error);
if (error == NVRAM_READ_FAIL)
{
g_cconv_ctx->foreignCurID = 0;
}
for (i = 0; i < CCONV_MAX_RATEENTRIES; i++)
{
ReadValue((U8) (NVRAM_CCONV_SETTING_CURRENCY1 + i), &g_cconv_ctx->curID[i], DS_BYTE, &error);
if (error == NVRAM_READ_FAIL)
{
g_cconv_ctx->curID[i] = 0;
}
ReadValue((U8) (NVRAM_CCONV_EXCHANGE_RATE1 + i), &g_cconv_ctx->rate[i], DS_DOUBLE, &error);
if (error == NVRAM_READ_FAIL)
{
g_cconv_ctx->rate[i] = -1;
}
if (!g_cconv_ctx->bRateDefined && g_cconv_ctx->rate[i] > 0)
{
g_cconv_ctx->bRateDefined = TRUE;
}
}
ReadValue(NVRAM_CCONV_SETTING_LOCALCURRENCY, &g_cconv_ctx->selectedLocalCurID, DS_BYTE, &error);
if (error == NVRAM_READ_FAIL || g_cconv_ctx->selectedLocalCurID == 0xff)
{
g_cconv_ctx->selectedLocalCurID = 0;
}
g_cconv_ctx->prevSelectedLocalCurID = g_cconv_ctx->selectedLocalCurID;
memset(g_cconv_ctx->LocalBuff, 0, ENCODING_LENGTH);
memset(g_cconv_ctx->ForeBuff, 0, ENCODING_LENGTH);
g_cconv_ctx->hiliteItemIndex = 0;
}
mmi_cconv_entry_app();
}
/*****************************************************************************
* FUNCTION
* mmi_cconv_menu_highlight_hdlr
* DESCRIPTION
* Highlight handler of Cur Converter menu item.
* Register key handlers.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_cconv_menu_highlight_hdlr(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
SetLeftSoftkeyFunction(mmi_cconv_pre_entry_app, KEY_EVENT_UP);
SetKeyHandler(mmi_cconv_pre_entry_app, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* mmi_cconv_entry_app
* DESCRIPTION
* Display rate input screen of cur convertor application
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_cconv_entry_app(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 *guiBuffer;
U8 *inputBuffer;
U16 inputBufferSize;
S8 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (!g_cconv_ctx->bRateDefined)
{
DisplayConfirm(
STR_GLOBAL_YES,
IMG_GLOBAL_YES,
STR_GLOBAL_NO,
IMG_GLOBAL_NO,
get_string(ERROR_CURRENCYCONV_RATE2),
IMG_GLOBAL_QUESTION,
WARNING_TONE);
if (IsScreenPresent(SCR_ID_CCONV_RATE_INPUT))
{
SetLeftSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
else
{
SetLeftSoftkeyFunction(mmi_cconv_pre_entry_rate, KEY_EVENT_UP);
}
SetRightSoftkeyFunction(mmi_cconv_return_to_menu, KEY_EVENT_UP);
return;
}
else
{
g_cconv_ctx->selectedRate = mmi_cconv_get_exchange_rate(g_cconv_ctx->localCurID, g_cconv_ctx->foreignCurID);
}
EntryNewScreen(SCR_ID_CCONV_COMPUTE, mmi_cconv_exit_app, NULL, NULL);
RegisterHighlightHandler(mmi_cconv_compute_item_highlight_hdlr);
SetDelScrnIDCallbackHandler(SCR_ID_CCONV_COMPUTE, (HistoryDelCBPtr) mmi_cconv_del_scr_callback);
guiBuffer = GetCurrGuiBuffer(SCR_ID_CCONV_COMPUTE);
InitializeCategory57Screen();
inputBuffer = GetCurrNInputBuffer(SCR_ID_CCONV_COMPUTE, &inputBufferSize); /* added for inline edit history */
if (inputBuffer && g_cconv_ctx->isRedrawScreen == FALSE) /* added for inline edit history */
{
SetCategory57Data(wgui_inline_items, CCONV_CURRENCY_INLINE_TOTAL, inputBuffer); /* sets the data */
}
else
{
g_cconv_ctx->isRedrawScreen = FALSE;
}
set_leading_zero(FALSE);
DisableInlineInputMethodHints();
mmi_cconv_fill_inline();
ShowCategory57Screen(
STR_CURRENCYCONV_INPUT,
GetRootTitleIcon(EXTRA_CURRENCYCONVERTOR_MENU),
STR_CURRENCYCONV_RATE,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
CCONV_CURRENCY_INLINE_TOTAL,
NULL,
wgui_inline_items,
g_cconv_ctx->hiliteItemIndex,
guiBuffer);
DisableCategory57ScreenDone();
SetCategory57RightSoftkeyFunctions(mmi_cconv_return_to_menu, mmi_cconv_return_to_menu);
SetLeftSoftkeyFunction(mmi_cconv_pre_entry_rate, KEY_EVENT_UP);
}
/*****************************************************************************
* FUNCTION
* mmi_cconv_fill_inline
* DESCRIPTION
* Fill inline editor structure
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_cconv_fill_inline(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S8 nItems1 = 0, nItems2 = 0, i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
nItems1 = mmi_cconv_local_select_list(&nItems1);
nItems2 = mmi_cconv_fore_select_list(&nItems2);
SetInlineItemActivation(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL_SELECT],
INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT,
0);
SetInlineItemSelect(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL_SELECT],
nItems1,
(U8 **) g_cconv_ctx->curList1,
&g_cconv_ctx->localCurIndex);
RegisterInlineSelectHighlightHandler(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL_SELECT],
mmi_cconv_compute_local_select_highlight_hdlr);
if (nItems1 == 0)
{
DisableInlineItem(&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL_SELECT], 0);
}
SetInlineItemActivation(&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);
SetInlineItemTextEdit(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL],
(U8*) g_cconv_ctx->LocalBuff,
(CCONV_MAX_INPUT + 1),
INPUT_TYPE_DECIMAL_NUMERIC);
SetInlineTextEditCustomFunction(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL],
mmi_cconv_compute_inline_edit_highlight_hdlr);
RegisterInlineFullScreenEditValidationFunction(
&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL],
mmi_cconv_compute_inline_edit_validation_hdlr);
EnableInlineItemBoundary(&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL]);
RightJustifyInlineItem(&wgui_inline_items[CCONV_CURRENCY_INLINE_LOCAL]);
SetInlineItemActivation(
&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE_SELECT],
INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT,
0);
SetInlineItemSelect(
&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE_SELECT],
nItems2,
(U8 **) g_cconv_ctx->curList2,
&g_cconv_ctx->foreignCurIndex);
RegisterInlineSelectHighlightHandler(
&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE_SELECT],
mmi_cconv_compute_fore_select_highlight_hdlr);
if (nItems2 == 0)
{
DisableInlineItem(&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE_SELECT], 2);
}
SetInlineItemActivation(&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);
SetInlineItemTextEdit(
&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE],
(U8*) g_cconv_ctx->ForeBuff,
(CCONV_MAX_INPUT + 1),
INPUT_TYPE_DECIMAL_NUMERIC);
EnableInlineItemBoundary(&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE]);
RightJustifyInlineItem(&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE]);
DisableInlineItem(&wgui_inline_items[CCONV_CURRENCY_INLINE_FORE], 3);
}
/*****************************************************************************
* FUNCTION
* mmi_cconv_exit_app
* DESCRIPTION
* Display rate input screen of cur convertor application
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_cconv_exit_app(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 inputBufferSize; /* added for inline edit history */
history HistoryCCComputeCurrency;
S16 nHistory = 0;
S16 error;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
set_leading_zero(TRUE);
if (g_cconv_ctx)
{
g_cconv_ctx->localCurID = mmi_cconv_get_cur_id(g_cconv_ctx->localCurIndex, g_cconv_ctx->curList1);
g_cconv_ctx->foreignCurID = mmi_cconv_get_cur_id(g_cconv_ctx->foreignCurIndex, g_cconv_ctx->curList2);
WriteValue(NVRAM_CCONV_SELECTED_CURRENCY1, &g_cconv_ctx->localCurID, DS_BYTE, &error);
WriteValue(NVRAM_CCONV_SELECTED_CURRENCY2, &g_cconv_ctx->foreignCurID, DS_BYTE, &error);
CloseCategory57Screen();
}
HistoryCCComputeCurrency.scrnID = SCR_ID_CCONV_COMPUTE;
HistoryCCComputeCurrency.entryFuncPtr = mmi_cconv_entry_app;
GetCategory57History(HistoryCCComputeCurrency.guiBuffer);
UCS2Strcpy((S8*) HistoryCCComputeCurrency.inputBuffer, (S8*) & nHistory);
inputBufferSize = (U16) GetCategory57DataSize(); /* added for inline edit history */
GetCategory57Data((U8*) HistoryCCComputeCurrency.inputBuffer); /* added for inline edit history */
AddNHistory(HistoryCCComputeCurrency, inputBufferSize); /* added for inline edit history */
}
/*****************************************************************************
* FUNCTION
* mmi_cconv_pre_entry_rate
* DESCRIPTION
* Pre-entry function for exchange screen.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_cconv_pre_entry_rate(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_cconv_ctx->hiliteItemIndex = 0;
CloseCategory57Screen();
mmi_cconv_entry_rate();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -