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

📄 mmidc_storage_wintab.c

📁 手机Camera部分上层软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
//	Note: 
/*****************************************************************************/
PUBLIC void MMIDC_OpenAlbumWin(MMIDC_ALBUM_OPEN_FROM open_album_status)
{
	uint32 total_photo_num = 0;

	total_photo_num = DCSaveInfo_GetPotoTotalNum();
	if (total_photo_num > 0)
	{
		//save that who opened the album
		s_album_open_status = open_album_status;

		MMK_CreateWin((uint32 *)MMIDC_ALBUM_WIN_TAB, PNULL);
	}
	else
	{
        PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_DC_NOPHOTO, IMAGE_PROMPT_ICON_ALERT, MMI_3SECONDS, PNULL);
	}

}

/*****************************************************************************/
// 	Description : get album open status that has been saved
//	Global resource dependence : 
//  Author: bruce.chi
//	Note: 
/*****************************************************************************/
PUBLIC const MMIDC_ALBUM_OPEN_FROM *GetAlbumOpenStatus(void)
{
	return &s_album_open_status;
}

/*****************************************************************************/
// 	Description : get album open status that has been saved
//	Global resource dependence : 
//  Author: 
//	Note: 
/*****************************************************************************/
PUBLIC void SetAlbumOpenStatus(MMIDC_ALBUM_OPEN_FROM open_status)
{
		s_album_open_status = open_status;
}
/*****************************************************************************/
// 	Description : open photo option window
//	Global resource dependence : 
//  Author:
//	Note: BOOLEAN is_from_capture : TRUE: from capture, FALSE: from album
/*****************************************************************************/
PUBLIC void MMIDC_OpenPhotoOptionWin(BOOLEAN is_from_capture, BOOLEAN is_valid, uint32 photo_index, uint8 *buf_ptr, uint32 buf_len)
{
	static PHOTO_OPT_WINDOW_INFO_T *photo_opt_info_ptr = PNULL;

	DC_ASSERT_LOW(photo_index < MMIDC_MAX_PHOTO_NUM);

	SCI_TRACE_LOW("MMIDC_OpenPhotoOptionWin:is_from_capture=%d, is_valid=%d", is_from_capture, is_valid);
	
	photo_opt_info_ptr = SCI_ALLOC(sizeof(PHOTO_OPT_WINDOW_INFO_T));
	photo_opt_info_ptr->photo_index		= photo_index;
	photo_opt_info_ptr->photo_buf_ptr	= buf_ptr;
	photo_opt_info_ptr->photo_buf_len	= buf_len;
	photo_opt_info_ptr->is_photo_valid	= is_valid;

	if (is_from_capture)
	{
		MMK_CreateWin((uint32 *) MMIMDC_PHOTOOPTION_WIN_TAB, (ADD_DATA)photo_opt_info_ptr);
	}
	else
	{
		MMK_CreateWin((uint32 *) MMIMDC_ALBUMOPTION_WIN_TAB, (ADD_DATA)photo_opt_info_ptr);
	}
}



/*****************************************************************************/
// 	Description : to handle the message of picture optioni win      
//	Global resource dependence : 
//  Author:bruce.chi
//	Note: 
/*****************************************************************************/
LOCAL MMI_RESULT_E  HandlePicOptionMenuWinMsg(
                                MMI_WIN_ID_T win_id, 
                                MMI_MESSAGE_ID_E msg_id, 
                                DPARAM param
                                )
{
	BOOLEAN			            copy_is_grap = FALSE,menu_is_grap = FALSE;
	BOOLEAN			recode = MMI_RESULT_TRUE;
    MMI_MENU_ID_T			menu_id = 0;
    MMI_MENU_GROUP_ID_T		group_id = 0;
	MMI_STRING_T	prompt_str = {0};

	uint32			photo_total_num = 0;
	uint32			photo_index = 0;

	MMI_CTRL_ID_T		menu_ctrl_id = MMIDC_PICOPTION_MENU_ID;
	PHOTO_OPT_WINDOW_INFO_T *photo_opt_info_ptr = PNULL;

	MMIDC_FFS_DEL_RESULT_E		del_result = 0;
	MMIDC_FFS_ASY_DEL_RESULT_T	*st_del_result_ptr = PNULL;

	const MMIDC_PHOTO_DETAIL_T		*photo_detail_ptr = PNULL;
	
	uint8	name_arr[MMIDC_MAX_PHOTO_NAME_LEN + MMIDC_DEFAULT_SUBFIX_LEN * 2 + 2] = {0};

	uint16  name_len = 0;
#ifdef MMI_BLUETOOTH  
	uint16			ucs2_str[MMIBT_SEND_FILE_NAME_MAX_LEN] ={0};
	uint8			ucs2_len = 0;
	uint8			gb_pathname[MMIBT_FILE_DIR_MAX_LENGTH] = {0};
	MMI_STRING_T	file_name_info = {0};
	uint16			file_name[(MMIDC_MAX_PHOTO_NAME_LEN + MMIDC_DEFAULT_SUBFIX_LEN * 2 + 4) / 2] = {0};
    uint16			file_name_len = 0;
#endif

    switch(msg_id)
    {
	case MSG_OPEN_WINDOW:
		photo_opt_info_ptr = (PHOTO_OPT_WINDOW_INFO_T *)MMK_GetWinAddDataPtr(win_id);
		SCI_ASSERT(photo_opt_info_ptr != PNULL);
		
		//whether read file succeed
		//whether read file succeed
		if (!photo_opt_info_ptr->is_photo_valid)
		{
            menu_is_grap = TRUE;
		}
		else
		{
            menu_is_grap = FALSE;
		}
		      //设置菜单项是否要变灰
	    if(MMI_GetSDStatus())
        {
             copy_is_grap = FALSE;
        }
	    else
        {
             copy_is_grap = TRUE;
        }
        MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_WALLPAPER, menu_is_grap);
		MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_SEND, menu_is_grap);
		MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_RENAME, menu_is_grap);
        MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_COPY, copy_is_grap);

        MMI_EnableGrayed(MENU_DC_PHOTO_OPT, ID_DC_OPT_WALLPAPER, menu_is_grap);
		MMI_EnableGrayed(MENU_DC_PHOTO_OPT, ID_DC_OPT_SEND, menu_is_grap);
		MMI_EnableGrayed(MENU_DC_PHOTO_OPT, ID_DC_OPT_RENAME, menu_is_grap);
        
        //T-flash上的照片不能发送和设为墙纸
        photo_detail_ptr = DCSaveInfo_GetPhotoDetail(photo_opt_info_ptr->photo_index);
        if (MMIMEDIUM_TFLASH == photo_detail_ptr->location)
        {
            MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_WALLPAPER,TRUE);
#ifndef MMI_NOR_VERSION
		    MMI_EnableGrayed(MENU_DC_ALBUM_OPT, ID_DC_OPT_SEND,TRUE);
#endif
            MMI_EnableGrayed(MENU_DC_PHOTO_OPT, ID_DC_OPT_WALLPAPER, TRUE);
#ifndef MMI_NOR_VERSION
		    MMI_EnableGrayed(MENU_DC_PHOTO_OPT, ID_DC_OPT_SEND, TRUE);
#endif
        }
		MMK_SetAtvCtrl(win_id, menu_ctrl_id);
		break;

	case MSG_CLOSE_WINDOW:
		MMK_FreeWinAddData(win_id);
		//close capture window
		MMIDC_CloseCaptureWin();
		break;

    case MSG_CTL_OK:
        GUIMENU_GetRetID(menu_ctrl_id, &group_id, &menu_id);

		photo_opt_info_ptr = (PHOTO_OPT_WINDOW_INFO_T *)MMK_GetWinAddDataPtr(win_id);
		SCI_ASSERT(photo_opt_info_ptr != PNULL);
		
		switch (menu_id)
        {
#ifdef MMI_BLUETOOTH
		case ID_DC_ALBUM_SEND_MMS:
            if(PNULL != photo_opt_info_ptr->photo_buf_ptr)
            {
                if (MMIMMS_SendImage(ANIM_JPG, photo_opt_info_ptr->photo_buf_len, photo_opt_info_ptr->photo_buf_ptr))
				{
					//To avoid that MMS preview JPG, which will use one BLOCK_MEM, I close this window and former preview JPG window
					MMIDC_CloseCaptureWin();
					MMK_CloseWin(win_id);
				}
            }
			break;

		case ID_DC_ALBUM_SEMD_BT:
			 photo_detail_ptr = DCSaveInfo_GetPhotoDetail(photo_opt_info_ptr->photo_index);
			//get picture file path name
			sprintf((char*)gb_pathname,"%s",MMIDC_PATH_NAME);	
			ucs2_len = GUI_GB2UCS(ucs2_str, gb_pathname, strlen((char*)gb_pathname));
			//get picture file name
			file_name_info = DCSaveInfo_GetPotoName(photo_opt_info_ptr->photo_index);					
			SCI_MEMCPY(file_name, file_name_info.str_ptr, file_name_info.length);
			file_name_len = MMISTR_AddSubfix((uint8 *)file_name, file_name_info.length, TRUE, (uint8 *)MMIDC_DEFAULT_SUBFIX, MMIDC_DEFAULT_SUBFIX_LEN);		
			//call bt function to send file
			MMIBT_SendFile( photo_detail_ptr->location,
							ucs2_str,
							ucs2_len,
							file_name,
							file_name_len,
							photo_detail_ptr->memory_size);	

			break;

#else
        case ID_DC_OPT_SEND:		//Send	
            if(PNULL != photo_opt_info_ptr->photo_buf_ptr)
            {
#ifndef MMI_NOR_VERSION
                if (MMIMMS_SendImage(ANIM_JPG, photo_opt_info_ptr->photo_buf_len, photo_opt_info_ptr->photo_buf_ptr))
                {
                    //To avoid that MMS preview JPG, which will use one BLOCK_MEM, I close this window and former preview JPG window
                    MMIDC_CloseCaptureWin();
                    MMK_CloseWin(MMIDC_BROWSER_WIN_ID);
                    MMK_CloseWin(win_id);
                }
#else
            	//To avoid that MMS preview JPG, which will use one BLOCK_MEM, I close this window and former preview JPG window
            	MMIDC_CloseCaptureWin();
            	MMK_CloseWin(MMIDC_PREVIEW_WIN_ID);
                MMK_CloseWin(MMIDC_BROWSER_WIN_ID);
				MMK_CloseWin(win_id);
					
                MMIMMS_SendImage(ANIM_JPG, photo_opt_info_ptr->photo_buf_len, photo_opt_info_ptr->photo_buf_ptr);
#endif
            }						
            break;
#endif
        case ID_DC_OPT_DELETEALL:	//Delte all
            PUBWIN_OpenPromptQueryWin(TXT_DC_OPT_DELETEALL, IMAGE_PROMPT_ICON_QUERY);
            break;

        case ID_DC_OPT_DELETE:		//Delete
            PUBWIN_OpenPromptQueryWin(TXT_DC_DELETEQUERY, IMAGE_PROMPT_ICON_QUERY);
            break;

        case ID_DC_OPT_WALLPAPER:	//Set to wallpapre
            PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_NONE, TXTSYS_WAITING, IMAGE_PROMPT_ICON_WAIT, 0, HandleAlwaysWaitingAlertWinMsg);
            MMK_PostMsg(win_id, MSG_MULTIM_CLOSE_WAITING_WIN, PNULL, 0);        
            break;

        case ID_DC_OPT_RENAME:		//Rename
            MMIDC_OpenInputNameWin(photo_opt_info_ptr->photo_index);
            break;

        case ID_DC_OPT_DETAIL:		//Detail
             MMK_CreateWin((uint32*)MMIDC_SHOWDETAILWIN_TAB, (ADD_DATA)photo_opt_info_ptr);
            break;
        case ID_DC_OPT_COPY:
            //询问是否复制
            PUBWIN_OpenPromptQueryWin((MMI_TEXT_ID_T)TXT_DC_OPT_COPY, IMAGE_PROMPT_ICON_QUERY);
            break;
        default:
               SCI_ASSERT(FALSE);
        }
        break;    

    case MSG_CTL_CANCEL:
	    MMK_CloseWin(win_id);
		break;

    case MSG_PROMPTWIN_OK:
        //stop all ring
        MMISET_StopAllRing(FALSE);

        PUBWIN_ClosePromptQueryWin();
        GUIMENU_GetRetID(MMIDC_PICOPTION_MENU_ID, &group_id, &menu_id);

        if(menu_id == ID_DC_OPT_DELETE)
        {
			MMI_GetLabelTextByLang(TXTSYS_WAITING, &prompt_str);

			//open waiting win
			PUBWIN_OpenWaitingMessageWin(
				MMIDC_DELETE_WAITING_WIN_ID,
				WIN_ONE_LEVEL,
				PUBWIN_SOFTKEY_NONE,
				&prompt_str,
				PNULL,
				IMAGE_EXCEPTIVE_WAIT_ANIMA,
				0,//WAIT_TEXT_BACKGROUND_COLOR,
				PNULL,
				HandleAlwaysWaitingWinMsg
				);
			
			photo_opt_info_ptr = (PHOTO_OPT_WINDOW_INFO_T *)MMK_GetWinAddDataPtr(win_id);
			SCI_ASSERT(photo_opt_info_ptr != PNULL);
            
			del_result = DCSaveInfo_AsyDelete(win_id, photo_opt_info_ptr->photo_index);

			//alert delete result
			AlertDeleteResult(del_result);

			//modify album list
			if (del_result == DCFFS_DEL_SUCCEED)
			{
				SCI_ASSERT(0);
			}
			else if (del_result == DCFFS_DEL_FAIL)
			{
				//close waiting win
				PUBWIN_CloseWaitingMessageWin(MMIDC_DELETE_WAITING_WIN_ID);
			}

        }
		else if (menu_id == ID_DC_OPT_DELETEALL)
		{
			MMI_GetLabelTextByLang(TXTSYS_WAITING, &prompt_str);

			//open waiting win
			PUBWIN_OpenWaitingMessageWin(
				MMIDC_DELETE_WAITING_WIN_ID,
				WIN_ONE_LEVEL,
				PUBWIN_SOFTKEY_NONE,
				&prompt_str,
				PNULL,
				IMAGE_EXCEPTIVE_WAIT_ANIMA,
				0,//WAIT_TEXT_BACKGROUND_COLOR,
				PNULL,
				HandleAlwaysWaitingWinMsg
				);
			
			photo_total_num = DCSaveInfo_GetPotoTotalNum();
			DC_ASSERT_LOW(photo_total_num > 0);
			photo_index = DCSaveInfo_GetPotoTotalNum() - 1;
            
			del_result = DCSaveInfo_AsyDelete(win_id, photo_index);

			//alert delete result
			AlertDeleteResult(del_result);

			//modify album list
			if (del_result == DCFFS_DEL_SUCCEED)
			{
				SCI_ASSERT(0);
			}
			else if (del_result == DCFFS_DEL_FAIL)
			{
				//close waiting win
				PUBWIN_CloseWaitingMessageWin(MMIDC_DELETE_WAITING_WIN_ID);
				//close review win
				MMK_CloseWin(MMIDC_BROWSER_WIN_ID);
				//close album win
				MMK_CloseWin(MMIDC_ALBUM_WIN_ID);
				//close this win
				MMK_CloseWin(win_id);
			}
			
		}
		 else if (menu_id == ID_DC_OPT_COPY)
		 {  //提示请稍后
			PUBWIN_OpenPromptAlertWinExt2(MMI_COPY_WAIT_WIN_ID,WIN_ONE_LEVEL,PUBWIN_SOFTKEY_NONE,(MMI_TEXT_ID_T)TXTSYS_WAITING,IMAGE_PROMPT_ICON_WAIT,0, MMIMP3_NotInterruptFfs);
                    //get the selected item
                    photo_index = GUILISTBOX_GetCurItemIndex(MMIDC_ALBUM_LISTBOX_CTRL_ID);
                    photo_index = (uint16)(s_mmidc_photo_info.total_num - 1 - photo_index);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -