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

📄 idleapp.c

📁 MTK平台QQ移植
💻 C
📖 第 1 页 / 共 5 页
字号:
#endif

#ifdef __MMI_DUAL_SIM_MASTER__
#include "MTPNP_AD_master_header.h"
#include "MTPNP_PFAL_CC.h"
#include "MTPNP_PFAL_Master_CallHistory.h"
#include "mtpnp_pfal_cellbroadcast.h"
#endif /* __MMI_DUAL_SIM_MASTER__ */

#undef __NEWSIMULATOR


/***************************************************************************** 
* Define
*****************************************************************************/
#if defined( __MMI_MAINLCD_240X320__) || defined( __MMI_MAINLCD_320X240__)
    #define __MMI_IDLE_NO_NW_SEARCHING_SCREEN__
#endif

#ifdef __MMI_DUAL_SIM_MASTER__
extern void EntryDualModeSwitchProgressInIdle(void);
extern U8 DualModeIsSwitching(void);
#endif 


/***************************************************************************** 
* Typedef 
*****************************************************************************/
/* diamond, 2005/10/12 idle revise */
typedef void (*FuncPtr) (void);
typedef U8(*FuncPtrRtn) (void);

typedef struct _idle_callback_info
{
    FuncPtrRtn idle_callback_chk_f; /* callback to check if there is any pending event in idle screen */
    FuncPtr idle_callback_exe_f;    /* callback to execute the corresponding function in idle screen  */
} IDLECALLBACKINFO;

/* end, diamond */


/****************************************************************************
* Global Function                                                           
*****************************************************************************/
extern void EmergencyCallCheck(S16 keyCode, S16 keyType);
extern void MMIProcessActionMsg(void);
extern U8 *GetDeliverdReportMessage(void);
extern kal_bool INT_USBBoot(void);
extern EMSData *GetClass0MessagePtr(void);
extern U8 *GetClass0MessageHeader(void);
extern BOOL IsMyTimerExist(U16 nTimerId);
#ifdef __SAT__
extern void SATEVDLIdleScreenAvaliable(void);
#endif
extern void mmiapi_enter_idle_screen_notify(void);

#ifdef WAP_SUPPORT
extern void wap_internet_key_hdlr(void);
#endif 

#ifdef __MMI_AUDIO_PLAYER__
extern BOOL mmi_audply_is_playing(void);
extern void mmi_audply_set_subLCD_shown(BOOL is_shown);
#endif /* __MMI_AUDIO_PLAYER__ */ 

#ifdef __MMI_FM_RADIO__
extern BOOL mmi_fmrdo_is_power_on(void);
extern void mmi_fmrdo_set_subLCD_shown(BOOL is_shown);
void mmi_fmrdo_power_on(BOOL turn_on);
#endif /* __MMI_FM_RADIO__ */ 

#if defined(__MMI_VRSD__)
extern void mmi_vrsd_rcg_pre_entry(void);
#endif 

#if defined(__MMI_VRSD_DIAL__)
extern BOOL mmi_vrsddial_check_sim_change(void);
#endif 

#if defined(__MMI_VRSI__)
extern void mmi_vrsi_rcg_pre_entry(void);
#endif 

/* Associate caller group in SIM card entry */
#if defined(__MMI_PHB_CALLERGROUP_IN_SIM__)
extern BOOL mmi_phb_init_check_sim_change(void);
#endif 

#ifdef __MMI_WGUI_MINI_TAB_BAR__
extern void ClndrPreEntryApp(void);
extern void fmgr_launch(void);
#endif /* __MMI_WGUI_MINI_TAB_BAR__ */ 

/* diamond, 2005/07/05 Flight mode */
extern void EntryScrSimOptionMenu(void);
void EntryFlightModeIdleScreen(void);
void EntryFlightModeKeypadLockScreen(void);
void FlightModeDigitHandler(void);
/* end, diamond */

extern void InsertSimSetKeyPadLockFlag(void);
extern void UI_set_font(UI_font_type f);

#if defined(OBIGO_Q03C) && defined(WAP_SUPPORT)
extern int widget_MMI_check_and_display_new_msg_when_keypad_lock(
            U16 KeyLockLSKStringID,
            U16 KeyLockLSKIconID,
            U16 KeyLockRSKStringID,
            U16 KeyLockRSKIconID);
extern int widget_MMI_check_and_display_new_msg(void);
extern void widget_check_msg_in_idle_screen(void);
#endif



/*****************************************************************************
* Local Function 
*****************************************************************************/
static U8 mmi_idle_missed_call_check(void);
#ifdef __MMI_NITZ__
static U8 mmi_idle_pending_nitz_check(void);
#endif 
#if defined(OBIGO_Q03C) && defined(WAP_SUPPORT)
static U8 mmi_idle_widget_check_and_display_new_msg(void);
#endif


/****************************************************************************
* Global Variable                                                           
*****************************************************************************/
extern U16 gCurrLangIndex;
extern U16 gMaxDeployedLangs;
extern S32 MAIN_LCD_device_width;
extern sLanguageDetails *gLanguageArray;

#ifdef __HOMEZONE_SUPPORT__
extern U8 *gHomezoneText;
#endif 

extern U16 simErrorDisplayString;


/***************************************************************************** 
* Local Variable
*****************************************************************************/
idle_context_struct g_idle_context = 
{
    0,                      /* IsOnIdleScreen */
    SUBLCD_NOT_ON_IDLE,     /* IsSubLcdOnIdleScreen */
    0,                      /* IsOnDialerScreen */
    0,                      /* IsOnSimErrorScreen */
    0,                      /* IsOnSimErrorDialerScreen */
    0,                      /* IsScrSvrSleepIn */
    0,                      /* IsRSKPressOnScreenSaver */
    0,                      /* LongPressEnable */
    0,                      /* ScreenSaverRunFlag */
    0,                      /* ToNameScrFromIdleApp */
#ifdef __MMI_KEYPAD_LOCK_PATTERN_2__
    0,                      /* ToMainMenuScrFromIdleApp */
#endif 
    0,                      /* RskPressedFromIdleApp */
#ifdef __MMI_UCM__
    0,
#endif
    -1,                     /* IdleScreenDigitKeyCode */
    SET_CURRENT_PROFILE,    /* ToggleProfile */
#ifdef __MMI_SIMAP_SUPPORT__
    0,
#endif
    0,                      /* AutoLockTimeOut */
    {0}                     /* All dialled digits from idle screen */
};

idle_keylock_struct g_keylock_context = 
{
    0,      /* gKeyPadLockFlag */
    0,
    0,      /* KeyLockLSKStringID */
    0,      /* KeyLockRSKStringID */
    0,      /* KeyLockLSKIconID */
    0,      /* KeyLockRSKIconID */
    NULL    /* diamond, 2006/03/26 Generic exit function for keypad lock callback screens */
};

#ifdef __MMI_NITZ__
static idle_nitz_struct g_nitz_display = 
{
    0,      /* opname_from_nitz */
    0,      /* country_init */
    {0},    /* plmn[] */
    {0}     /* display_name[] */
};
#ifdef __MMI_DUAL_SIM_MASTER__
idle_nitz_struct g_nitz_display_2 = 
{
    0,      /* opname_from_nitz */
    0,      /* country_init */
    {0},    /* plmn[] */
    {0}     /* display_name[] */
};
#endif /* __MMI_DUAL_SIM_MASTER__ */
#endif /* __MMI_NITZ__ */ 

static const IDLECALLBACKINFO mmi_idle_callbacks[] = 
{
    /* How to add callbacks for idle screen/keypad lock ? */
    /* 1. Fill the callbacks into this array     */

    /* Notice that the function type !        */
    /* 1. Checking  function should be U8 XXX(void)    */
    /* 2. Execution function should be void XXX(void)  */

#ifdef __MMI_SAT_DISPLAY_TEXT_WITH_KEYPAD_LOCK__
    {mmi_sat_is_pending_idle_sat_cmd, mmi_sat_execute_idle_sat_cmd},
#endif
#ifdef __J2ME__
    {mmi_java_is_launch_from_idle, mmi_java_entry_mid_launch_from_idle}, /* new Java midlet */
#endif 
    {mmi_idle_missed_call_check, EntryCHISTNotifyMissedCall}, /* missed call */
    {mmi_msg_need_class0_msg_ind, mmi_msg_entry_class0_msg_ind}, /* new class 0 message */
#ifdef __MMI_UNIFIED_MESSAGE__
    {mmi_um_check_new_msg, mmi_um_pre_entry_new_msg_ind}, /* new unified message */
#ifdef __UNIFIED_MESSAGE_SIMBOX_SUPPORT__
    {mmi_msg_need_new_sim_msg_ind, mmi_msg_entry_new_sim_msg_ind}, /* new unified message */
#endif
#else 
    {mmi_msg_need_new_msg_ind, mmi_msg_entry_new_msg_ind}, /* new short message */
#endif 
    {mmi_msg_need_mem_exceed_ind, mmi_msg_entry_mem_exceed_ind}, /* memory exceed notification */
    {mmi_msg_need_delivery_report_ind, mmi_msg_entry_deliver_report_ind}, /* deliver report */
    {mmi_msg_need_waiting_ind, mmi_msg_entry_msg_waiting_ind}, /* waiting message */
#ifdef __MMI_VOIP__
    {mmi_voip_need_msg_waiting_ind, mmi_voip_entry_msg_waiting_ind},
#endif
#ifdef __MMI_IMPS__
    {mmi_imps_check_invite_in_idle, NULL}, /* IMPS invitation */
#endif 
#if defined(__MMI_VCARD__) || defined(__MMI_VCALENDAR__) || defined(__MMI_VBOOKMARK__)
    {mmi_vobj_is_pending_object, mmi_vobj_entry_recv_object}, /* unread vObjects */
#endif 
#if defined(__MMI_IRDA_SUPPORT__)
    {mmi_irda_get_recv_files_cnt, mmi_irda_entry_idle_notify_scr}, /* files from IrDA */
#endif 
#if (defined(__MMI_DOWNLOADABLE_THEMES_SUPPORT__) && defined(__MMI_IRDA_SUPPORT__))
    {mmi_irda_is_any_theme_file_rcv, mmi_irda_theme_show_idle_notify_scr}, /* downloadable theme from IrDA */
#endif 
#if defined(__MMI_NITZ__)
    {mmi_idle_pending_nitz_check, EntryNitzScreen}, /* NITZ */
#endif 
    {mmi_msg_need_new_cb_ind, mmi_msg_entry_new_cb_ind}, /* new CB message */
#ifdef __MMI_DUAL_SIM_MASTER__
    {mmi_card2_msg_need_new_cb_ind, mmi_msg_entry_card2_new_cb_ind}, /* new SIM 2 CB message */
#endif /* __MMI_DUAL_SIM_MASTER__ */
#if defined(OBIGO_Q03C) && defined(WAP_SUPPORT)
    {mmi_idle_widget_check_and_display_new_msg, NULL}, /* new message from widget */
#endif 
#if defined(__MMI_PHB_CALLERGROUP_IN_SIM__)
    {mmi_phb_init_check_sim_change, NULL}, /* associate caller group in SIM card entry */
#endif 
#if defined(__MMI_VRSD_DIAL__)
    {mmi_vrsddial_check_sim_change, NULL}, /* VRSD dial */
#endif 
#if defined(__MMI_OPP_SUPPORT__) || defined(__MMI_BIP_SUPPORT__)
    {mmi_bt_get_recv_files_cnt, mmi_bt_entry_idle_notify_scr}, /* files from Bluetooth */
#endif
#if defined(__MMI_DOWNLOAD_AGENT__)
    {mmi_da_launch_ring_buffer_check, mmi_da_entry_new_push_ind}, /* download agent */
#endif 
#if (defined (JATAAYU_SUPPORT) && defined(MMS_SUPPORT))
    {mmi_jmms_need_mms_ind, mmi_jmms_entry_new_mms_ind}, /* new mms message */
#endif 
#if !defined (__MMI_UNIFIED_MESSAGE__) && defined (JATAAYU_SUPPORT) && defined (WAP_SUPPORT)
    {mmi_brw_new_push_msg_ind, mmi_brw_entry_new_push_msg_ind},  /* new wap push message */
#endif 
#if !defined (__MMI_CCA_SUPPORT__) && defined (JATAAYU_SUPPORT) && (defined (WAP_SUPPORT) || (defined (MMS_SUPPORT)))
    {mmi_prov_check_and_install_new_settings, mmi_prov_show_install_settings_dialog},
#endif 
#if defined (__MMI_BROWSER_2__)
    {mmi_brw_push_new_push_msg_ind, mmi_brw_push_entry_new_push_msg_ind},
    {mmi_brw_push_service_dlg_idle_scr_cb, mmi_brw_push_fetch_dlg_from_queue},
#endif
#if (defined(__SYNCML_SUPPORT__) && !defined(__MMI_OP01_SYNCML_SETTING__))
    {mmi_syncml_is_sync_alarm_expired, mmi_syncml_sync_alarm_hdlr}, /* sync */
#endif
#ifdef __MMI_USER_CTRL_PLMN_SUPPORT__
    {mmi_netset_unknown_operator_check, mmi_netset_unknown_operator_query}, /* user control plmn */
#endif
#if defined(__FOTA_ENABLE__)
    {mmi_dm_fwu_check_download_finish, mmi_dm_fwu_entry_download_finish_ind}, /* firmware upgrade finished */
#endif
#ifdef __MMI_CCA_SUPPORT__
    {mmi_cca_idle_check, mmi_cca_ui_entry_idle_screen},
#endif 

    {NULL, NULL}                                            /* dummy one, please add callbacks before this entity */
};

static U16 idleLRStringtID = 0; /* __MANUAL_MODE_NW_SEL__ */
extern S8 *idle_screen_wallpaper_name;


/*****************************************************************************
 * FUNCTION
 *  mmi_idle_exe_callback
 * DESCRIPTION
 *  Execute callbacks before entry idle screen
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static pBOOL mmi_idle_exe_callback(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 i;
    pBOOL rtn = MMI_FALSE;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; mmi_idle_callbacks[i].idle_callback_chk_f != NULL; i++)
    {
        if ((*mmi_idle_callbacks[i].idle_callback_chk_f) ())
        {
            rtn = MMI_TRUE;
            if (mmi_idle_callbacks[i].idle_callback_exe_f != NULL)
            {
                (*mmi_idle_callbacks[i].idle_callback_exe_f) ();
            }
            break;
        }
    }

    g_keylock_context.IsOnKeyLockCallbackScreen = (rtn == MMI_TRUE) ? 1 : 0;
    return rtn;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_idle_missed_call_check
 * DESCRIPTION
 *  Wrapper for idle screen callback
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static U8 mmi_idle_missed_call_check(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef __MMI_DUAL_SIM_MASTER__
    if (GetMissedCallFlag() && 
        (((MTPNP_AD_Get_UsableSide() == MTPNP_AD_SIMCARD1_USABLE || MTPNP_AD_Get_UsableSide() == MTPNP_AD_DUALSIM_USABLE) && CHISTGetMissedCallCountBeforeView() != 0) || 
        ((MTPNP_AD_Get_UsableSide() == MTPNP_AD_SIMCARD2_USABLE || MTPNP_AD_Get_UsableSide() == MTPNP_AD_DUALSIM_USABLE) && MTPNP_AD_Get_MissedCallCount_BeforeView() != 0)))
#else
    if (GetMissedCallFlag() && CHISTGetMissedCallCountBeforeView())
#endif
    {
        return MMI_TRUE;
    }
    else
    {
        SetMissedCallFlag(FALSE);
        return MMI_FALSE;
    }
}

#ifdef __MMI_NITZ__
/*****************************************************************************
 * FUNCTION
 *  mmi_idle_pending_nitz_check
 * DESCRIPTION
 *  Wrapper for idle screen callback
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static U8 mmi_idle_pending_nitz_check(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (U8) g_nitz_cntx.IsNITZPending;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_idle_update_opname_from_nitz
 * DESCRIPTION
 *  Update NITZ network name if a new message is received
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_idle_update_opname_from_nitz(void)
{
    if (mmi_idle_is_on_idle_screen())
    {
        EntryIdleScreen(); /* IdleRefreshServiceIndicationArea(); */
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_idle_update_nitz_content
 * DESCRIPTION
 *  Update NITZ network name from NVRAM
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_idle_update_nitz_content(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 max_display_length = MAX_LENGTH_DISPLAY_NAME;
    U8 mcc_tmp_unicode[4 * ENCODING_LENGTH];
    U8 tmp_plmn[MAX_PLMN_LEN_MMI + 1];
    U8 tmp_display_name[MAX_LENGTH_DISPLAY_NAME * ENCODING_LENGTH];

    U8 iCnt = 0;
    S32 StringWidth, StringHeight;
    stFontAttribute prev_f;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    memset(tmp_plmn, 0 , MAX_PLMN_LEN_MMI + 1);
    memset(tmp_display_name, 0, MAX_LENGTH_DISPLAY_NAME);

    mmi_nitz_get_nitz_nw_name(tmp_plmn, tmp_display_name, (U8) MAX_LENGTH_DISPLAY_NAME - 1, &g_nitz_display.country_init);

    if (strlen((S8*)tmp_plmn) != 0 && strlen((S8*)tmp_display_name) != 0)
    {
    	strcpy((S8*)g_nitz_display.plmn, (S8*)tmp_plmn);
        if (g_nitz_display.country_init)
        {
            max_display_length -= 4;    /* 1 space char and 3 mcc digits */
        }
        
        if (mmi_ucs2strlen((S8*) tmp_display_name) >= max_display_length)
        {
            mmi_ucs2ncpy((S8*) g_nitz_display.display_name, (S8*) tmp_display_name, max_display_length);
        }
        else
        {
            mmi_ucs2cpy((S8*) g_nitz_display.display_name, (S8*) tmp_display_name);
        }

        /* add check if the NITZ display name exceeds the LCD width */
        memcpy(&prev_f, UI_font, sizeof(stFontAttribute));
        UI_set_font(&UI_DEFAULT_FONT);
        for (iCnt = (U8) mmi_ucs2strlen((PS8) g_nitz_display.display_name); iCnt > 0; iCnt--)
        {
            Get_StringWidthHeight((U8*) g_nitz_display.display_name, &StringWidth, &StringHeight);
            if ((StringWidth + 1) >= MAIN_LCD_device_width - (MMI_IDLE_STRING_MARGIN_GAP << 1))
            {
                g_nitz_display.display_name[iCnt * ENCODING_LENGTH] = 0x0;
                g_nitz_display.display_name[iCnt * ENCODING_LENGTH + 1] = 0x0;
            }
            else
            {
                break;
            }
        }
        UI_set_font(&prev_f);

        if (g_nitz_display.country_init)
        {
            mmi_asc_n_to_ucs2((S8*) mcc_tmp_unicode, (S8*) g_nitz_display.plmn, 3);
            mmi_ucs2cat((S8*) g_nitz_display.display_name, " ");
            mmi_ucs2cat((S8*) g_nitz_display.display_name, (S8*) mcc_tmp_unicode);
        }

        g_nitz_display.opname_from_nitz = 1;
    }
    else
    {
        g_nitz_display.opname_from_nitz = 0;
    }
}


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

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (memcmp(g_nitz_display.plmn, gPLMN, MAX_PLMN_LEN_MMI) != 0)
    {
        g_nitz_display.opname_from_nitz = 0;
        return MMI_FALSE;
    }
    else
    {
        return MMI_TRUE;
    }
}


#ifdef __MMI_DUAL_SIM_MASTER__
/*****************************************************************************
 * FUNCTION
 *  mmi_idle_update_sim2_nitz_content
 * DESCRIPTION
 *  Update NITZ network name from NVRAM
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_idle_update_sim2_nitz_content(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 max_display_length = MAX_LENGTH_DISPLAY_NAME;
    U8 mcc_tmp_unicode[4 * ENCODING_LENGTH];
    U8 tmp_plmn[MAX_PLMN_LEN_MMI + 1];
    U8 tmp_display_name[MAX_LENGTH_DISPLAY_NAME * ENCODING_LENGTH];

    U8 iCnt = 0;
    S32 StringWidth, StringHeight;
    stFontAttribute prev_f;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    memset(tmp_plmn, 0 , MAX_PLMN_LEN_MMI + 1);
    memset(tmp_display_name, 0, MAX_LENGTH_DISPLAY_NAME);

    mmi_nitz_get_nitz_nw_name_sim2(tmp_plmn, tmp_display_name, (U8) MAX_LENGTH_DISPLAY_NAME - 1, &g_nitz_display_2.country_init);

    if (strlen((S8*)tmp_plmn) != 0 && strlen((S8*)tmp_display_name) != 0)
    {
    	strcpy((S8*)g_nitz_display_2.plmn, (S8*)tmp_plmn);
        if (g_nitz_display_2.country_init)
        {
            max_display_length -= 4;    /* 1 space char and 3 mcc digits */
        }

⌨️ 快捷键说明

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