📄 mmidc_storage_wintab.c
字号:
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
)
{
BOOLEAN recode = MMI_RESULT_TRUE;
MMI_CTRL_ID_T list_ctrl_id = MMIDC_ALBUM_LISTBOX_CTRL_ID;
uint16 list_index = 0;
uint16 arr_index = 0;
uint32 total_photo_num = 0;
switch(msg_id)
{
case MSG_OPEN_WINDOW:
LoadAlbum(list_ctrl_id);
MMK_SetAtvCtrl(win_id, list_ctrl_id);
break;
case MSG_CTL_OK:
//get photo index in globle
list_index = GUILISTBOX_GetCurItemIndex(list_ctrl_id);
arr_index = DCSaveList_GetPhotoIndex(list_index);
OpenPhotoBrowserWin(arr_index);
break;
case MSG_GET_FOCUS:
total_photo_num = DCSaveInfo_GetPotoTotalNum();
if (total_photo_num > 0)
{
list_index = GUILISTBOX_GetCurItemIndex(list_ctrl_id);
list_index = MIN(list_index, total_photo_num);
GUILISTBOX_SetCurItemIndex(MMIDC_ALBUM_LISTBOX_CTRL_ID, list_index);
}
else
{
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NOPHOTO, IMAGE_PROMPT_ICON_ALERT, MMI_3SECONDS, PNULL);
MMK_CloseWin(win_id);
}
break;
case MSG_CTL_CANCEL:
MMK_CloseWin(win_id);
break;
case MSG_CLOSE_WINDOW:
//s_is_mms_enter_album = FALSE;
break;
default:
recode = MMI_RESULT_FALSE;
break;
}
return recode;
}
/*****************************************************************************/
// Description : open photo input name win
// Global resource dependence : none
// Author: bruce.chi
// Note:
/*****************************************************************************/
PUBLIC BOOLEAN MMIDC_OpenInputNameWin(uint32 photo_index)
{
DC_ASSERT_LOW(photo_index < MMIDC_MAX_PHOTO_NUM || photo_index == MMIDC_INVALID_PHOTO_INDEX);
//open input file name window
MMK_CreateWin((uint32*)MMIDC_INPUT_PHOTO_NAME_WIN_TAB, (ADD_DATA)photo_index);
return TRUE;
}
/*****************************************************************************/
// Description : to handle the message of rename filename win
// Global resource dependence :
// Author:bruce.chi
// Note:
/*****************************************************************************/
LOCAL MMI_RESULT_E HandleInputPhotoNameWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
)
{
MMI_RESULT_E recode = MMI_RESULT_TRUE;
MMIDC_RESULT_E rename_result = MMIDC_RESULT_ERROR;
MMI_CTRL_ID_T edit_ctrl_id = MMIDC_INPUT_PHOTO_NAME_EDITBOX_CTRL_ID;
uint32 photo_index = 0;
MMI_STRING_T former_name_str = {0};
TEXTEDIT_STRING_INFO_T name_info = {0};
uint8 *jpg_ptr = PNULL;
uint32 jpg_len = 0;
MMIDC_FFS_WRITE_RESULT_E ffs_result = 0;
FILE_DEV_E_T e_file_dev = 0;
switch(msg_id)
{
case MSG_OPEN_WINDOW:
//set edit box style
GUIEDITBOX_SetEditBoxToSingle(edit_ctrl_id, SINGLE_ALIGN_CENTER);
//judge edit old photo or create new photo
photo_index = (uint32)MMK_GetWinAddDataPtr(win_id);
if (photo_index == MMIDC_INVALID_PHOTO_INDEX)
{
//new photo, assign random name
uint8 rand_name[MMIDC_MAX_PHOTO_NAME_LEN + 2] = {0};
uint16 str_len = 0;
SCI_MEMSET(rand_name, 0, sizeof(rand_name));
str_len = MMIDC_AssignPhotoDefaultName(rand_name);
DC_ASSERT_LOW(str_len <= MMIDC_MAX_PHOTO_NAME_LEN);
GUIEDITBOX_SetTextEditBoxStringInfo(
edit_ctrl_id,
rand_name,
str_len,
FALSE
);
}
else
{
//get former string and set it in this edit box
former_name_str = DCSaveInfo_GetPotoName(photo_index);
GUIEDITBOX_SetTextEditBoxStringInfo(
edit_ctrl_id,
former_name_str.str_ptr,
former_name_str.length,
former_name_str.is_ucs2
);
}
MMK_SetAtvCtrl(win_id, edit_ctrl_id);
break;
case MSG_FULL_PAINT:
MMIDC_FILL_CLIENT();
break;
case MSG_CTL_OK:
//check whether input string is valid
GUIEDITBOX_GetTextEditBoxInfo(
edit_ctrl_id,
&name_info
);
if(MMIDC_IsIncludeInvalidChar(
name_info.str_ptr,
name_info.str_len,
name_info.is_ucs2)
)
{
//alert invalid input
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NAMEINVALID, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
break;
}
//judge edit old photo or create new photo
photo_index = (uint32)MMK_GetWinAddDataPtr(win_id);
if (photo_index == MMIDC_INVALID_PHOTO_INDEX)
{
//new photo
e_file_dev = DCSetting_GetStorageDev();
if (FS_MMC == e_file_dev)
{
if(!MMI_GetSDStatus())
{
e_file_dev = FS_UDISK;
}
}
else if (FS_UDISK == e_file_dev )
{
if(!MMI_GetUdiskStatus())
{
e_file_dev = FS_MMC;
}
}
if (MMIDC_CheckNameExist(
e_file_dev,
name_info.str_ptr,
name_info.str_len,
name_info.is_ucs2
)
)
{
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NAMEREPEAT, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
break;
}
//new photo
MMISET_StopAllRing(FALSE); // 由于获取数据时需要变频,所以需要停止所有铃声// @cr67973
jpg_ptr = MMIDC_GetSnapshotData(&jpg_len);
if (jpg_ptr != PNULL)
{
//open waiting win
OpenSaveingWin(MMIDC_WRITE_FILE_WIN_ID);
//asynchronize add
ffs_result = DCSaveInfo_AsyAdd(
MMIDC_WRITE_FILE_WIN_ID, //the window that will receive the ffs callback message
e_file_dev,
jpg_ptr,
jpg_len,
0,
0,
name_info.str_ptr,
name_info.str_len,
name_info.is_ucs2
);
if (ffs_result != DCFFS_WRITE_PANDING)
{
//alert
AlertSaveResult(ffs_result);
//close waiting win
MMK_CloseWin(MMIDC_WRITE_FILE_WIN_ID);
}
}
}
else
{
uint16 ucs2_name_arr[MMIDC_MAX_PHOTO_NAME_LEN + 2] = {0};
int ucs2_name_len = 0;
e_file_dev = DCSaveInfo_GetPhotoStorageDev(photo_index);
//change string got in edit box to ucs2
if (name_info.is_ucs2)
{
ucs2_name_len = name_info.str_len;
SCI_MEMCPY(ucs2_name_arr, name_info.str_ptr, name_info.str_len);
}
else
{
ucs2_name_len = GUI_GB2UCS(ucs2_name_arr, (uint8 *)name_info.str_ptr, name_info.str_len);
}
//get former string
former_name_str = DCSaveInfo_GetPotoName(photo_index);
//compare
if(0 == GUI_StringCompare(
(uint8 *)ucs2_name_arr,
ucs2_name_len,
(uint8 *)former_name_str.str_ptr,
former_name_str.length
)
)
{
SCI_TRACE_LOW("mmidc_storage_wintab:HandleInputPhotoNameWinMsg: gui compare repeat!");
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NAMEREPEAT, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
break;
}
if (MMIDC_CheckNameExist(
e_file_dev,
name_info.str_ptr,
name_info.str_len,
name_info.is_ucs2
)
)
{
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NAMEREPEAT, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
break;
}
//rename old photo
rename_result = DCSaveInfo_RenamePhoto(e_file_dev, name_info.str_ptr, name_info.str_len, name_info.is_ucs2, photo_index);
switch(rename_result)
{
case MMIDC_RESULT_SUCCESS:
//change list item
if(MMK_IsOpenWin(MMIDC_ALBUM_WIN_ID))
{
ChangeListboxItem(photo_index, (uint8 *)ucs2_name_arr, ucs2_name_len, e_file_dev);
}
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_MMI_SAVESUCC, IMAGE_PROMPT_ICON_SUCCESS, MMI_3SECONDS, PNULL);
MMK_CloseWin(MMIDC_INPUT_PHOTO_NAME_WIN_ID);//关闭输入照片名窗口
break;
case MMIDC_RESULT_ERROR:
//提示用户
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_MMI_SAVEFAILED, IMAGE_PROMPT_ICON_FAIL, MMI_3SECONDS, PNULL);
MMK_CloseWin(MMIDC_RENAME_PHOTO_NAME_WIN_ID);//关闭输入照片名窗口
break;
case MMIDC_RESULT_REPEAT:
SCI_TRACE_LOW("mmidc_storage_wintab.c:HandleRenamePhotoNameWinMsg: ffs compare repeat!");
PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NAMEREPEAT, IMAGE_PROMPT_ICON_FAIL, MMI_3SECONDS, PNULL);
break;
default:
SCI_PASSERT(FALSE, ("mmidc_storage_wintab.c:HandleRenamePhotoNameWinMsg: rename result error!"));
break;
}
}
break;
case MSG_CTL_CANCEL:
MMK_CloseWin(win_id);
break;
default:
recode = MMI_RESULT_FALSE;
break;
}
return recode;
}
/*****************************************************************************/
// Description : DC read file done handling function(MSG_DC_FILE_READ_DONE)
// Global resource dependence :
// Author: wancan.you
// Note:
/*****************************************************************************/
PUBLIC void MMIDC_ReadPhotoFileDoneCnf(DPARAM param)
{
MMIDC_FFS_ASY_READ_RESULT_T *read_result_ptr = PNULL;
MMIDC_FFS_ASY_READ_RESULT_T st_read_result = {0};
SCI_TRACE_LOW("mmidc_storage_wintab.c: MMIDC_ReadPhotoFileDoneCnf() MSG_DC_FILE_READ_DONE");
//init
SCI_MEMSET(&st_read_result, 0, sizeof(st_read_result));
DC_ASSERT_LOW(param != 0);
read_result_ptr = (MMIDC_FFS_ASY_READ_RESULT_T *)param;
//read dc info step 2
DCSaveInfo_AsyReadStep2(read_result_ptr);
//post message
SCI_MEMCPY(&st_read_result, read_result_ptr, sizeof(MMIDC_FFS_ASY_READ_RESULT_T));
if (MMK_IsOpenWin(st_read_result.win_id))
{
MMK_PostMsg(
st_read_result.win_id,
MSG_DC_FILE_READ_DONE,
&st_read_result,
sizeof(MMIDC_FFS_ASY_READ_RESULT_T)
);
}
}
/*****************************************************************************/
// Description : DC write file done handling function(MSG_DC_FILE_WRITE_DONE)
// Global resource dependence :
// Author: wancan.you
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -