AMPM设置菜单的添加.docx

上传人:b****1 文档编号:3224475 上传时间:2023-05-05 格式:DOCX 页数:26 大小:107.63KB
下载 相关 举报
AMPM设置菜单的添加.docx_第1页
第1页 / 共26页
AMPM设置菜单的添加.docx_第2页
第2页 / 共26页
AMPM设置菜单的添加.docx_第3页
第3页 / 共26页
AMPM设置菜单的添加.docx_第4页
第4页 / 共26页
AMPM设置菜单的添加.docx_第5页
第5页 / 共26页
AMPM设置菜单的添加.docx_第6页
第6页 / 共26页
AMPM设置菜单的添加.docx_第7页
第7页 / 共26页
AMPM设置菜单的添加.docx_第8页
第8页 / 共26页
AMPM设置菜单的添加.docx_第9页
第9页 / 共26页
AMPM设置菜单的添加.docx_第10页
第10页 / 共26页
AMPM设置菜单的添加.docx_第11页
第11页 / 共26页
AMPM设置菜单的添加.docx_第12页
第12页 / 共26页
AMPM设置菜单的添加.docx_第13页
第13页 / 共26页
AMPM设置菜单的添加.docx_第14页
第14页 / 共26页
AMPM设置菜单的添加.docx_第15页
第15页 / 共26页
AMPM设置菜单的添加.docx_第16页
第16页 / 共26页
AMPM设置菜单的添加.docx_第17页
第17页 / 共26页
AMPM设置菜单的添加.docx_第18页
第18页 / 共26页
AMPM设置菜单的添加.docx_第19页
第19页 / 共26页
AMPM设置菜单的添加.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

AMPM设置菜单的添加.docx

《AMPM设置菜单的添加.docx》由会员分享,可在线阅读,更多相关《AMPM设置菜单的添加.docx(26页珍藏版)》请在冰点文库上搜索。

AMPM设置菜单的添加.docx

AMPM设置菜单的添加

12小时制下AM/PM设置菜单的添加

一、开发背景

在karbonn项目zp180b002和zl590d002上,客户强烈要求在所有可进行时间设置的界面在12小时制下都要添加AM/PM的设置菜单,并能进行正确的时间设置。

二、涉及界面

1、phonesettings下的Settime/date界面

2、Alarm下的edit界面

3、calendar下的Add、Edit界面

4、Todolist下的Add、Edit界面

5、phonesettings下的schedulepoweron/off的edit界面

三、原理介绍

该功能主要只做上层显示的变化,而不修改底层原有数据,降低未知风险。

要点有以下几点:

1、在12小时下进入上述界面,在add、edit等操作时改变原有界面布局,增加AM/PM设置的caption和selectitem。

2、显示:

从底层获取原有数据转换成12小时显示。

3、存储:

将设置的数据转换成24小时存储。

4、selectitem的值(当前是AM还是PM):

定义全局变量,由该全局变量来决定,当前处于AM还是PM。

其中需要特别指出的是:

calendar和todolist的add、edit界面较为复杂,因为calendar界面包括了stat_time、end_time都需要添加AM/PM设置,此外calendar和todolist下add、edit以及view界面都包括了alarm_time,虽然此项不能对时间进行设置不需要添加AM/PM设置菜单,但是其时间显示在12小时制下仍然显示为24小时制的格式。

所以在12小时制下需要对其作出里,这里采取了后缀显示AM/PM的方案(后缀显示AM/PM的方案实现过程详见于项目zl590d002相关代码)。

效果示例图如下(以todolist为例):

图3.1todolist下的无AM/PM图3.2todolist下的有AM/PM设置

设置add界面的add界面

图3.3todolist下的无AM/PM图3.4todolist下的有AM/PM设置

设置view界面的view界面

图3.3todolist下的无AM/PM图3.4todolist下的有AM/PM设置

设置edit界面的edit界面

四、12小时制下AM/PM设置界面展示

以phonesettings下的Settime/date界面为例:

图4.1:

无AM/PM设置功能图4.2:

有AM/PM设置功能

五:

代码实现过程示例:

(以phonesettings下的Settime/date界面为例,其他界面原理相同,只需增加或修改细节,例如后缀显示AM/PM)

1。

增加一个宏__MMI_TIME_FORMAT_AMPM_SUPPORT__,用于控制修改的所有内容。

2。

在DateAndTime.c文件中,修改如下:

1)增加inline显示相关的id的定义

/*Setdateandtime*/

#defineSET_DATE_AND_TIME_SET_TIME_CAPTION(CUI_INLINE_ITEM_ID_BASE+1)

#defineSET_DATE_AND_TIME_SET_TIME(CUI_INLINE_ITEM_ID_BASE+2)

#defineSET_DATE_AND_TIME_SET_DATE_CAPTION(CUI_INLINE_ITEM_ID_BASE+3)

#defineSET_DATE_AND_TIME_SET_DATE(CUI_INLINE_ITEM_ID_BASE+4)

#defineSET_DATE_AND_TIME_DAYLIGHT_SAVING_CAPTION(CUI_INLINE_ITEM_ID_BASE+5)

#defineSET_DATE_AND_TIME_DAYLIGHT_SAVING_SELECT(CUI_INLINE_ITEM_ID_BASE+6)

#ifdefined(__MMI_TIME_FORMAT_AMPM_SUPPORT__)

#defineSET_DATE_AND_TIME_SET_AMPM_CAPTION(CUI_INLINE_ITEM_ID_BASE+7)

#defineSET_DATE_AND_TIME_SET_AMPM_SELECT(CUI_INLINE_ITEM_ID_BASE+8)

#endif

2)增加存在ampm的inline界面相关的全局变量:

#ifdefined(__MMI_TIME_FORMAT_AMPM_SUPPORT__)

staticU16g_phnset_dt_am_pm_str_id[]={STR_AM,STR_PM};//字串资源需要自行添加

staticconstcui_inline_item_caption_structg_phnset_set_date_time_ampm_caption={STR_ID_AMPM};//字串资源需要自行添加

staticcui_inline_item_select_structg_phnset_set_date_time_ampm_select=

{

2,/*amandpm*/

0,

g_phnset_dt_am_pm_str_id

};

staticcui_inline_set_item_structg_phnset_set_date_time_with_ampm_data[]=

{

{SET_DATE_AND_TIME_SET_TIME_CAPTION,CUI_INLINE_ITEM_TYPE_CAPTION,IMG_TIME,&g_phnset_set_date_time_caption1},

{SET_DATE_AND_TIME_SET_TIME,CUI_INLINE_ITEM_TYPE_TIME|CUI_INLINE_ITEM_DISABLE_LIST_HIGHLIGHT,0,&g_phnset_date_and_time_common_inline_time},

{SET_DATE_AND_TIME_SET_AMPM_CAPTION,CUI_INLINE_ITEM_TYPE_CAPTION,IMG_TIME,&g_phnset_set_date_time_ampm_caption},

{SET_DATE_AND_TIME_SET_AMPM_SELECT,CUI_INLINE_ITEM_TYPE_SELECT,0,&g_phnset_set_date_time_ampm_select},

{SET_DATE_AND_TIME_SET_DATE_CAPTION,CUI_INLINE_ITEM_TYPE_CAPTION,IMG_CAL,&g_phnset_set_date_time_caption2},

{SET_DATE_AND_TIME_SET_DATE,CUI_INLINE_ITEM_TYPE_DATE|CUI_INLINE_ITEM_DISABLE_LIST_HIGHLIGHT,0,&(g_phnset_date_and_time_common_inline_time.date_time)},

{SET_DATE_AND_TIME_DAYLIGHT_SAVING_CAPTION,CUI_INLINE_ITEM_TYPE_CAPTION,SUN_ICON,&g_phnset_set_date_time_caption3},

{SET_DATE_AND_TIME_DAYLIGHT_SAVING_SELECT,CUI_INLINE_ITEM_TYPE_SELECT,0,&g_phnset_set_date_time_select1}

};

staticconstcui_inline_structg_phnset_set_date_time_with_ampm_inline=

{

sizeof(g_phnset_set_date_time_with_ampm_data)/sizeof(cui_inline_set_item_struct),

STR_ID_PHNSET_SET_DT,

IMG_SCR_SETTING_CAPTION,

CUI_INLINE_SCREEN_DEFAULT_TEXT|CUI_INLINE_SCREEN_DISABLE_DONE,

NULL,

g_phnset_set_date_time_with_ampm_data

};

staticU8g_phnset_set_date_time_curr_ampm_flag=0x00;//0x00-->AM,0x01-->PM

#endif

3)增加时间转换的两个函数:

#ifdefined(__MMI_TIME_FORMAT_AMPM_SUPPORT__)

/*****************************************************************************

*FUNCTION

*mmi_phnset_date_and_time_convert_to_12_format

*DESCRIPTION

*convert24timeformatto12formattime

*PARAMETERS

*hour_24timeformat[IN]

*RETURNS

*12formattime

*****************************************************************************/

U16mmi_phnset_date_and_time_convert_to_12_format(U16hour_24timeformat)

{

/*----------------------------------------------------------------*/

/*LocalVariables*/

/*----------------------------------------------------------------*/

U16hour_12timeformat=hour_24timeformat;

/*----------------------------------------------------------------*/

/*CodeBody*/

/*----------------------------------------------------------------*/

if(hour_24timeformat>12)

{

g_phnset_set_date_time_curr_ampm_flag=0x01;//PM

hour_12timeformat-=12;

}

elseif(hour_24timeformat==0)

{

hour_12timeformat=12;

g_phnset_set_date_time_curr_ampm_flag=0x00;//AM

}

elseif(hour_24timeformat==12)

{

g_phnset_set_date_time_curr_ampm_flag=0x01;//PM

}

else

{

g_phnset_set_date_time_curr_ampm_flag=0x00;//AM

}

returnhour_12timeformat;

}

/*****************************************************************************

*FUNCTION

*mmi_phnset_date_and_time_convert_to_24_format

*DESCRIPTION

*convert12timeformatto24formattime

*PARAMETERS

*hour_12timeformat[IN]

*RETURNS

*24formattime

*****************************************************************************/

U16mmi_phnset_date_and_time_convert_to_24_format(U16hour_12timeformat)

{

/*----------------------------------------------------------------*/

/*LocalVariables*/

/*----------------------------------------------------------------*/

U16hour_24timeformat=hour_12timeformat;

/*----------------------------------------------------------------*/

/*CodeBody*/

/*----------------------------------------------------------------*/

if(hour_12timeformat>12)

{

hour_24timeformat=12;

}

if((g_phnset_set_date_time_curr_ampm_flag==0x01)&&hour_12timeformat<12)//PM

{

hour_24timeformat=hour_12timeformat+12;

}

elseif((g_phnset_set_date_time_curr_ampm_flag==0x00)&&hour_12timeformat==12)//12:

xxAM

{

hour_24timeformat=0;

}

returnhour_24timeformat;

}

#endif

4)修改mmi_phnset_date_and_time_mytime_to_inline_time如下:

/*****************************************************************************

*FUNCTION

*mmi_phnset_date_and_time_mytime_to_inline_time

*DESCRIPTION

*Transferg_time_buffertoinlinetimestruct

*PARAMETERS

*

*RETURNS

*staticvoid

*****************************************************************************/

staticvoidmmi_phnset_date_and_time_mytime_to_inline_time(cui_inline_item_time_struct*inline_time)

{

/*----------------------------------------------------------------*/

/*LocalVariables*/

/*----------------------------------------------------------------*/

/*----------------------------------------------------------------*/

/*CodeBody*/

/*----------------------------------------------------------------*/

inline_time->date_time.year=g_time_buffer.nYear;

inline_time->date_time.month=g_time_buffer.nMonth;

inline_time->date_time.day=g_time_buffer.nDay;

inline_time->date_time.hour=g_time_buffer.nHour;

inline_time->date_time.minute=g_time_buffer.nMin;

inline_time->date_time.second=g_time_buffer.nSec;

inline_time->date_format=0;

#ifdefined(__MMI_TIME_FORMAT_AMPM_SUPPORT__)

if(!

PhnsetGetTimeFormat())

{

inline_time->date_time.hour=mmi_phnset_date_and_time_convert_to_12_format(inline_time->date_time.hour);

}

#endif

}

5)修改mmi_phnset_date_and_time_inline_time_to_mytime函数如下:

 

/*****************************************************************************

*FUNCTION

*mmi_phnset_date_and_time_inline_time_to_mytime

*DESCRIPTION

*Transferinlinetimestructdatatog_time_buffer

*PARAMETERS

*

*RETURNS

*staticvoid

*****************************************************************************/

staticvoidmmi_phnset_date_and_time_inline_time_to_mytime(cui_inline_item_time_struct*inline_time)

{

/*----------------------------------------------------------------*/

/*LocalVariables*/

/*----------------------------------------------------------------*/

/*----------------------------------------------------------------*/

/*CodeBody*/

/*----------------------------------------------------------------*/

#ifdefined(__MMI_TIME_FORMAT_AMPM_SUPPORT__)

if(!

PhnsetGetTimeFormat())

{

inline_time->date_time.hour=mmi_phnset_date_and_time_convert_to_24_format(inline_time->date_time.hour);

}

#endif

g_time_buffer.nYear=(kal_uint16)inline_time->date_time.year;

g_time_buffer.nMonth=(kal_uint8)inline_time->date_time.month;

g_time_buffer.nDay=(kal_uint8)inline_time->date_time.day;

g_time_buffer.nHour=(kal_uint8)inline_time->date_time.hour;

g_time_buffer.nMin=(kal_uint8)inline_time->date_time.minute;

/*Inlinecuiwillnotreturnsecond*/

g_time_buffer.nSec=0;

}

6)修改函数mmi_phnset_entry_set_date_and_time如下:

 

/*****************************************************************************

*FUNCTION

*mmi_phnset_entry_set_date_and_time

*DESCRIPTION

*Internalentryfunction

*PARAMETERS

*

*RETURNS

*staticvoid

*****************************************************************************/

staticvoidmmi_phnset_entry_set_date_and_time(MMI_IDparent_gid)

{

/*----------------------------------------------------------------*/

/*LocalVariables*/

/*----------------------------------------------------------------*/

MMI_ID*inlinecui_gid;

cui_inline_item_time_structinline_time;

/*----------------------------------------------------------------*/

/*CodeBody*/

/*---------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2