📄 plxmms_main.c
字号:
/***************************************************************************
*
* 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 + -