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

📄 mmidc_storage_wintab.c

📁 手机Camera部分上层软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                                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 + -