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

📄 unitconvertor.c

📁 mtk工具箱,计算器的详细设计,可以由此入手了解mtk的
💻 C
📖 第 1 页 / 共 5 页
字号:
};
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 + -