📄 mmidc_review_wintab.c
字号:
/*****************************************************************************
** File Name: mmidc_review_wintab.c *
** Author: *
** Date: 2005-8 *
** Copyright: 2003 Spreadtrum, Incorporated. All Rights Reserved. *
** Description: This file is used to describe dc review window table *
*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 08/2005 Bruce.Chi Create *
*****************************************************************************/
//#ifndef _MMIDC_REVIEW_WINTAB_C_
//#define _MMIDC_REVIEW_WINTAB_C_
/**--------------------------------------------------------------------------*
** Include Files *
**--------------------------------------------------------------------------*/
#include "mmidc_internal.h"
#include "window_parse.h"
#include "mmidisplay_data.h"
#include "mmi_appmsg.h"
#include "mmi_pubwin.h"
#include "mmi_default.h"
#include "mmi_common.h"
#include "mmiset.h"
#include "mmimp3.h"
/**--------------------------------------------------------------------------*
** MACRO DEFINITION *
**--------------------------------------------------------------------------*/
#ifdef LCD_176_220
#define MMIDC_REVIEW_OK_TEXT_WIDTH 32
#define MMIDC_REVIEW_CANCEL_TEXT_WIDTH 32
#define MMIDC_REVIEW_OK_TEXT_HEIGHT 16
#define MMIDC_REVIEW_CANCEL_TEXT_HEIGHT 16
#elif defined(_LCD_QVGA_)
#define MMIDC_REVIEW_OK_TEXT_WIDTH 32
#define MMIDC_REVIEW_CANCEL_TEXT_WIDTH 32
#define MMIDC_REVIEW_OK_TEXT_HEIGHT 16
#define MMIDC_REVIEW_CANCEL_TEXT_HEIGHT 16
#elif defined LCD_128_160
#define MMIDC_REVIEW_OK_TEXT_WIDTH 32
#define MMIDC_REVIEW_CANCEL_TEXT_WIDTH 32
#define MMIDC_REVIEW_OK_TEXT_HEIGHT 16
#define MMIDC_REVIEW_CANCEL_TEXT_HEIGHT 16
#endif
/**--------------------------------------------------------------------------*
** STATIC DEFINITION *
**--------------------------------------------------------------------------*/
LOCAL BOOLEAN s_is_in_dc_review = FALSE;
/*---------------------------------------------------------------------------*/
/* TYPE AND CONSTANT */
/*---------------------------------------------------------------------------*/
/**--------------------------------------------------------------------------*
** EXTERNAL DECLARE *
**--------------------------------------------------------------------------*/
extern RECT_T s_osd_char_disp_rect;
/**-------------------------------------------------------------------------*
** GLOBAL DEFINITION *
**--------------------------------------------------------------------------*/
extern PUBLIC void MMIDEFAULT_AllowBackLight(
BOOLEAN allow_light //[IN] TRUE:允许BackLight, FALSE: 不允许BackLight
);
/*---------------------------------------------------------------------------*/
/* LOCAL FUNCTION DECLARE */
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
// Description : to handle the message of browser win
// Global resource dependence :
// Author:lin.lin
// Note:
/*****************************************************************************/
LOCAL MMI_RESULT_E HandleReviewWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
);
/*****************************************************************************/
// Description : 读文件等待窗口处理函数
// Global resource dependence :
// Author:bruce.chi
// Note:
/*****************************************************************************/
MMI_RESULT_E HandleReadPhotoFileWaitWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
);
/*****************************************************************************/
// Description : Handle_TP_Button_Register
//
// Global resource dependence :
// Author: bown.zhang
// Note:
/*****************************************************************************/
LOCAL void Handle_TP_Button_Register(MMI_WIN_ID_T win_id);
/*****************************************************************************/
// Description : alert read result
// Global resource dependence :
// Author:
// Note:
/*****************************************************************************/
LOCAL void AlertReadResult(MMIDC_FFS_READ_RESULT_E e_read_result);
// the photo browser window
WINDOW_TABLE( MMIDC_BROWSER_WIN_TAB ) =
{
CLEAR_LCD,
WIN_PRIO( WIN_ONE_LEVEL ),
WIN_FUNC( (uint32)HandleReviewWinMsg ),
WIN_ID( MMIDC_BROWSER_WIN_ID ),
END_WIN
};
/*****************************************************************************/
// Description : open review window
// Global resource dependence :
// Author:lin.lin
// Note:
/*****************************************************************************/
BOOLEAN OpenPhotoBrowserWin(uint32 arr_index)
{
MMISET_StopAllRing(FALSE);
MMK_CreateWin((uint32*)MMIDC_BROWSER_WIN_TAB, (ADD_DATA)arr_index);
return TRUE;
}
/*****************************************************************************/
// Description : to handle the message of browser win
// Global resource dependence :
// Author:lin.lin
// Note:
/*****************************************************************************/
#define PHOTO_REVIEW_MOVE_STEP 16
LOCAL MMI_RESULT_E HandleReviewWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
)
{
BOOLEAN recode = MMI_RESULT_TRUE;
MMIDC_FFS_READ_RESULT_E e_read_result = 0;
static uint32 s_photo_index = 0;
static BOOLEAN s_is_read_done = FALSE;
static uint32 s_photo_width = 0;
static uint32 s_photo_height = 0;
static MMIDC_REVIEW_PHOTO_INFO_T s_st_review_info = {0};
MMIDC_FFS_ASY_READ_RESULT_T *read_result_ptr = PNULL;
MMIDC_PHOTO_INFO_AFTER_REVIEW_T photo_info_reviewed = {0};
const MMIDC_ALBUM_OPEN_FROM *album_open_from_ptr = PNULL;
MMIMULTIM_SELECTED_RETURN_T return_info = {0};
uint32 total_photo_num = 0;
switch(msg_id)
{
case MSG_OPEN_WINDOW:
s_is_in_dc_review = TRUE;
//suspend mp3
#ifdef MMI_BLUETOOTH_A2DP
MMIMP3_BtSuspendMp3(TRUE,TRUE);
#else
MMIMP3_SuspendMp3(TRUE);
#endif
if (MMIMP3_IsMp3SuspendAndContinue())
{
SCI_Sleep(10); //为了切频
}
//init globle
s_photo_index = 0;
s_is_read_done = FALSE;
SCI_MEMSET(&s_st_review_info, 0, sizeof(s_st_review_info));
s_st_review_info.i_lcd = MAIN_LCD_ID;
s_st_review_info.e_review_type = REVIEW_WHOLE_PHOTO;
album_open_from_ptr = GetAlbumOpenStatus();
if (album_open_from_ptr->is_from_mms)
{
s_st_review_info.e_review_from = PHOTO_REVIEW_FROM_MMS;
}
else
{
s_st_review_info.e_review_from = PHOTO_REVIEW_FROM_DC_ALBUM;
}
// 不允许背光关闭
MMIDEFAULT_AllowBackLight(FALSE);
//DC_Open
DCAdap_DCOpen();
//alloc jpg file cache
s_photo_index = (uint32)MMK_GetWinAddDataPtr(win_id);
s_st_review_info.photo_len = DCSaveInfo_GetPhotoSize(s_photo_index);
s_st_review_info.photo_ptr = MMIDC_AllocJpegMemory(s_st_review_info.photo_len);
//read file
e_read_result = DCSaveInfo_AsyRead(
win_id,
s_photo_index,
s_st_review_info.photo_ptr,
s_st_review_info.photo_len
);
if (e_read_result == DCFFS_READ_SUCCEED)
{
SCI_ASSERT(FALSE);
}
else if (e_read_result == DCFFS_READ_FAIL)
{
MMIDC_OpenPhotoOptionWin(FALSE, FALSE, s_photo_index, s_st_review_info.photo_ptr, s_st_review_info.photo_len);
MMK_CloseWin(win_id);
}
else if (e_read_result == DC_FFS_READ_TOOBIG)
{
MMIDC_OpenPhotoOptionWin(FALSE, FALSE, s_photo_index, s_st_review_info.photo_ptr, s_st_review_info.photo_len);
MMK_CloseWin(win_id);
}
else if (e_read_result == DCFFS_READ_PANDING)
{
//do nothing
}
AlertReadResult(e_read_result);
break;
case MSG_FULL_PAINT:
MMIDEFAULT_AllowBackLight(FALSE);
break;
case MSG_DC_FILE_READ_DONE:
SCI_TRACE_LOW("mmidc_review_wintab.c:HandleReviewWinMsg.c MSG_DC_FILE_READ_DONE");
DC_ASSERT_LOW(param != 0);
read_result_ptr = (MMIDC_FFS_ASY_READ_RESULT_T *)param;
//save read status
s_is_read_done = TRUE;
if (MMK_IsFocusWin(win_id))
{
if (read_result_ptr->e_read_result == DCFFS_READ_SUCCEED)
{
album_open_from_ptr = GetAlbumOpenStatus();
//begin to review
s_st_review_info.photo_ptr = read_result_ptr->buf_ptr;
s_st_review_info.photo_len = read_result_ptr->read_size;
SCI_TRACE_LOW("mmidc_review_winab.c:HandleReviewWinMsg, s_photo_ptr=%x, s_phot_len=%d", s_st_review_info.photo_ptr, s_st_review_info.photo_len);
if (album_open_from_ptr->is_from_mms)
{
s_st_review_info.e_review_from = PHOTO_REVIEW_FROM_MMS;
}
else
{
s_st_review_info.e_review_from = PHOTO_REVIEW_FROM_DC_ALBUM;
}
s_st_review_info.e_review_type = REVIEW_WHOLE_PHOTO;
//draw background in mainlcd
DrawDefaultBackGroud(MAIN_LCD_ID);
if (!MMIDC_ReviewPhoto(&s_st_review_info))
{
SCI_TRACE_LOW("mmidc_review_winab.c:HandleReviewWinMsg review failed");
if (album_open_from_ptr->is_from_mms)
{
//alert review failed
PUBWIN_OpenPromptAlertWin(
PUBWIN_SOFTKEY_ONE,
TXT_MP3_NO_SUPPORT,
IMAGE_PROMPT_ICON_FAIL,
MMI_3SECONDS,
PNULL
);
//close this review window and album window
MMK_CloseWin(MMIDC_ALBUM_WIN_ID);
MMK_CloseWin(win_id);
}
else
{
MMIDC_OpenPhotoOptionWin(FALSE, FALSE, s_photo_index, s_st_review_info.photo_ptr, s_st_review_info.photo_len);
//alert review failed
PUBWIN_OpenPromptAlertWin(
PUBWIN_SOFTKEY_ONE,
TXT_MP3_NO_SUPPORT,
IMAGE_PROMPT_ICON_FAIL,
MMI_3SECONDS,
PNULL
);
//close this review window
MMK_CloseWin(win_id);
}
break;
}
Handle_TP_Button_Register(win_id);
photo_info_reviewed = MMIDC_GetPhotoInfoAfterReview();
s_photo_width = photo_info_reviewed.width;
s_photo_height = photo_info_reviewed.height;
//save the photo info in global
DCSaveInfo_SetPhotoSize(s_photo_index, s_photo_width, s_photo_height);
}
else
{
//create another option menu , photo_data is invalid
MMIDC_OpenPhotoOptionWin(FALSE, FALSE, s_photo_index, s_st_review_info.photo_ptr, s_st_review_info.photo_len);
//alert read result
AlertReadResult(read_result_ptr->e_read_result);
MMK_CloseWin(win_id);
}
}
break;
/*
case MSG_APP_WEB:
#ifdef WIN32
case MSG_KEYDOWN_GREEN:
#endif
if (s_is_read_done)
{
//REVIEW_WHOLE_PHOTO
if (s_st_review_info.e_review_type == REVIEW_WHOLE_PHOTO)
{
s_st_review_info.e_review_type = REVIEW_PART_PHOTO;
}
else if (s_st_review_info.e_review_type == REVIEW_PART_PHOTO)
{
s_st_review_info.e_review_type = REVIEW_WHOLE_PHOTO;
}
else
{
DC_ASSERT_LOW(0);
}
//draw background in mainlcd
DrawDefaultBackGroud(MAIN_LCD_ID);
MMIDC_ReviewPhoto(&s_st_review_info);
}
break;
*/
case MSG_APP_DOWN:
if (s_is_read_done)
{
if (s_st_review_info.e_review_type == REVIEW_PART_PHOTO)
{
if (s_st_review_info.y_start + PHOTO_REVIEW_MOVE_STEP + MMIDC_MAINSCREEN_HEIGHT <= s_photo_height)
{
s_st_review_info.y_start += PHOTO_REVIEW_MOVE_STEP;
MMIDC_ReviewPhoto(&s_st_review_info);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -