plxmms_setting.c
来自「mtk wap和mms代码。。适应mtk 25。26平台」· C语言 代码 · 共 1,973 行 · 第 1/5 页
C
1,973 行
typedef struct tagMmsNetEntryItem
{
U8 id;
U16 string;
U16 icon;
// PlxMmsEntryPtr entry;
}MmsNetEntryItem;
typedef struct tagMmsNetSettingData
{
void* mmse;
U8 cur_index;
U16 account_id;
U8 mmsc[MMS_NET_MMSC_LEN*2];
U8 temp_mmsc[MMS_NET_MMSC_LEN*2];
U8 gate[4][MMS_NET_GATE_LEN*2];
U8 port[MMS_NET_PORT_LEN*2];
U8 account[NAME_LEN*2];
#ifdef MMS_UISETTINGFILE
MmsUIOption option;
#else
MMSEOPTION option;
#endif
BOOL bMMSCChanged;
BOOL bAccountChanged;
}MmsNetSettingData;
static const MmsNetEntryItem g_netsetting_entry_table[MMS_NET_COUNT] =
{
{MMS_NET_MMSC, MMS_NET_STR_MMSC, 0},
{MMS_NET_MMSCCTRL, 0, 0},
{MMS_NET_GATE, MMS_NET_STR_GATE, 0},
{MMS_NET_GATECTRL, 0, 0},
{MMS_NET_PORT, MMS_NET_STR_PORT, 0},
{MMS_NET_PORTCTRL, 0, 0},
{MMS_NET_ACNT, MMS_NET_STR_ACNT, 0},
{MMS_NET_ACNTCTRL, 0, 0}
};
static MmsNetSettingData g_netsetting_data;
static BOOL CreateNetSetting(void* mmse);
static void EnterNetSetting(void);
static void LeaveNetSetting(void);
static void ExitNetSetting(void);
static void SaveNetSetting(void);
static void NetSettingHiliteHandler(S32 index);
static void FillNetSettingInlineStruct(void);
static void GateCallback(PU8 pBuffer, PU8 ip1, PU8 ip2, PU8 ip3, PU8 ip4);
static void EndEditMMSC(void);
static void OnEditNetSetting(void);
static void EnterMMSCEdit(void);
//static void EnterAccountEdit(void);
//static void AccountHiliteHandler(S32 index);
//static void EnterAccountList(void);
//static void AccountListHiliteHandler(S32 index);
//static pBOOL AccountListGetText(S32 item_index, UI_string_type str_buff,
// UI_image_type* img_buff_p, U8 str_img_mask);
//static void EndAccountSel(void);
static void AccountCallback(void* info);
static void IfSaveNetSetCallback(PLIBEVENT event);
static void NetAccountCallback(void * info);
static void MmsEditMMSCOnOk(void);
static void NetSetPortEmpty(void);
static void NetSetPortNotEmpty(void);
////////////////////////////////////////////////////////////////////////////
//storage
#define MMS_MEM_STR_STORAGE STR_ID_PLX_MMS_MEM_STORAGE//(U8*)(L"Storage")
#define MMS_MEM_STR_USAGE STR_ID_PLX_MMS_MEM_USAGE//(U8*)(L"Usage:")
#define MMS_MEM_STR_TOTALSIZE STR_ID_PLX_MMS_MEM_TOTALSIZE//(U8*)(L"Total Size:")
#define MMS_MEM_STR_FREE STR_ID_PLX_MMS_MEM_FREE//(U8*)(L"Free Space")
#define MEM_CONTENT_LEN 256
typedef struct tagMmsMemData
{
U8 content[MEM_CONTENT_LEN];
}MmsMemData;
static MmsMemData g_mem_data;
static BOOL CreateStore(void* mmse);
static void EnterMemInfo(void);
////////////////////////////////////////////////////////////////////////////
//select stroe path
#ifdef MMS_SELECTSTOREPATH
typedef enum
{
SYSPATH = 0,
PLUGPATH,
PATHCOUNT
}MMSSELPATHINDEX;
static const U8* g_path_string[2];
static const MmsSendSettingEntryItem g_path_entry_table[2] =
{
{0, 0, STR_ID_PLX_MMS_SELPATH_PATH, NULL, 0},
{1, 0, 0, (U8**)g_path_string, PATHCOUNT},
};
typedef struct tagMmsSelPathData
{
int path_index;
int cur_item;
MmsUIOption option;
}MmsSelPathData;
static MmsSelPathData g_path_data;
extern char g_mms_path[PLXMMS_PATH_MAXLEN];
extern char g_plug_path[PLXMMS_PATH_MAXLEN];
extern char* g_cur_path;
static void CreateSelectPath(void);
static void EnterSelectPath(void);
static void LeaveSelectPath(void);
static void InitSelectPathInlineListStruct(void);
static void SaveSelectPath(void);
static void ExitSelectPath(void);
static void SelectPathHiliteHandler(S32 index);
extern void PMMSAPP_Init(char* path, char* setting_path);
#endif
////////////////////////////////////////////////////////////////////////////
//public functions
/***************************************************************************
* Function MmsSettingGoBackToIdle
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void MmsSettingGoBackToIdle(void)
{
int i;
//free filters
if(g_filter_data.mmse)
{
OnSaveFilter();
}
for(i = 0; i < MMS_FILTER_ITEM_COUNT; i++)
{
if(g_filter_data.num[i])
{
MMS_Free((void*)g_filter_data.num[i]);
g_filter_data.num[i] = NULL;
}
}
if(g_filter_data.hMenu)
PlxDestroyDMenu(g_filter_data.hMenu);
/*
if(g_sendsetting_data.mmse ||
g_recvsetting_data.mmse ||
g_netsetting_data.mmse)
{
CloseCategory57Screen();
}
*/
MMS_Memset((void*)&g_filter_data, 0, sizeof(g_filter_data));
MMS_Memset((void*)&g_sendsetting_data, 0, sizeof(g_sendsetting_data));
MMS_Memset((void*)&g_recvsetting_data, 0, sizeof(g_recvsetting_data));
MMS_Memset((void*)&g_netsetting_data, 0, sizeof(g_netsetting_data));
MMS_Memset((void*)&g_setting_data, 0, sizeof(g_setting_data));
}
/***************************************************************************
* Function CreateSetting
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL CreateSetting(void* mmse)
{
MMS_Memset((void*)&g_setting_data, 0, sizeof(MmsSettingData));
g_setting_data.mmse = mmse;
EnterSetting();
return TRUE;
}
#ifdef MMS_UISETTINGFILE
/***************************************************************************
* Function SetSettingFilePath
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void SetSettingFilePath(const char* path)
{
if(!path)
return;
MMS_Memset((void*)&gSettingPath, 0, MMS_SETTING_PATH_LEN*2);
AnsiiToUnicodeString((S8*)gSettingPath, (S8*)path);
pfnUnicodeStrcat((S8*)gSettingPath, (S8*)MMS_SETTING_FILE);
}
/***************************************************************************
* Function SaveSettingToFile
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL SaveSettingToFile(MmsUIOption* pOption)
{
int hFile;
int ret;
UINT len;
MmsUIOption option;
if(!pOption)
return FALSE;
hFile = FS_Open((unsigned short*)gSettingPath, FS_READ_WRITE);
if(hFile < 0)
{
hFile = FS_Open((unsigned short*)gSettingPath, FS_CREATE | FS_READ_WRITE);
if(hFile < 0)
return FALSE;
FS_SetAttributes((unsigned short*)gSettingPath, FS_ATTR_HIDDEN);
}
MMS_Memcpy((void*)&option, (void*)pOption, sizeof(MmsUIOption));
option.option.mask = MMOM_ALL;
ret = FS_Write(hFile, (void*)&option, sizeof(MmsUIOption), &len);
if(ret != FS_NO_ERROR ||
len != sizeof(MmsUIOption))
{
FS_Close(hFile);
FS_Delete((unsigned short*)gSettingPath);
return FALSE;
}
FS_Close(hFile);
return TRUE;
}
/***************************************************************************
* Function ReadSettingFromFile
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL ReadSettingFromFile(MmsUIOption* pOption)
{
int hFile;
int ret;
UINT len;
if(!pOption)
return FALSE;
hFile = FS_Open((unsigned short*)gSettingPath, FS_READ_ONLY);
if(hFile < 0) //will create
{
MMS_Memcpy((void*)pOption, (void*)&g_default_option, sizeof(MmsUIOption));
return SaveSettingToFile((MmsUIOption*)&g_default_option);
}
ret = FS_Read(hFile, (void*)pOption, sizeof(MmsUIOption), &len);
if(ret != FS_NO_ERROR ||
len != sizeof(MmsUIOption))
{
MMS_Memcpy((void*)pOption, (void*)&g_default_option, sizeof(MmsUIOption));
FS_Close(hFile);
return FALSE;
}
FS_Close(hFile);
return TRUE;
}
#endif
#if defined(MMS_SELECTSTOREPATH) && defined(MMS_UISETTINGFILE)
BOOL GetCurSavePath(void)
{
MmsUIOption option;
if(!ReadSettingFromFile(&option))
goto get_path_err;
if(option.cur_path == 0)
{
g_cur_path = g_mms_path;
}
else //plug
{
#ifdef MMI_ON_HARDWARE_P
// if(PLIB_IsMSDCPresent())
if ( PLIB_TestMSDC() == PMSDC_OK )
g_cur_path = g_plug_path;
else
#endif
{
g_cur_path = g_mms_path;
option.cur_path = 0;
SaveSettingToFile((MmsUIOption*)&option);
}
}
return TRUE;
get_path_err:
#ifdef MMI_ON_HARDWARE_P
// if(PLIB_IsMSDCPresent())
if ( PLIB_TestMSDC() == PMSDC_OK )
{
g_cur_path = g_plug_path;
MMS_Memcpy((void*)&option, (void*)&g_default_option, sizeof(option));
option.cur_path = 1;
SaveSettingToFile((MmsUIOption*)&option);
}
else
#endif
{
g_cur_path = g_mms_path;
MMS_Memcpy((void*)&option, (void*)&g_default_option, sizeof(option));
option.cur_path = 0;
SaveSettingToFile((MmsUIOption*)&option);
}
return TRUE;
}
#endif
////////////////////////////////////////////////////////////////////////////
//private functions
////////////////////////////////////////////////////////////////////////////
//setting
/***************************************************************************
* Function EnterSetting
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterSetting(void)
{
int i;
U16 ItemText[MMS_SETTING_COUNT];
U16 ItemIcon[MMS_SETTING_COUNT];
// U8* pHintList[MAX_SUB_MENUS];
// U16 nNumofItem = 0;
U8* guiBuffer = NULL;
if(GetActiveScreenId() != SCR_ID_PLX_MMS_SETTING)
{
//set enter and exit
EntryNewScreen(SCR_ID_PLX_MMS_SETTING,
NULL, EnterSetting, NULL);
//get gui buffer
guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_SETTING);
//set parent
SetParentHandler(MENU_ID_PLX_MMS);
}
for(i = 0; i < MMS_SETTING_COUNT; i++)
{
ItemText[i] = g_setting_entry_table[i].string;
ItemIcon[i] = g_setting_entry_table[i].icon;
}
RegisterHighlightHandler(MmsSettingHiliteHandler);
ShowCategory52Screen(STR_ID_PLX_MMS_SETTING_SETTING, IMG_ID_PLX_MMS,
STR_GLOBAL_OK, IMG_GLOBAL_OK,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
MMS_SETTING_COUNT, ItemText, ItemIcon,
NULL, LIST_MENU, g_setting_data.cur_id, guiBuffer);
SetLeftSoftkeyFunction(EnterSubSetting, KEY_EVENT_UP);
SetKeyHandler(EnterSubSetting, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
SetRightSoftkeyFunction(ExitSetting, KEY_EVENT_UP);
SetKeyHandler(ExitSetting, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(EnterSubSetting, KEY_ENTER, KEY_EVENT_DOWN);
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
}
/***************************************************************************
* Function MmsSettingHiliteHandler
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void MmsSettingHiliteHandler(S32 index)
{
g_setting_data.cur_id = (U8)index;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?