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

📄 plxmms_main.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 3 页
字号:
/***************************************************************************
 *
 *                      Pollex Mobile Platform
 *
 * Copyright (c) 2004 by Pollex Mobile Software Co., Ltd. 
 *                       All Rights Reserved 
 *
 * Module   : 
 *
 * Purpose  : 
 *
\**************************************************************************/
#include "PlxMms_Main.h"
#include "PlxMms_Edit.h"
#include "PlxMms_Util.h"
#include "PlxMms_Box.h"
#include "PlxMms_Setting.h"
#include "..\public\PlxPublic.h"
#include "..\public\PlxPubDefs.h"
#include "Fs_type.h"
#include "Fs_func.h"
#include "Fs_errcode.h"
#if defined(MMS_SAVEONCARD) && defined(MMI_ON_HARDWARE_P)
#include "Kal_release.h"
#include "msdc_def.h"
#endif

//macro
#define MMSE_NOTIFY           (U16)0x402
#define PLXMMS_MAINMENU_COUNT 6
#define PLXMMS_USERAGENT      "NEC-N600/1.0 HopenOS/2.0"


typedef enum
{
    MMS_MAIN_NEW = 0,
    MMS_MAIN_INBOX,
    MMS_MAIN_OUTBOX,
    MMS_MAIN_DRAFT,
    MMS_MAIN_SENT,
    MMS_MAIN_SETTING,
    MMS_MAIN_MAXITEM
}PLXMMS_MAIN_ITEM;

//struct
typedef struct tagPlxMmsAppData
{
    void* mmse;
    int   box_msg_count[4];
    U16   new_msg_back_screen;
    long  new_msg_id;
    int   cur_item;
    BOOL  has_new_msg;
#ifdef MMS_SAVEONCARD
    BOOL  card_insert;
#endif
}PlxMmsAppData;

typedef struct tagEntryItem
{
    U16 id;
    U16 string;
    PlxMmsEntryPtr  hilite_handler;
    PlxMmsEntryPtr  entry;
    PlxMmsCBFuncPtr callback;
    FuncPtrShort    hint_handler;
}EntryItem;


//global
static PlxMmsAppData g_main_data;
FuncPtr g_mms_main_endKeyDownFuncPtr=NULL;
char   g_mms_path[PLXMMS_PATH_MAXLEN];

#if defined(MMS_SELECTSTOREPATH) || defined(MMS_SAVEONCARD)
char   g_plug_path[PLXMMS_PATH_MAXLEN];
#endif

#ifdef MMS_SELECTSTOREPATH //plug card path
char*  g_cur_path;
#endif

#ifdef MMS_UISETTINGFILE
extern MmsUIOption g_default_option; 
#else
extern MMSEOPTION g_default_option;
#endif

//static BOOL          g_bInit = FALSE;
//extern idle_keylock_struct g_keylock_context;
//#define  gKeyPadLockFlag g_keylock_context.gKeyPadLockFlag
extern U8 IsKeyPadLockState();
#define gKeyPadLockFlag IsKeyPadLockState()

//high light handlers
static void MmsMainHiliteHandler(S32 index);
static void MmsMainHintHandler(U16 index);

//private functions
static void EnterMmsMain(void); //entry for main
static void ExitMmsMain(void);  //exit main
static void GetBoxMsgCount(int i);

static BOOL MmsAppInit(PlxMmsAppData* pApp); //init
void PlxMmsInit(char* path);
static S32  MmseCallback(void* hWnd, UINT nMsg, long wParam, long lParam);

static void EditNewEntry(void);
static void InboxEntry(void);
static void OutboxEntry(void);
static void SentEntry(void);
static void DraftEntry(void);
static void SettingEntry(void);
//static BOOL ViewNewMmsMessage(long id, U16 back_screen);
static void OnNewMessageOk(void);
static void OnNewMessageBack(void);
static void IfViewNewCallback(PLIBEVENT event);
static void ExecCurrEndKeyDownHandler(void);
static int  OnFormat(const char* pMmsePath);

U8   PlxMmsDelHistoryHdlr(void* in_param);

//add for processing KEY_END
#include "..\..\setting\settinginc\Settingdefs.h"
#include "..\..\setting\settinginc\Settingsgdcl.h"
extern pBOOL isInCall(void);
extern pBOOL GetWapCallPresent(void);
extern void HangupAllCalls(void);
extern SecuritySetupContext gSecuritySetupContext;

#ifdef __MMI_EMAIL__
#include "..\..\emailapp\emailappinc\Emailappgprot.h"
extern U8 mmi_email_util_get_stop_cause(void);
extern void mmi_email_main_goto_idle (void);
#endif

#ifdef MMS_UISETTINGFILE
extern WCHAR* gSettingPath[];
#endif

static  EntryItem mms_main_func_table[PLXMMS_MAINMENU_COUNT] = 
{
//        id                         stirng                  hilite    entry        callback            hint
    {MENU_ID_PLX_MMS_NEW,     STR_ID_PLX_MMS_MAIN_NEW,       NULL,    EditNewEntry, NULL,               NULL},
    {MENU_ID_PLX_MMS_INBOX,   STR_ID_PLX_MMS_MAIN_INBOX,     NULL,    InboxEntry,   MmsBoxCallback,     NULL},
    {MENU_ID_PLX_MMS_OUTBOX,  STR_ID_PLX_MMS_MAIN_OUTBOX,    NULL,    OutboxEntry,  NULL,               NULL},
    {MENU_ID_PLX_MMS_DRAFT,   STR_ID_PLX_MMS_MAIN_DRAFT,     NULL,    DraftEntry,   NULL,               NULL},
    {MENU_ID_PLX_MMS_SENT,    STR_ID_PLX_MMS_MAIN_SENT,      NULL,    SentEntry,    NULL,               NULL},
    {MENU_ID_PLX_MMS_SETTING, STR_ID_PLX_MMS_MAIN_SETTING,   NULL,    SettingEntry, NULL,               NULL}
};

void PMMSAPP_Init(char* path, char* plug_path)
{
	MMS_Memset((void*)&g_main_data, 0, sizeof(g_main_data));

#if defined(MMS_SELECTSTOREPATH) || defined(MMS_SAVEONCARD)
    if(path)
        MMS_Strcpy(g_mms_path, path);
#else
    if(plug_path)
        MMS_Strcpy(g_mms_path, plug_path);
#endif

#ifdef MMS_UISETTINGFILE
	SetSettingFilePath((const char*)path);
#endif

#if defined(MMS_SELECTSTOREPATH) || defined(MMS_SAVEONCARD)
    if(plug_path)
        MMS_Strcpy(g_plug_path, plug_path);
#endif

#ifdef MMS_SELECTSTOREPATH
    g_cur_path = NULL;
    if(!GetCurSavePath())
        g_cur_path = g_mms_path;

    PlxMmsInit(g_cur_path);
#elif defined(MMS_SAVEONCARD)
    PlxMmsInit(g_plug_path);
#else
    PlxMmsInit(g_mms_path);
#endif
    
}
////////////////////////////////////////////////////////////////////////////
/***************************************************************************
* Function	PMMSAPP_Init
* Purpose	Initialize MMS application.
* Params	
* Return	
* Remarks	This function will set default settings if DialID < 0.
\**************************************************************************/
void PlxMmsInit(char* path)
{
    void*      mmse;
    MMSEOPTION option;
#ifdef MMS_UISETTINGFILE
    MmsUIOption ui_option;
#endif
    MMFOLDERINFO folder_info;
    MMSEINITINFO init_info;
    int         total;

    //init MMSE
    init_info.pMmsePath  = path;
    init_info.SpaceLimit = PLX_MMS_LOWSPACE;
    init_info.pUsrAgent  = PLXMMS_USERAGENT;
    init_info.pUAProf    = NULL;
    init_info.OnFormat   = OnFormat;

	g_main_data.mmse = NULL;
	g_main_data.cur_item = 0;
	g_main_data.has_new_msg = FALSE;
	g_main_data.new_msg_back_screen = 0;
	g_main_data.new_msg_id = -1;
#ifdef MMS_SAVEONCARD
	g_main_data.card_insert = 0;
#endif
/*
#ifdef MMS_SAVEONCARD
#ifdef MMI_ON_HARDWARE_P
    if(FS_TestMSDC(SD_CARD) == FS_NO_ERROR)
#endif
        g_main_data.card_insert = TRUE;
#endif
*/
    MMSE_Init(&init_info);

    mmse = MMSE_Open(MMSE_ACCESS_READ);

    if(mmse)
    {
        //set callback
        MMSE_SetNotify(mmse, (void*)MmseCallback, MMSE_NOTIFY);

        //get option
#ifdef MMS_UISETTINGFILE
        ReadSettingFromFile(&ui_option);

        MMS_Memcpy((void*)&option, (void*)&ui_option, sizeof(option));
        MMSE_SetOption(mmse, (PMMSEOPTION)&option);
#else
        MMSE_GetOption(mmse, &option);
#endif   
        //set default settings
        if(option.DialID < 0)
        {
            MMSE_SetOption(mmse, (PMMSEOPTION)(&g_default_option));
#ifdef MMS_UISETTINGFILE
            SaveSettingToFile((MmsUIOption*)&g_default_option);
#endif
        }

        //new message icon
        if(MMSE_GetFolderInfo(mmse, MMSE_FOLDER_INBOX, 
            &folder_info) == MMSE_SUCCESS)
        {
#ifdef MMS_DEBUG
PlxTrace("unreaded = %d\r\n", folder_info.UnreadCount);
#endif
            if((folder_info.UnreadCount + folder_info.UnreceivedCount) > 0)
            {
                StatusIconTest(TRUE, MMS_RECVOK_ICON, FALSE);
            }
            else
            {
                StatusIconTest(FALSE, MMS_RECVOK_ICON, FALSE);
            }
        }

        //full icon
        total = GetTotalMsgCount();

        if(total >= MAX_MMS_MESSAGE_COUNT)
        {
            StatusIconTest(TRUE, MMS_FULL_ICON, FALSE);
        }
        else
        {
            StatusIconTest(FALSE, MMS_FULL_ICON, FALSE);
        }

        g_main_data.mmse = mmse;

    }
}

/***************************************************************************
* Function	PlxMmsGoBackToIdle
* Purpose	Release resources and back to Idle screen.
* Params	
* Return	
* Remarks	
\**************************************************************************/
void PlxMmsGoBackToIdle(void)
{
#ifdef MMS_DEBUG
    PlxTrace("PlxMmsGoBackToIdle");
#endif
    

//    DisplayIdleScreen();
    if ( isInCall() && !GetWapCallPresent()) 
	{
		HangupAllCalls();
	}
    else
	{
        MmsRecvGoBackToIdle();
        MmsObjGoBackToIdle();
        MmsInfoGoBackToIdle();
        MmsViewGoBackToIdle();
        MmsEditGoBackToIdle();
        MmsBoxGoBackToIdle();
        MmsSettingGoBackToIdle();

        g_main_data.cur_item = 0;
        g_main_data.new_msg_back_screen = 0;
        g_main_data.new_msg_id = -1;
        
#ifdef __MMI_EMAIL__
		if (mmi_email_util_get_stop_cause()==EMAIL_MODULE_ACTIVE_NOW)
		{
			mmi_email_main_goto_idle();
		}
		else if (!gSecuritySetupContext.PINBlocked) 
#else
		if (!gSecuritySetupContext.PINBlocked) 
#endif
		{
    		if(g_mms_main_endKeyDownFuncPtr && g_mms_main_endKeyDownFuncPtr != PlxMmsGoBackToIdle)
        		g_mms_main_endKeyDownFuncPtr();
    		else
				DisplayIdleScreen();
		}
	}
    g_mms_main_endKeyDownFuncPtr = NULL;
}

U8 PlxMmsDelHistoryHdlr(void* in_param)
{
#ifdef MMS_DEBUG
    PlxTrace("PlxMmsDelHistoryHdlr");
#endif
	if(0 == in_param)
	{
#ifdef MMS_DEBUG
    PlxTrace("0 == in_param");
#endif
		MmsRecvGoBackToIdle();
		MmsObjGoBackToIdle();
        MmsInfoGoBackToIdle();
        MmsViewGoBackToIdle();
        MmsEditGoBackToIdle();
		MmsBoxGoBackToIdle();
		MmsSettingGoBackToIdle();

        g_main_data.cur_item = 0;
        g_main_data.new_msg_back_screen = 0;
        g_main_data.new_msg_id = -1;
        g_mms_main_endKeyDownFuncPtr = NULL;
	}
	return FALSE;
}

/***************************************************************************
* Function	PlxMmsShutdown
* Purpose	Release resources and back to Idle screen.
* Params	
* Return	
* Remarks	
\**************************************************************************/
void PlxMmsShutdown(void)
{
#ifdef MMS_DEBUG
    PlxTrace("PlxMmsShutdown");
#endif
    if(!g_main_data.mmse)
        return;
#ifdef MMS_DEBUG
    PlxTrace("PlxMmsShutdown");
#endif
    MmsRecvGoBackToIdle();
    MmsObjGoBackToIdle();
    MmsInfoGoBackToIdle();
    MmsViewGoBackToIdle();
    MmsEditGoBackToIdle();
    MmsBoxGoBackToIdle();
    MmsSettingGoBackToIdle();
    
    MMSE_Close(g_main_data.mmse);
    MMS_Memset((void*)&g_main_data, 0, sizeof(g_main_data));
    g_mms_main_endKeyDownFuncPtr = NULL;
}

void PlxMmsRelease(void)
{
    MmsRecvGoBackToIdle();
    MmsObjGoBackToIdle();
    MmsInfoGoBackToIdle();
    MmsViewGoBackToIdle();
    MmsEditGoBackToIdle();
    MmsBoxGoBackToIdle();
    MmsSettingGoBackToIdle();

    g_main_data.cur_item = 0;
    g_main_data.new_msg_back_screen = 0;
    g_main_data.new_msg_id = -1;
    g_mms_main_endKeyDownFuncPtr = NULL;
}

/***************************************************************************
* Function	PlxHasNewMms
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL PlxHasNewMms(void)
{
    return g_main_data.has_new_msg;
}

/***************************************************************************
* Function	PlxResetNewMmsInd
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void PlxResetNewMmsInd(void)
{
    g_main_data.has_new_msg = FALSE;
    g_main_data.new_msg_id = -1;
}

/***************************************************************************
* Function	PlxGettNewMmsId
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
long PlxGetNewMmsId(void)
{
    return g_main_data.new_msg_id;
}

/***************************************************************************
* Function	CreateMmsMain
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void CreateMmsMain(void)
{
    BOOL insert = TRUE;
    //init
    if(!g_main_data.mmse)
    {
        if(!MmsAppInit(&g_main_data))
        {
            return;
        }
    }

#ifdef MMS_DEBUG
    PlxTrace("CreateMmsMain\r\n");
#endif
#if defined(MMS_SAVEONCARD) && defined(MMI_ON_HARDWARE_P)
#ifdef MMS_SELECTSTOREPATH
    if(g_cur_path == g_mms_path)
        insert = PMSDC_OK;
    else
        insert = PLIB_TestMSDC();
#else
    insert = PLIB_TestMSDC();
#endif

#else

#if defined(MMS_SELECTSTOREPATH) && defined(MMI_ON_HARDWARE_P)
    if(g_cur_path == g_mms_path)
        insert = PMSDC_OK;
    else
        insert = PLIB_TestMSDC();
#else
    insert = PMSDC_OK;
#endif

#endif

    ReleaseLastMmsView();
    g_mms_main_endKeyDownFuncPtr = NULL;

    if(insert == PMSDC_OK)
    {
        //reopen MMSE
        if(g_main_data.mmse)
        {
            MMSE_Close(g_main_data.mmse);
            g_main_data.mmse = NULL;
        }
        g_main_data.mmse = MMSE_Open(MMSE_ACCESS_READ);
        if(!g_main_data.mmse)
            return;
        MMSE_SetNotify(g_main_data.mmse, (void*)MmseCallback, MMSE_NOTIFY);
    }

#ifdef MMS_DEBUG
    PlxTrace("will initMmsBox\r\n");
#endif
    InitMmsBox();

⌨️ 快捷键说明

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