}nvram_lid_commapp_enum;
Note: our new LID must between the ?NVRAM_EF_ADC_LID‘ and ?NVRAM_EF_LAST_LID_COMMAPP‘.
2.
Define size and total in
\\custom\\common\\PLUTO_MMI\\common_nvram_editor_data_item.h
code example:
#define NVRAM_EF_MIIPTS_MSG_SIZE 260 #define NVRAM_EF_MIIPTS_MSG_TOTAL 20
Note: size must be even, if not, phone will be reset just after power on.
3. Add version number to \\interface\\ps\\nvram_editor_data_item.h
code example:
#define NVRAM_EF_MIIPTS_MSG_LID_VERNO \
4. Add a new struct to logical_data_item_table_comm_app in
\\custom\\common\\PLUTO_MMI\\nvram_common_config.c
code example:
ltable_entry_struct
logical_data_item_table_comm_app[NVRAM_EF_LAST_LID_COMMAPP
NVRAM_LID_COMMAPP_BEGIN] = { , }
… { },
NVRAM_EF_MIIPTS_MSG_LID, NVRAM_EF_MIIPTS_MSG_SIZE, NVRAM_EF_MIIPTS_MSG_TOTAL, NVRAM_EF_ZERO_DEFAULT,
NVRAM_ATTR_AVERAGE,
NVRAM_CATEGORY_USER | NVRAM_CATEGORY_CUSTPACK, \
VER(NVRAM_EF_MIIPTS_MSG_LID), \
NVRAM_INVALID_VALUE
-
Note: this item positon is according to the ?NVRAM_EF_MIIPTS_MSG_LID‘ in the enum
存储这种数据,还可以使用系统内置的Flash,在MTK6225-07B-0812上,该盘符是Z盘。
11
fs_quota.c
在数组gFS_ExtQuotaSet中申请一项:
{\ FS_QP_HIG_ENUM, 10*1024, FS_QMAX_NO_LIMIT, FS_COUNT_IN_BYTE}
4 Message organize in nvram
4.1
添加nvram项
在这个文件中添加nvram_user_config.c
4.2 Data structure:
typedef struct
{
S8 title[MIIPTS_MAXIMUM_MESSAGE_TITLE]; }miipts_struct_message_title;
typedef struct {
S8 title[MIIPTS_MAXIMUM_MESSAGE_TITLE]; S8 body[MIIPTS_MAXIMUM_MESSAGE_BODY]; }miipts_struct_message_item;
typedef struct
{
miipts_struct_message_title titles[MIIPTS_MAXIMUM_MESSAGE_ITEMS]; }miipts_struct_message_title_list;
4.3 Function
S32 miipts_read_msg_title_list(miipts_struct_message_title_list *list, S32 size); void miipts_read_msg(S32 index, miipts_struct_message_item *item); void miipts_write_msg(S32 index, miipts_struct_message_item *item); void miipts_append_msg(miipts_struct_message_item *item); void miipts_del_msg(S32 index);
12
4.4 note
We just read all the titles of messages into list when we browse the message list, but not all the message bodies because the data size may too large.
We read one message body into RAM when we enter the message body screen.
wgui_categories_inputs.c
wgui_EMS_inputbox_input_type
wgui_EMS_inputbox_input_mode_changed ;
wgui.c
S32 MMI_status_bar_height; S32 MMI_content_x; S32 MMI_content_y; S32 MMI_content_width; S32 MMI_content_height;
wgui_categories_util.c
MMI_title_string = (UI_string_type) get_string(title); MMI_title_icon = (PU8) get_image(title_icon);
smscore.c
2个有关ems输入和显示的全局变量: static msg_ems_data_struct bufForDisplay; static msg_ems_data_struct bufForEdit; 这个是这2个全局变量的外部接口:
EMSData *GetEMSDataForEdit(EMSData **p, U8 force)
MMI_current_input_box_type = EDITOR_EMS_INPUT_BOX
test_change_input_mode
gdi_layer.c
GDI_LCD is a global value to control the gdi context gdi_layer_lock_frame_buffer();
wgui_categories_util.c
UI_common_screen_exit? ExitCategoryFunction
13
event.c
U8 EntryNewScreen(U16 newscrnID, FuncPtr newExitHandler, FuncPtr newEntryHandler, void *peerBuf)
static FuncPtr currEntryFuncPtr;
static U16 currExitScrnID, currTopScrnID; /* curr exit func ptr with scrn id */ static FuncPtr currExitFuncPtr;
typedef enum { KEY_0= 0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9,
KEY_LSK, KEY_RSK, KEY_UP_ARROW, KEY_DOWN_ARROW, KEY_LEFT_ARROW, KEY_RIGHT_ARROW, KEY_SEND, KEY_END, KEY_CLEAR, KEY_STAR, KEY_POUND,
KEY_VOL_UP, KEY_VOL_DOWN, KEY_QUICK_ACS, KEY_CAMERA KEY_ENTER, KEY_WAP KEY_IP
MAX_KEYS,
KEY_INVALID
} mmi_keypads_enum;
= KEY_QUICK_ACS,
=KEY_ENTER, =KEY_ENTER,
/* max key codes support */
=0xFE// 255 /* By JL, to sync with driver */
14
typedef enum {
KEY_EVENT_DOWN, KEY_EVENT_UP, KEY_LONG_PRESS, KEY_REPEAT, MAX_KEY_TYPE
} mmi_key_types_enum;
FuncPtr currKeyFuncPtrs[MAX_KEYS][MAX_KEY_TYPE];
#define GDI_ENTER_CRITICAL_SECTION(func) GDI_LOCK; {int gdi_mutex_level = gdi_mutex.cnt;
#define GDI_EXIT_CRITICAL_SECTION(func) GDI_ASSERT(gdi_mutex_level == gdi_mutex.cnt);} GDI_UNLOCK;
wgui_ems.c
wgui_EMS_redraw_input_information_bar wgui_EMS_show_input_mode
wgui_EMS_redraw_remaining_characters_display
use this register function to register control_area_callback dm_register_category_controlled_callback
wgui_categories.c
ShowCategory66Screen
This category is special because it‘s redraw function will be called repeatedly if this category is being on show.
For a category:
ShowCategoryScreen ExitCategoryScreen
dm:draw manager
dm_setup_and_draw_ems_inputbox ?
15