状态栏、拨号界面、快捷键

来源:互联网 发布:阿里云购买的域名在哪 编辑:程序博客网 时间:2024/05/17 04:38

1.1 状态栏

状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。

电池电量显示:

图标ID为STATUS_ICON_BATTERY_STRENGTH

位于MainLCD/IdleScreen/Statusicons/battery 注意的是图标保证5帧。关于电量显示的控制位于

文件PoweronCharger.c

函数BatteryStatusIndication 根据当前的电量值设置显示的帧数。

该图标在状态栏的坐标

Wgui_status_icons.c---函数arrange_status_icons()

MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].y = 0;

MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].x=220;

信号指示图标:

图标ID 为 STATUS_ICON_SIGNAL_STRENGTH

位于MainLCD/IdleScreen/Statusicons/signal

文件 NetWorkFunctions.c

函数ChangeStatusIconLevel根据当前的信号值设置显示的图片帧数。

该图标在待机界面的坐标:

文件Wgui_status_icons.c---函数arrange_status_icons()

MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].y = 0;

MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].x=3;

时间和日期:

文件:Wgui_datetime.c

函数:show_main_LCD_date_time.设置日期,星期,时间的显示坐标。

注意的是:在函数hide_main_LCD_date_time中需要根据前面各个对象的坐标重新设置刷新区域的坐标。并且修改Wgui_categories_idlescreen.c下面的三个函数的注册函数(之前屏蔽的)

set_main_LCD_dt_date_hide_function(cat33_hide_date_display);

set_main_LCD_dt_time_hide_function(cat33_hide_time_display);

set_main_LCD_day_hide_function(cat33_hide_day_string_display);

为了正确的显示时间格式(用户选择12小时制,会增加AM/PM两个字母),在函数show_main_LCD_date_time. 时间显示的clip的地方增加格式判断 PhnsetGetTimeFormat()。根据所返回的时间格式,设定clip区域。

网络运营商

文件:Wgui_categories_idlescreen.c

函数idle_screen_show_network_details() 调整网络运营商的名字坐标

状态图标

状态图标包括消息接受提示,情景模式,外部电池等。图标的排列位于:

文件:Wgui_status_icons.c

函数:arrange_status_icons()

位于代码段:

x-=MMI_status_icons[k].width+STATUS_ICON_X_GAP;

实现图标自右向左的排列。每当有新的状态产生,图标就向左移动排列。

1.2  快捷键

设置待机界面上各个快捷方式的坐标以及响应函数

文件Wgui_categories_idlescreen.c

函数setup_touch_idle_screen_shortcut。通过该函数设置各个快捷键图标的坐标以及各自的响应函数。

文件 Shortcuts.c

修改如下函数:

ShctExecuteUpKey 功能修改为按键上移,高亮快捷键第一个图标或者动态列表项

ShctExecuteDownKey功能修改为按键下移,高亮快捷键第一个图标或者动态列表项

ShctExecuteLeftKey功能修改为按键左移,高亮左边模块,如果已经是第一个,则高亮最后一个

ShctExecuteRightKey功能修改为按键右移,高亮右边模块,如果已经是最后个,则高亮第一个

函数ShctExecuteOKKey 根据高亮的快捷键,进入对应的模块。

文件MMI_features_GuiPLUTO.h

MMI_features_GUI.h

可以打开或关闭是否显示shortcut的宏

__MMI_TOUCH_IDLESCREEN_SHORTCUTS__。

为了同时显示快捷键和屏幕下方的左右按键。需要在函数ShowCategory33Screen中 屏蔽dm_data.s32flags |= DM_NO_SOFTKEY;

1.3 日历项以及音乐播放提示

为了实现日历项和音乐播放曲目的正确显示,需要在待机界面增加动态列表

文件Wgui_categories_idlescreen.c

函数ShowCategory33Screen()

添加动态列表:

create_fixed_icontext_menuitems();

MMI_current_menu_type=LIST_MENU;

associate_fixed_icontext_list();

设置列表中各个项的标题和图标:

init_dynamic_item_buffer(ItemsOfCat33,Cat33GetItemCallback,NULL,UI_dummy_function);

ItemsOfCat33:动态列表中项的个数。由当前系统运行的程序决定。

Cat33GetItemCallback:该回调函数注册各个项的标题和图标。

在上述函数中,首先对日历项的存储区进行判断是否有内容,如果有内容,继续判断该日历项的日期是否在当日,如果是,将该字符串显示在项中。如果今日有多个项,则显示在日历项序列中最早的一个。如果日历项的日期不是今日,则显示“今天无日历项”。

文件Todolist.c

函数:TDLDeleteAllTask ()

该函数的作用是删除全部的备忘录日历项。因此,需要清空记录缓冲区的记录,防止在待机界面的日历项仍然显示。

memset(&g_tdl_cntx.NoteBuff,0,MAX_TODO_LIST_NOTE);

2 综合

2.1修改每个新版本的默认日期:

文件:Custom_hw_default.c

数字代表基准年份的偏移。8代表2008。月份和天同理

const kal_uint8 DEFAULT_HARDWARE_YEAR = 8; 

const kal_uint8 DEFAULT_HARDWARE_MON = 1;

const kal_uint8 DEFAULT_HARDWARE_DAY = 1;

2.2 通话

文件:CallManagementIncoming.c

当有外部来电的时候,进入函数

EntryScrIncomingCallEvent

文件:Wgui_categories_CM.c

函数 ShowMOMTCallScreen 很多通话事件的屏幕都需要进入该函数。可以通过该函数,查找到各个通话事件的流程。可以对已有的屏幕做界面修改。

3.3 拨号盘

文件:IdleApp.c

函数:IdleDisableLongPress

由于长按键之后,需要重新注册和清楚一些按键。而原函数为了达到这一效果,又重新调用了函数 IdleScreenDigitHandler,虽然达到了目的,但是会造成第一次按键反应慢,因此,在IdleDisableLongPress函数内部禁止调用前一个函数,将函数中注册和清除的按键写在IdleDisableLongPress中。
㈠在文件wgui.h中调试坐标信息

//数字键列数
#define MMI_DIALING_KEYPAD_COLOMNS                      (3)

//数字键行数
#define MMI_DIALING_KEYPAD_ROWS                         (4)

//整个拨号盘的宽度
#define MMI_DIALING_KEYPAD_LAYER_WIDTH                  (218)

//整个拨号盘的高度
#define MMI_DIALING_KEYPAD_LAYER_HEIGHT                 (177)

//整个拨号盘在屏幕的起始横坐标
#define MMI_DIALING_KEYPAD_LAYER_X                      ((MAIN_LCD_DEVICE_WIDTH-MMI_DIALING_KEYPAD_LAYER_WIDTH)>>1)

//整个拨号盘在屏幕的起始纵坐标
#define MMI_DIALING_KEYPAD_LAYER_Y                     (((MAIN_LCD_DEVICE_HEIGHT-MMI_DIALING_KEYPAD_LAYER_HEIGHT)>>1)+20)

//第一个数字键在拨号盘的起始横坐标
#define MMI_DIALING_KEYPAD_X                            (14)

//第一个数字键在拨号盘的起始纵坐标
#define MMI_DIALING_KEYPAD_Y                            (5)

//拨号盘的宽度
#define MMI_DIALING_KEYPAD_WIDTH                        (218)

//拨号盘的高度
#define MMI_DIALING_KEYPAD_HEIGHT                       (177)

//数字键的宽度
#define MMI_DIALING_KEY_WIDTH                           (37)

//数字键的高度
#define MMI_DIALING_KEY_HEIGHT                          (37)

//数字键横向间隔
#define MMI_DIALING_KEY_HORIZONTAL_GAP                  (12)

//数字键纵向间隔
#define MMI_DIALING_KEY_VERTICAL_GAP                    (5)

//拨号时数字输入框的起始横坐标
#define MMI_DIALING_BOX_X                               (0)

//拨号时数字输入框的起始纵坐标
#define MMI_DIALING_BOX_Y                               (0)

//拨号时数字输入框的宽度
#define MMI_DIALING_BOX_WIDTH                           (0)

//拨号时数字输入框的高度
#define MMI_DIALING_BOX_HEIGHT                          (66)

//功能键列数
#define MMI_DIALING_KEYPAD_FUNC_COLOMNS             (1)

//功能键行数
#define MMI_DIALING_KEYPAD_FUNC_ROWS                (3)

//第一个功能键在拨号盘上的起始横坐标
#define MMI_DIALING_KEYPAD_FUNC_X                   (165)

//第一个功能键在拨号盘上的起始纵坐标
#define MMI_DIALING_KEYPAD_FUNC_Y                   (15)

//功能键的宽度
#define MMI_DIALING_FUNC_KEY_WIDTH                  (37)

//功能键的高度
#define MMI_DIALING_FUNC_KEY_HEIGHT                 (37)

//功能键横向间隔
#define MMI_DIALING_FUNC_KEY_HORIZONTAL_GAP         (0)

//功能键纵向间隔
#define MMI_DIALING_FUNC_KEY_VERTICAL_GAP           (16)


㈡在文件Themecomponents.h中调试输入框及字体颜色

//拨号输入框的光标颜色
dialer_inputbox_cursor_color_defaultTheme

//拨号输入框的字体颜色
dialer_inputbox_text_color_defaultTheme

//拨号输入框的字体边框颜色
dialer_inputbox_text_border_color_defaultTheme

//拨号输入框的背景色/图片
dialer_inputbox_background_filler_defaultTheme

原创粉丝点击