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

📄 fmradiosrc.c

📁 mtk平台的调频收音机的mmi部分! 可以了解mtk调频收音机的用户界面!
💻 C
📖 第 1 页 / 共 5 页
字号:
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_press_search_button
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_press_search_button(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_button_down)
    {
        return;
    }

    g_fmrdo.selected_button = FMRDO_BUTTON_SEARCH;
    g_fmrdo.is_button_down = TRUE;

    mmi_fmrdo_redraw_main_toggle_button(g_fmrdo.selected_button, g_fmrdo.is_button_down, g_fmrdo.is_search_on, TRUE);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_release_search_button
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_release_search_button(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_button_down && g_fmrdo.selected_button == FMRDO_BUTTON_SEARCH)
    {
        g_fmrdo.is_button_down = FALSE;
        g_fmrdo.is_search_on = !g_fmrdo.is_search_on;

        mmi_fmrdo_redraw_main_toggle_button(
            g_fmrdo.selected_button,
            g_fmrdo.is_button_down,
            g_fmrdo.is_search_on,
            TRUE);

        /* stop if it's searching */
        mmi_fmrdo_search_frequency_stop();

        g_fmrdo.selected_button = FMRDO_BUTTON_NONE;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_press_power_button
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_press_power_button(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_button_down)
    {
        return;
    }

#ifdef __MMI_FM_RADIO_BIND_EARPHONE__
    if (!isEarphonePlugged)
    {
        DisplayPopup(
            (PU8) GetString(STR_ID_FMRDO_PLEASE_PLUG_IN_EARPHONE),
            IMG_GLOBAL_WARNING,
            1,
            2000,
            (U8) WARNING_TONE);
        return;
    }
#endif /* __MMI_FM_RADIO_BIND_EARPHONE__ */ 
    g_fmrdo.selected_button = FMRDO_BUTTON_POWER;
    g_fmrdo.is_button_down = TRUE;

    mmi_fmrdo_redraw_main_toggle_button(g_fmrdo.selected_button, g_fmrdo.is_button_down, g_fmrdo.is_power_on, TRUE);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_release_power_button
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_release_power_button(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_button_down && g_fmrdo.selected_button == FMRDO_BUTTON_POWER)
    {
        g_fmrdo.is_button_down = FALSE;

        /* stop if it's searching */
        mmi_fmrdo_search_frequency_stop();

        /* power off if it's on */
        mmi_fmrdo_power_on((BOOL) ! g_fmrdo.is_power_on);

        mmi_fmrdo_redraw_main_toggle_button(g_fmrdo.selected_button, g_fmrdo.is_button_down, g_fmrdo.is_power_on, TRUE);

        g_fmrdo.selected_button = FMRDO_BUTTON_NONE;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_exit_root
 * DESCRIPTION
 *  
 * PARAMETERS
 *  param_p     [?]     
 * RETURNS
 *  U8
 *****************************************************************************/
U8 mmi_fmrdo_exit_root(void *param_p)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S16 error;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (!g_fmrdo.is_background_play)
    {
        mmi_fmrdo_power_on(FALSE);
    }

    /* Keep frequency after exit FM radio */
    WriteValue(NVRAM_FMRDO_LAST_CHANNEL, &g_fmrdo.frequency, DS_SHORT, &error);
    
    return FALSE;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_main_register_keys
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
#ifdef __MMI_TOUCH_SCREEN__
extern void mmi_fmrdo_pen_down_hdlr(mmi_pen_point_struct pos);
extern void mmi_fmrdo_pen_up_hdlr(mmi_pen_point_struct pos);
extern void mmi_fmrdo_pen_move_hdlr(mmi_pen_point_struct pos);
#endif /* __MMI_TOUCH_SCREEN__ */ 
void mmi_fmrdo_main_register_keys(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 number_keys[] = {KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9};
    const mmi_fmrdo_skin_struct *skin_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    void (*button_press_hdlr[]) (void) =
    {
        MMI_dummy_function,                     /* FMRDO_BUTTON_NONE */
            mmi_fmrdo_press_power_button,       /* FMRDO_BUTTON_POWER */
            mmi_fmrdo_press_search_button,      /* FMRDO_BUTTON_SEARCH */
            mmi_fmrdo_press_step_up_button,     /* FMRDO_BUTTON_STEP_UP */
            mmi_fmrdo_press_step_down_button    /* FMRDO_BUTTON_STEP_DOWN */
    };
    void (*button_release_hdlr[]) (void) =
    {
        MMI_dummy_function,                     /* FMRDO_BUTTON_NONE */
            mmi_fmrdo_release_power_button,     /* FMRDO_BUTTON_POWER */
            mmi_fmrdo_release_search_button,    /* FMRDO_BUTTON_SEARCH */
            mmi_fmrdo_release_step_up_button,   /* FMRDO_BUTTON_STEP_UP */
            mmi_fmrdo_release_step_down_button  /* FMRDO_BUTTON_STEP_DOWN */
    };

    /* associate button press, release handlers with skin settings and register arrow key handlers */
    skin_p = &g_fmrdo_skins[g_fmrdo.skin_index];
    SetKeyHandler(button_release_hdlr[skin_p->left_key_mapping], KEY_LEFT_ARROW, KEY_EVENT_UP);
    SetKeyHandler(button_release_hdlr[skin_p->right_key_mapping], KEY_RIGHT_ARROW, KEY_EVENT_UP);
    SetKeyHandler(button_release_hdlr[skin_p->up_key_mapping], KEY_UP_ARROW, KEY_EVENT_UP);
    SetKeyHandler(button_release_hdlr[skin_p->down_key_mapping], KEY_DOWN_ARROW, KEY_EVENT_UP);
    SetKeyHandler(button_press_hdlr[skin_p->left_key_mapping], KEY_LEFT_ARROW, KEY_EVENT_DOWN);
    SetKeyHandler(button_press_hdlr[skin_p->right_key_mapping], KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
    SetKeyHandler(button_press_hdlr[skin_p->up_key_mapping], KEY_UP_ARROW, KEY_EVENT_DOWN);
    SetKeyHandler(button_press_hdlr[skin_p->down_key_mapping], KEY_DOWN_ARROW, KEY_EVENT_DOWN);
    SetKeyHandler(MMI_dummy_function, KEY_UP_ARROW, KEY_EVENT_REPEAT);
    SetKeyHandler(MMI_dummy_function, KEY_RIGHT_ARROW, KEY_EVENT_REPEAT);
    SetKeyHandler(MMI_dummy_function, KEY_LEFT_ARROW, KEY_EVENT_REPEAT);
    SetKeyHandler(MMI_dummy_function, KEY_DOWN_ARROW, KEY_EVENT_REPEAT);

    /* register number key handlers */
    SetGroupKeyHandler(mmi_fmrdo_release_number_key, number_keys, 9, KEY_EVENT_UP);
    SetGroupKeyHandler(mmi_fmrdo_long_press_number_key, number_keys, 9, KEY_LONG_PRESS);

    /* register LSK, RSK hanlders */
    SetKeyHandler(mmi_fmrdo_entry_main_option, KEY_LSK, KEY_EVENT_UP);
    SetKeyHandler(GoBackHistory, KEY_RSK, KEY_EVENT_UP);

    /* register volume inc, dec handlers */
    SetKeyHandler(mmi_fmrdo_inc_volume, KEY_VOL_UP, KEY_EVENT_DOWN);
    SetKeyHandler(mmi_fmrdo_dec_volume, KEY_VOL_DOWN, KEY_EVENT_DOWN);

    /* MTK Leo add 20050301, add touch screen support for FM Radio */
#ifdef __MMI_TOUCH_SCREEN__
    mmi_pen_register_down_handler(mmi_fmrdo_pen_down_hdlr);
    mmi_pen_register_up_handler(mmi_fmrdo_pen_up_hdlr);
    mmi_pen_register_move_handler(mmi_fmrdo_pen_move_hdlr);
#endif /* __MMI_TOUCH_SCREEN__ */ 
    /* MTK Leo end */

    /* register FM record key handler */
#if defined(__MMI_FM_RADIO_RECORD__)
    SetKeyHandler(mmi_fmrdo_release_record_button, KEY_ENTER, KEY_EVENT_UP);
#endif 

}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_entry_main
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_entry_main(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    EntryNewScreen(SCR_ID_FMRDO_MAIN, mmi_fmrdo_exit_main, mmi_fmrdo_entry_main, NULL);

    entry_full_screen();

    g_fmrdo.in_main_screen = TRUE;

    /* button state */
    g_fmrdo.selected_button = FMRDO_BUTTON_NONE;
    g_fmrdo.is_button_down = FALSE;
    g_fmrdo.normal_repeat_step_count = 0;
    g_fmrdo.is_long_press_number_key = FALSE;
    g_fmrdo.twinkle_frequency_count = 0;

    /* draw main screen */
    mmi_fmrdo_show_main(STR_GLOBAL_OPTIONS, STR_GLOBAL_BACK, g_fmrdo.skin_index);

    /* Register all key handler */
    mmi_fmrdo_main_register_keys();

    SetDelScrnIDCallbackHandler(SCR_ID_FMRDO_MAIN, (HistoryDelCBPtr) mmi_fmrdo_exit_root);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_exit_main
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_exit_main(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    g_fmrdo.in_main_screen = FALSE;

    /* stop timer and update frequency if we don't release step up/down button yet */
    StopTimer(FMRDO_REPEAT_STEP_TIMER);
    StopTimer(FMRDO_TWINKLE_FREQUENCY_TIMER);
    if (g_fmrdo.normal_repeat_step_count != 0)
    {
        mmi_fmrdo_set_frequency(g_fmrdo.step_freq);
    }

    /* stop previous twinkle frequency if necessary */
    mmi_fmrdo_stop_twinkle_frequency(FALSE);

    /* stop if it's searching */
    mmi_fmrdo_search_frequency_stop();

#if defined(__MMI_FM_RADIO_RECORD__)
    /* Abort due to exit screen */
    g_fmrdo.rec.user_abort = FALSE;
    mmi_fmrdo_stop_record_on_exit();
    mmi_fmrdo_util_stop_duration();
#endif /* defined(__MMI_FM_RADIO_RECORD__) */ 

}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_entry_main_option
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_entry_main_option(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 item_texts[10];
    U16 item_icons[10];
    U16 item_count, i;
    U8 *gui_buffer;
    U8 *item_popups[10];

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    EntryNewScreen(SCR_ID_FMRDO_MAIN_OPTION, mmi_fmrdo_exit_main_option, mmi_fmrdo_entry_main_option, NULL);

    gui_buffer = GetCurrGuiBuffer(SCR_ID_FMRDO_MAIN_OPTION);
    item_count = GetNumOfChild(MENU_ID_FMRDO_MAIN_OPTION);
    GetSequenceStringIds(MENU_ID_FMRDO_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -