📄 mmibookdetailswindow.c
字号:
/* pop up the soft keys
*/
displaySoftKeys( TxtSoftCall, /* TxtSoftOptions */ TxtSoftBack );
}
break;
default:
{
/* default handler just indicate event not handled
*/
return MFW_EVENT_PASSED;
}
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: bookDetailsKbdCB
$Description: Keyboard handler
$Returns: MFW_EVENT_CONSUMED always
$Arguments: e, event, k, key handle
*******************************************************************************/
static int bookDetailsKbdCB ( MfwEvt e, MfwKbd *k )
{
T_MFW_HND win = mfwParent( mfw_header() );
T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data;
tBookStandard *data = (tBookStandard *) win_data->user;
tMmiPhbData *Current = &data->phbk->current;
TRACE_FUNCTION("bookDetailsKbdCB()");
/* Handle the key events
*/
switch (k->code)
{
case KCD_MNUUP:
break;
case KCD_MNUDOWN:
break;
case KCD_MNUSELECT:
case KCD_CALL:
case KCD_LEFT:
{
/* select to make the call
*/
callNumber( Current->entry[ Current->selectedName ].number );
bookPhonebookDestroy( data->phbk->win );
}
break;
case KCD_RIGHT:
{
/* start up the options menu
*/
//Cancel this screen
bookDetailsDestroy( data->win );
}
break;
case KCD_HUP:
{
/* Cancel this menu
*/
bookDetailsDestroy( data->win );
}
break;
default:
{
/* default handling is to get us out of here
*/
memset( data->edtBuf, '\0', sizeof( data->edtBuf ) );
sprintf( data->edtBuf, "%s%c", (char *) Current->entry[ Current->selectedName ].number, editControls[ k->code ] );
idleDialBuffer( data->edtBuf );
bookPhonebookDestroy( data->phbk->win );
}
break;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: bookDetailsKbdLongCB
$Description: Keyboard Long Press event handler
$Returns: MFW_EVENT_CONSUMED always
$Arguments: e, event, k, keyboard handle
*******************************************************************************/
static int bookDetailsKbdLongCB( MfwEvt e, MfwKbd *k )
{
T_MFW_HND win = mfwParent( mfw_header() );
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
tBookStandard *data = (tBookStandard *) win_data->user;
/* hand a long clear event only
*/
if ( ( e & KEY_CLEAR ) && ( e & KEY_LONG ) )
bookDetailsDestroy( data->win );
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: bookDetailsCreate
$Description: create an instance of the details window
$Returns: handle of newly created window, or NULL if we fail to create
$Arguments: parent, handle of parent window
*******************************************************************************/
static T_MFW_HND bookDetailsCreate(MfwHnd parent)
{
T_MFW_WIN *parent_win_data = ( (T_MFW_HDR *) parent )->data;
T_phbk *phbk = (T_phbk *)parent_win_data->user;
T_MFW_WIN *win_data;
tBookStandard *data;
TRACE_FUNCTION ("bookDetailsCreate()");
/* allocate memory for our control block
*/
if ( ( data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) ) ) == NULL )
return NULL;
/* Create the window if we can
*/
if ( ( data->win = win_create( parent, 0, E_WIN_VISIBLE, (T_MFW_CB) bookDetailsWindowCB ) ) == NULL )
{
FREE_MEMORY( (void *)data, sizeof( tBookStandard ) );
return NULL;
}
/* Okay, we have created the control block and the window, so
we now need to configure the dialog and data pointers
*/
data->mmi_control.dialog = (T_DIALOG_FUNC) bookDetailsDialog;
data->mmi_control.data = data;
win_data = ((T_MFW_HDR *)data->win)->data;
win_data->user = (void *) data;
data->phbk = phbk;
data->parent_win = parent;
/* create keyboards and menus for our window
*/
data->kbd = kbdCreate( data->win, KEY_ALL, (MfwCb) bookDetailsKbdCB );
data->kbd_long = kbdCreate( data->win, KEY_ALL | KEY_LONG, (MfwCb) bookDetailsKbdLongCB );
/* 1945 MZ Initialise the edtBuf */
memset(data->edtBuf,'\0', STANDARD_EDITOR_SIZE );
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
AUI_edit_SetAttr( &data->editor_attr, BOOKDETAILS_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_READONLY, ED_CURSOR_NONE, ATB_DCS_UNICODE/*SPR1752*/, (UBYTE *)data->edtBuf, STANDARD_EDITOR_SIZE);
data->editor = ATB_edit_Create( &data->editor_attr, 0 );
SEND_EVENT(data->win, 0, 0, 0);
ATB_edit_Init(data->editor);
#else /*NEW_EDITOR*/
// API - 08-01-03 - 1540 - change edtCurBar1 to edtCurNone
bookSetEditAttributes( BOOKDETAILS_EDITOR, COLOUR_EDITOR_XX, 0, edtCurNone, 0, data->edtBuf, STANDARD_EDITOR_SIZE, &data->attr );
data->edt = edtCreate( data->win, &data->attr, 0, 0 );
edtUnhide( data->edt );
#endif /*NEW_EDITOR*/
/* allow the window and menu to be created
*/
mnuUnhide(data->menu);
winShow(data->win);
/* And return the handle of the newly created window
*/
return data->win;
}
/*******************************************************************************
Public Methods
*******************************************************************************/
/*******************************************************************************
$Function: bookDetailsStart
$Description: Start routine for the phonebook details window
$Returns: None, assigns the window handle to the name_details_win
hook in the current phone book
$Arguments: m, menu, i, menu item
*******************************************************************************/
void bookDetailsStart( MfwMnu* m, MfwMnuItem* i )
{
T_MFW_HND win = mfwParent(mfw_header());
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
tBookStandard *data = (tBookStandard *)win_data->user;
TRACE_FUNCTION ("bookDetailsStart()");
data->phbk->name_details_win = bookDetailsCreate( data->phbk->win );
}
/*******************************************************************************
$Function: bookDetailsDestroy
$Description: Destroy the phone book details window
$Returns: None
$Arguments: window, handle of window to close
*******************************************************************************/
void bookDetailsDestroy( MfwHnd window )
{
T_MFW_WIN *win = ((T_MFW_HDR *)window)->data;
tBookStandard *data = (tBookStandard *)win->user;
TRACE_FUNCTION ("bookDetailsdestroy()");
/* Only need to do this if the data is valid
*/
if ( data )
{
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
/* New editor no longer destroyed with winDelete,
* so destroy it here */
if (data->editor)
{
ATB_edit_Destroy(data->editor);
}
#endif /* NEW_EDITOR */
data->phbk->name_details_win = 0;
winDelete( data->win );
FREE_MEMORY( (void *)data, sizeof( tBookStandard ) );
}
}
/*******************************************************************************
End of File
*******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -