FreeCalypso > hg > leo2moko-debug
diff g23m/condat/ms/src/bmi/mmiwindow.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/bmi/mmiwindow.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,427 @@ + +/******************************************************************************* + + TI (Shanghai) + +******************************************************************************** + + This software product is the property of TI (Shanghai) Ltd and may not be + disclosed to any third party without the express permission of the owner. + +******************************************************************************** + + $Project name: TISHMMI Project + $Project code: BMI (6349) + $Module: MMI + $File: MmiWindow.c + $Revision: 1.0 + + $Author: Yan Bin(bin-yan@ti.com) + $Date: 28/08/03 + +******************************************************************************** + + Description: + + This module provides definitions of the types and + constants which are shared across the MMI window + application modules. + +******************************************************************************** + $History: MmiWindow.c + + CRR 23959: xpradipg 26 Aug 2004 + Description: List not updated after deleting the messages in Unsent/Inbox folder + Solution: The list is refreshed everytime the user returns from the options menu + + 13 Aug 2004 xreddymn: Extended MFW to support Suspend and Resume of third-party applications + 28/08/03 Original TI(Shanghai) BMI version. + + $End + +*******************************************************************************/ +#define MMI_MMIWINDOW_C + +#define ENTITY_MFW + +/* includes */ +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +#if defined (NEW_FRAME) + +#include "typedefs.h" +#include "vsi.h" +#include "pei.h" +#include "custom.h" +#include "gsm.h" + +#else + +#include "STDDEFS.H" +#include "custom.h" +#include "gsm.h" +#include "vsi.h" + +#endif +#include "prim.h" + + +#include "mfw_mfw.h" +#include "mfw_win.h" +#include "mfw_kbd.h" +#include "mfw_edt.h" +#include "mfw_tim.h" +#include "mfw_phb.h" +#include "ksd.h" +#include "psa.h" +#include "mfw_sms.h" +#include "mfw_smsi.h" +#include "mfw_icn.h" +#include "mfw_mnu.h" +#include "mfw_lng.h" +#include "mfw_sat.h" +#include "mfw_kbd.h" +#include "mfw_nm.h" + +#include "psa_util.h" + +#include "dspl.h" +// #include "unicode_types.h" + +#include "MmiMain.h" +#include "MmiDummy.h" +//#include "MmiLists.h" +#include "MmiMmi.h" +#include "mmiCall.h"//GW 29/11/01 for 'callNumber' + +#include "MmiDialogs.h" +#include "MmiLists.h" +#include "MmiMenu.h" +#include "MmiSoftKeys.h" +//#include "MmiEditor.h" +#include "MmiBookShared.h" // MZ +#include "mfw_ffs.h" +#include "mmiwindow.h" + +#include "cus_aci.h" + +#include "prim.h" +#ifndef PCM_2_FFS +#include "pcm.h" +#endif + + +#include "aci_cmh.h" //GW 29/11/01 added for types in aci_fd.h +#include "aci_fd.h" //GW 29/11/01 added for types in 'cmh.h' +#include "cmh.h" //GW 29/11/01 added for types in 'cmh_phb.h' +#include "cmh_phb.h" //GW 29/11/01 added for cmhPHB_getAdrStr + +#include "mmiColours.h" + +//GW 29/11/01 - added header file - removed extern void callNumber(UBYTE* number); +extern MfwWin* getWinData( MfwHnd win); + +/********************************************************************* + + DYNAMIC MENU WINDOW. DECLARATION + +**********************************************************************/ +//CRR 23959 - xpradipg 26 Aug 2004 +//moved the structure declaration to mmiwindow.h + +static T_MMIWINDOW* getUserData_T_MMIWINDOW( T_MFW_WIN *win) +{ + if (win == NULL) + return (NULL); + return((T_MMIWINDOW *)win->user); +} + + +/******************************************************************************* + + $Function: MMIWindow_win_cb + + $Description: Window callback function of the MMI window + + $Returns: none + + $Arguments: w - mfw window handler + e - mfw event + +*******************************************************************************/ + +static int MMIWindow_win_cb (MfwEvt e, MfwWin *w) +{ + T_MMIWINDOW* data = (T_MMIWINDOW *)w->user; + TRACE_FUNCTION ("MMIWindow_win_cb()"); + switch (e) + { + case MfwWinVisible: /* window is visible */ + SEND_EVENT(data->win,MWM_ONDRAW,0,0 ); + break; + + /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) + * Implemented suspend and resume functionality for MFW windows + * The following code posts SUSPEND event + */ + case MfwWinSuspend: /* window is suspended */ + SEND_EVENT(data->win,MWM_SUSPEND,0,0 ); + break; + + /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) + * Implemented suspend and resume functionality for MFW windows + * The following code posts RESUME event + */ + case MfwWinResume: /* window is resumed */ + SEND_EVENT(data->win,MWM_RESUME,0,0 ); + break; + + case MfwWinFocussed: /* input focus / selected */ + case MfwWinDelete: /* window will be deleted */ + default: + return MFW_EVENT_REJECTED; + } + return MFW_EVENT_CONSUMED; +} + + +/******************************************************************************* + + $Function: MMIWindow_kbd_cb + + $Description: keyboard callback function for the MMI window + + $Returns: execution status + + $Arguments: e - event id + k - keyboard info +*******************************************************************************/ + +int MMIWindow_kbd_cb (MfwEvt e, MfwKbd *k) + /* SmsRead_R_OPT keyboard event handler */ +{ + T_MFW_HND win = mfwParent(mfw_header()); + T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; + T_MMIWINDOW * data = (T_MMIWINDOW *)win_data->user; + + TRACE_FUNCTION ("MMIWindow_kbd_cb()"); + + if (e & KEY_LONG) + { + switch (k->code) + { + case KCD_HUP: /* back to previous menu */ + mnuEscape(data->menu); + break; + case KCD_RIGHT: /* Power Down */ + return MFW_EVENT_REJECTED; /* handled by idle */ + default: /* no response to all other keys */ + return MFW_EVENT_CONSUMED; + } + } + else + { + switch (k->code) + { + case KCD_MNUUP: /* highlight previous entry */ + mnuUp(data->menu); + break; + case KCD_MNUDOWN: /* highlight next entry */ + mnuDown(data->menu); + break; + case KCD_MNUSELECT: + case KCD_LEFT: /* activate this entry */ + mnuSelect(data->menu); + break; + case KCD_HUP: /* back to previous menu */ + case KCD_RIGHT: /* back to previous menu */ + mnuEscape(data->menu); + break; + default: /* no response to all other keys */ + return MFW_EVENT_CONSUMED; + } + } + return MFW_EVENT_CONSUMED; +} + + + +/******************************************************************************* + + $Function: MMIWindow_mnu_cb + + $Description: Menu callback function for the MMI window + + $Returns: none + + $Arguments: e - event id + m - menu handle +*******************************************************************************/ + +static int MMIWindow_mnu_cb (MfwEvt e, MfwMnu *m) + +{ + T_MFW_HND win = mfwParent(mfw_header()); + T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; + T_MMIWINDOW * data = (T_MMIWINDOW *)win_data->user; + + TRACE_FUNCTION ("MMIWindow_mnu_cb()"); + + switch (e) + { + case E_MNU_ESCAPE: /* back to previous menu */ + MMI_DestoryWindow(data->win); + break; + default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */ + return MFW_EVENT_REJECTED; + } + return MFW_EVENT_CONSUMED; +} + + +GLOBAL_EXT T_MFW_HND MMI_CreateWindow(T_MFW_HND hWinParent, + T_DIALOG_FUNC win_exec_cb, + void * parameter, + MfwCb kbd_cb, + MfwMnuAttr *pMnuAttr, + unsigned long dwStyle) +{ + T_MMIWINDOW* data = (T_MMIWINDOW *)ALLOC_MEMORY (sizeof (T_MMIWINDOW)); + T_MFW_WIN * win; + + TRACE_FUNCTION ("MMI_CreateWindow()"); + + memset(data,0,sizeof (T_MMIWINDOW)); + /* + * Create window handler + */ + + /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) + * Implemented suspend and resume functionality for MFW windows + * Subscribed for MfwWinSuspend and MfwWinResume events + */ + data->win =win_create (hWinParent, 0, E_WIN_VISIBLE|MfwWinSuspend|MfwWinResume, (T_MFW_CB)MMIWindow_win_cb); + if (data->win EQ NULL) + { + return NULL; + } + /* + * connect the dialog data to the MFW-window + */ + + data->mmi_control.dialog = (T_DIALOG_FUNC)win_exec_cb; + data->mmi_control.data = data; + win = getWinData(data->win); + win->user = (void *)data; + + data->parent = hWinParent; + data->id = 0; + data->info_win=0; + + if(pMnuAttr) + { + //CRR 23959: xpradipg 26 Aug 2004 + //Do not create the default kbd handler if there is one specified + if(!kbd_cb) + { + data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)MMIWindow_kbd_cb); + data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)MMIWindow_kbd_cb); + } + data->menu = mnuCreate(data->win,pMnuAttr, E_MNU_ESCAPE, (MfwCb)MMIWindow_mnu_cb); + mnuLang(data->menu,mainMmiLng); + /* put the (new) dialog window on top of the window stack */ + mnuUnhide(data->menu); + } + //CRR 23959: xpradipg 26 Aug 2004 + //check for the keyboard handler irrespective of the menu attribute presence + if(kbd_cb) + { + data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)kbd_cb); + data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)kbd_cb); + } + + + if (data->win NEQ NULL) + { + SEND_EVENT (data->win, MWM_CREATE, 0, (void *)parameter); + } + + winShow(data->win); + return data->win; + +} +GLOBAL_EXT T_MFW_HND MMI_DestoryWindow(T_MFW_HND hWin) +{ + T_MFW_WIN * win_data; + T_MMIWINDOW* data; + USHORT i; + + TRACE_FUNCTION ("MMI_DestoryWindow()"); + + if (hWin) + { + win_data = getWinData(hWin); + data = getUserData_T_MMIWINDOW(win_data); + SEND_EVENT (data->win, MWM_DESTORY, 0, (void *)0); + if (data) + { + /* + * Delete WIN handler + */ + + if (data->info_win) + { + SEND_EVENT(data->info_win,DIALOG_DESTROY,0,0 ); + data->info_win = 0; + } + if (data->list_win){ + SEND_EVENT(data->list_win,DIALOG_DESTROY,0,0 ); + data->list_win = 0; + } + if (data->kbd) + { + kbd_delete(data->kbd); + data->kbd = 0; + } + if (data->kbd_long) + { + kbd_delete(data->kbd_long); + data->kbd_long = 0; + } + if (data->menu){ + mnuDelete(data->menu); + data->menu=0; + } + + win_delete (data->win); + FREE_MEMORY ((void *)data, sizeof (T_MMIWINDOW)); + + }else + { + TRACE_EVENT ("MMSBox_destory() called twice"); + } + } +} + +GLOBAL_EXT T_MFW_HND MMI_ParentWindow(T_MFW_HND hWin) +{ + T_MFW_WIN * win_data; + T_MMIWINDOW* data; + + TRACE_FUNCTION ("MMI_ParentWindow()"); + + if (hWin) + { + win_data = getWinData(hWin); + data = getUserData_T_MMIWINDOW(win_data); + return data->parent; + } + return NULL; +} + +#undef MMI_MMIWINDOW_C + +