📄 unitconvertor.c
字号:
};
const DOUBLE g_surface_rate[2][UCONV_SURFACE_UNIT_NUM] =
{
{1, 0.40469, 4.046E+9, 4.046E+7, 4046.85, 4.046E-3, 6268570, 43537.631, 4840.0326, 1.5556E-3},
{2.47106, 1, 1E+10, 1E+8, 1E+4, 1E-2, 1.549E+7, 1.07584E+5, 1.196E+4, 3.844E-3}
};
#endif /* __MMI_EXTENDED_UNIT_CONVERTER__ */
/*
* Global Function
*/
extern DOUBLE gui_atof(UI_string_type s);
extern void gui_float_string(DOUBLE dob_val, S32 prec_val, S8 *out_buffer);
extern void set_leading_zero(U8 u8type);
extern S32 CalcComputePrecision(DOUBLE result, S16 max_digits);
extern void CconvClearResult(void);
/* Local Function */
U8 mmi_uconv_del_scr_callback(void *p);
#ifdef __MMI_UNIT_CONVERTER__
void HighlightUConvLength(void);
void HighlightUConvWeight(void);
void ComputeLengthResult(void);
void ComputeWeightResult(void);
#else /* __MMI_UNIT_CONVERTER__ */
void mmi_uconv_highlight_volume(void);
void mmi_uconv_highlight_temperature(void);
void mmi_uconv_highlight_velocity(void);
void mmi_uconv_highlight_length(void);
void mmi_uconv_highlight_weight(void);
void mmi_uconv_highlight_shoes(void);
void mmi_uconv_highlight_clothes(void);
void mmi_uconv_highlight_surface(void);
extern void playRequestedTone(ALL_TONE_ENUM playtone);
#endif /* __MMI_UNIT_CONVERTER__ */
/*****************************************************************************
* FUNCTION
* HighlightUConvMenu
* DESCRIPTION
* Highlight handler of Unit Conveter menu item.
* Register key handlers.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void HighlightUConvMenu(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
SetLeftSoftkeyFunction(EntryUConvMenu, KEY_EVENT_UP);
SetKeyHandler(EntryUConvMenu, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* UConvRedrawResult
* DESCRIPTION
* Redraw result after computing
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void UConvRedrawResult(void)
{
#ifdef __MMI_CONVERTER_KEEP_INLINE_FOCUS__
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
RedrawCategoryFunction();
#else /* __MMI_CONVERTER_KEEP_INLINE_FOCUS__ */
SetHighlightedItem(0);
#endif /* __MMI_CONVERTER_KEEP_INLINE_FOCUS__ */
}
/*****************************************************************************
* FUNCTION
* UconvDeInit
* DESCRIPTION
* Free memory and go back to previous screen.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void UconvDeInit(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_uconv_cntx)
{
OslMfree(g_uconv_cntx);
g_uconv_cntx = NULL;
}
}
/*****************************************************************************
* FUNCTION
* mmi_uconv_del_scr_callback
* DESCRIPTION
* Callback function of delete unit converter screen
* PARAMETERS
* p [?]
* RETURNS
* void
*****************************************************************************/
U8 mmi_uconv_del_scr_callback(void *p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 ScrID = (SCR_ID_UCONV_WEIGHT + g_uconv_cntx->CurrHiliteUnitType);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (GetActiveScreenId() == ScrID)
{
CloseCategory57Screen();
}
UconvDeInit();
return MMI_FALSE;
}
/*****************************************************************************
* FUNCTION
* EntryUConvMenu
* DESCRIPTION
* Entry function of unit convertor
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void EntryUConvMenu(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 UC_list_of_items[8]; /* Autumn {Bad!! Hardcode!!} */
U8 *guiBuffer;
S32 num_of_items;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_uconv_cntx == NULL)
{
g_uconv_cntx = OslMalloc(sizeof(uconv_context_struct));
}
g_uconv_cntx->ClearResultFlag = FALSE;
EntryNewScreen(SCR_ID_UCONV_MENU, NULL, EntryUConvMenu, NULL);
/* shoes and clothes are not supported temporary */
mmi_frm_hide_menu_item(MENU_ID_EXTRA_UNITCONVERTOR_SHOEW);
mmi_frm_hide_menu_item(MENU_ID_EXTRA_UNITCONVERTOR_CLOTHES);
guiBuffer = GetCurrGuiBuffer(SCR_ID_UCONV_MENU);
num_of_items = GetNumOfChild_Ext(EXTRA_UNITCONVERTOR_MENU);
GetSequenceStringIds_Ext(EXTRA_UNITCONVERTOR_MENU, UC_list_of_items);
SetParentHandler(EXTRA_UNITCONVERTOR_MENU);
RegisterHighlightHandler(ExecuteCurrHiliteHandler_Ext);
ShowCategory15Screen(
EXTRA_MENU_UNITSCONVERTOR_STRINGID,
GetRootTitleIcon(EXTRA_UNITCONVERTOR_MENU),
STR_GLOBAL_OK,
0,
STR_GLOBAL_BACK,
0,
num_of_items,
UC_list_of_items,
(U16*) gIndexIconsImageList,
LIST_MENU,
0,
guiBuffer);
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* UconvInit
* DESCRIPTION
* Set highlight handlers
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void UconvInit(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetHiliteHandler(EXTRA_UNITCONVERTOR_MENU, HighlightUConvMenu);
#ifndef __MMI_EXTENDED_UNIT_CONVERTER__
SetHiliteHandler(EXTRA_UNITCONVERTOR_LENGTH, HighlightUConvLength);
SetHiliteHandler(EXTRA_UNITCONVERTOR_WEIGHT, HighlightUConvWeight);
#else /* __MMI_EXTENDED_UNIT_CONVERTER__ */
SetHiliteHandler(EXTRA_UNITCONVERTOR_LENGTH, mmi_uconv_highlight_length);
SetHiliteHandler(EXTRA_UNITCONVERTOR_WEIGHT, mmi_uconv_highlight_weight);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_VOLUME, mmi_uconv_highlight_volume);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_TEMPERATURE, mmi_uconv_highlight_temperature);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_VELOCITY, mmi_uconv_highlight_velocity);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_SHOEW, mmi_uconv_highlight_shoes);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_CLOTHES, mmi_uconv_highlight_clothes);
SetHiliteHandler(MENU_ID_EXTRA_UNITCONVERTOR_SURFACE, mmi_uconv_highlight_surface);
#endif /* __MMI_EXTENDED_UNIT_CONVERTER__ */
}
/*****************************************************************************
* FUNCTION
* UConvCustomInlineFunction
* DESCRIPTION
* Set group key handlers of inline editor
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void UConvCustomInlineFunction(void)
{
#ifdef __MMI_CONVERTER_KEEP_INLINE_FOCUS__
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 keyCodes[] = {KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_POUND};
U8 nKeyCodes = (U8) 11;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_uconv_cntx->ClearResultFlag)
{
g_uconv_cntx->ClearResultFlag = FALSE;
SetGroupKeyHandler(CconvClearResult, keyCodes, nKeyCodes, KEY_EVENT_DOWN);
#if !defined(__MMI_WITH_C_KEY__)
SetRightSoftkeyFunction(CconvClearResult, KEY_EVENT_UP);
SetRightSoftkeyFunction(CconvClearResult, KEY_EVENT_LONG_PRESS);
SetRightSoftkeyFunction(NULL, KEY_EVENT_DOWN);
#else /* !defined(__MMI_WITH_C_KEY__) */
SetKeyHandler(CconvClearResult, KEY_CLEAR, KEY_EVENT_UP);
SetKeyHandler(CconvClearResult, KEY_CLEAR, KEY_EVENT_LONG_PRESS);
SetKeyHandler(NULL, KEY_CLEAR, KEY_EVENT_DOWN);
#endif /* !defined(__MMI_WITH_C_KEY__) */
#if defined(__MMI_TOUCH_SCREEN__)
mmi_pen_editor_disable_input(PEN_EDITOR_DISABLE_HANDWRITNG | PEN_EDITOR_DISABLE_VIRTUAL_KEYBOARD);
ChangeRightSoftkey(STR_ID_UNITCONVERTOR_RESET, 0);
#endif /* defined(__MMI_TOUCH_SCREEN__) */
}
#endif /* __MMI_CONVERTER_KEEP_INLINE_FOCUS__ */
}
#ifdef __MMI_UNIT_CONVERTER__
/*****************************************************************************
* FUNCTION
* HighlightUConvLength
* DESCRIPTION
* Highlight handler of Length menu in Unit Convertor
* Register key handlers.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void HighlightUConvLength(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_uconv_cntx->CurrHiliteUnitType = UCONV_LENGTH;
SetLeftSoftkeyFunction(UConvGoToComputeScreen, KEY_EVENT_UP);
SetKeyHandler(UConvGoToComputeScreen, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* HighlightUConvWeight
* DESCRIPTION
* Highlight handler of Weight menu in Unit Convertor
* Register key handlers.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void HighlightUConvWeight(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -