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 + -
显示快捷键?