mtk idle界面函數

.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中。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/feelinghappy/archive/2010/01/29/5270381.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章