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

📄 currencyconvertore.c

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