FreeCalypso > hg > tcs211-c139
diff g23m/condat/ms/src/bmi/MmiMP3Test.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/MmiMP3Test.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,1019 @@ +/******************************************************************************* + + Texas Instruments + +******************************************************************************** + + This software product is the property of Texas Instruments and may not be + disclosed to any third party without the express permission of the owner. + +******************************************************************************** + + $Project name: MMI Application to test the different Audio file formats. + $Module: Test Audio Player + $File: MmiMp3Test.c + $Revision: 1.0 + + $Author: Elsa Armanet-Said Texas Instruments Nice + $Date: 17/05/04 + +******************************************************************************** + + Description: + + This provides the MP3 Test Application interface. + +******************************************************************************** + $History: MmiMp3Test.c + + Nov 16,2005 REF: DR OMAPS00049192 x0039928 + Bug:MP3: The screen is not refreshed after the mp3 file completes playing + Fix: The window is destroyed in mmi_mp3_test_start_cb() after AUDIO_OK + event is received in the mfw callback. + + 17/05/04 + Sep 29,2005 REF: SPR 34407 xdeepadh + Bug:Back soft key takes more time to return to the previous screen in MP3 application + Fix:The list creation for MP3 files has been modified + + + Sep 27,2005 REF: SPR 34402 xdeepadh + Bug:Mono option is always highlighted even when Stereo is selected + Fix:The channel setting will be saved in the FFS, which will be retrieved + later and the selected channel will be higlighted. + + Jul 18, 2005 REF: SPR 31695 xdeepadh + Bug:Problems with MP3 test application + Fix:The window handling of MP3 Test Application has been done properly. + + $End + +*******************************************************************************/ + + + + +/******************************************************************************* + + Include files + +*******************************************************************************/ +#define ENTITY_MFW + +/* includes */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "typedefs.h" +#include "vsi.h" +#include "pei.h" +#include "custom.h" + +#if defined (NEW_FRAME) + +#include "typedefs.h" +#include "vsi.h" +#include "pei.h" +#include "custom.h" +#include "gsm.h" +#include "prim.h" + +#else + +#include "STDDEFS.H" +#include "custom.h" +#include "gsm.h" +#include "vsi.h" + +#endif + +#include "message.h" /* included for aci_cmh.h .... */ +#include "aci_cmh.h" /* included for mfw_sat.h, included for MmiDummy.h, included for MmiMenu.h */ + +#include "mfw_mfw.h" +#include "mfw_win.h" +#include "mfw_icn.h" /* included for mfw_mnu.h */ +#include "mfw_mnu.h" +#include "mfw_tim.h" +#include "mfw_kbd.h" +#include "mfw_sat.h" /* included for MmiDummy.h, included for MmiMenu.h */ +#include "mfw_mp3test.h" + +#include "MmiBlkLangDB.h" +#include "mmiColours.h" +#include "MmiDialogs.h" + +#include "MmiDummy.h" /* included for MmiMenu.h */ +#include "MmiLists.h" +#include "MmiMenu.h" +#include "MmiSoftKeys.h" +#include "MmiMP3Test.h" +#include "MmiMain.h" +#include "Mmiicons.h" +#include "Icons\IcnDefs.h" + //Sep 27,2005 REF: SPR 34402 xdeepadh +#include "MmiBookShared.h" +#include "mfw_ffs.h" + +/******************************************************************************* + + internal data + +*******************************************************************************/ + +/* + * Internal events + */ +// E_INIT event definition +#define E_INIT 1 + +//Sep 27,2005 REF: SPR 34402 xdeepadh +//defines for channels +#define PLAYER_CHANNEL_MONO 0 +#define PLAYER_CHANNEL_STEREO 1 + +//Jul 18, 2005 REF: SPR 31695 xdeepadh +//Defines for Player events +#define PLAYER_INIT 500 +#define PLAYER_DESTROY 501 +#define PLAYER_PLAY 502 + +/*local defines*/ +#define PLAYER_INFO_SCRN_TIMEOUT 1500 + +typedef struct +{ + T_MMI_CONTROL mmi_control; + MfwHnd win; + MfwHnd info_win; //Jul 18, 2005 REF: SPR 31695 xdeepadh + MfwHnd parent_win;//Jul 18, 2005 REF: SPR 31695 xdeepadh + MfwHnd mfwwin; + MfwHnd callwin; + MfwHnd kbd; +} T_MMI_Player_Win_data; + +/*menu data structure definition*/ +typedef struct +{ + T_MMI_CONTROL mmi_control; + T_MFW_HND win; + T_MFW_HND parent; //Jul 18, 2005 REF: SPR 31695 xdeepadh + T_MFW_HND kbd; + T_MFW_HND kbd_long; + T_MFW_HND player_menu; + T_VOID_FUNC func_cb; + UBYTE player_num_file; + UBYTE player_file_count; + ListCbFunc player_list_cb; + UBYTE player_list_idx; + ListMenuData * menu_list_data; //Sep 29,2005 REF: SPR 34407 xdeepadh +}T_player_menu; + +// Nov 16,2005 REF: DR OMAPS00049192 x0039928 +// Global variable that holds the mmi return path and is found in mfw_mp3test.c +extern MMI_RETURN_PATH mmi_audio_player_return_path; + +/*global menu data*/ +T_player_menu player_menu_data = {0}; +/*Boolean to check whether file being played is paused.*/ +BOOL IsPaused = FALSE; +UBYTE IsMfwInit = 0; +extern char* inputFileName; // input file +extern UBYTE IsMP3On; +extern int audio_player_currently_playing_idx ; + + +/******************************************************************************* + + Local prototypes + +*******************************************************************************/ +static void mmi_audio_player_menu_list_listmnu_cb(T_MFW_HND Parent, ListMenuData * ListData); +static MfwHnd mmi_audio_player_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback); +//Sep 29,2005 REF: SPR 34407 xdeepadh +static T_MFW_HND mmi_audio_player_build_player_Menu( MfwHnd parent_window); + + +/*default static menu*/ +static MfwMnuAttr menuPlayerSearchListAttr = +{ + &menuArea, + MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ + -1, /* use default font */ + NULL, /* with these items (filled in later) */ + 0, /* number of items (filled in leter) */ + COLOUR_LIST_XX, /* Colour */ + TxtNull, /* Hdr Id */ + NULL, /* Background */ + MNUATTRSPARE /* unused */ +}; + + +/******************************************************************************* + + $Function: mmi_audio_player_menu_destroy + + $Description: destroy menu window + + $Returns: + + $Arguments: + +*******************************************************************************/ +static void mmi_audio_player_menu_destroy(MfwHnd window) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *)window)->data; + T_player_menu * data = (T_player_menu *)win_data->user; + + TRACE_FUNCTION ("mmi_audio_player_menu_destroy()"); + + + if (window == NULL) + { + return; + } + + if (data) + { + win_delete(data->win); + + /* + ** Free Memory + */ + mfwFree((void *)data, sizeof (T_player_menu)); + + } +} +//Sep 29,2005 REF: SPR 34407 xdeepadh +/******************************************************************************* + $Function: mmi_audio_player_menu_list_listmnu_cb + + $Description: destroy lists and menu in case of back softkey or menu exit + + $Returns: + + $Arguments: + +*******************************************************************************/ +static void mmi_audio_player_menu_list_listmnu_cb(T_MFW_HND Parent, ListMenuData * ListData) +{ + T_MFW_WIN *win_data = ((T_MFW_HDR *)Parent)->data; + T_player_menu *data = (T_player_menu *)win_data->user; + char *fileExt; + + TRACE_FUNCTION ("mmi_audio_player_menu_list_listmnu_cb()"); + + if ((ListData->Reason EQ LISTS_REASON_BACK) || + (ListData->Reason EQ LISTS_REASON_CLEAR) || + (ListData->Reason EQ LISTS_REASON_HANGUP)) + { + /* + ** Destroy the window --- Not sure if this is required! ... leave it out for now + */ + listsDestroy(ListData->win); + + /* + ** Free the memory set aside for ALL the devices to be listed. + */ + if (data->menu_list_data != NULL) + { + FREE_MEMORY ((void *)data->menu_list_data->List, (U16)(data->player_num_file* sizeof (T_MFW_MNU_ITEM))); + FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData)); + } + + mmi_audio_player_menu_destroy(data->win); + + + } + //Sep 29,2005 REF: SPR 34407 xdeepadh + else if(ListData->Reason EQ LISTS_REASON_SELECT) + { + TRACE_EVENT_P1("list position is %d",ListData->ListPosition); + //call mfw to save selected index + mfw_audio_player_save_selected_file_idx(ListData->ListPosition); + fileExt =(char*) mfw_audio_player_GetExtension(inputFileName); + + //Decide whether to play Mp3 or AAC + if ( (strcmp(fileExt, "mp3") == 0)) + { + IsMP3On = MFW_PLAYER_MP3; + } +#ifdef FF_MMI_TEST_AAC + else if ( (strcmp(fileExt, "aac") == 0)) + { + IsMP3On = MFW_PLAYER_AAC; + } +#endif + data->player_list_idx = ListData->ListPosition; + mmi_audio_player_show_info(0, TxtPlayerFileSelected, TxtNull, NULL); + } + + return; +} + +/******************************************************************************* + + $Function: mmi_audio_player_files_win_cb + + $Description: Window event handler + + $Returns: MFW_EVENT_REJECTED: + MFW_EVENT_CONSUMED: + + $Arguments: + +*******************************************************************************/ +static int mmi_audio_player_files_win_cb (MfwEvt e, MfwWin *w) +{ + TRACE_FUNCTION ("mmi_audio_player_files_win_cb()"); + switch (e) + { + case MfwWinVisible: /* window is visible */ + break; + case MfwWinFocussed: /* input focus / selected */ + case MfwWinDelete: /* window will be deleted */ + + default: + return MFW_EVENT_REJECTED; + } + return MFW_EVENT_CONSUMED; +} + +/******************************************************************************* + + $Function: mmi_audio_player_files_exec_cb + + $Description: Call back function + + $Returns: none + + $Arguments: + +*******************************************************************************/ +void mmi_audio_player_files_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; + T_player_menu * data = (T_player_menu *)win_data->user; + SHORT mfw_audio_player_retVal; + int line; + int max_file_number; + int i; + + + ListWinInfo * mnu_data = (ListWinInfo *)parameter; + + TRACE_FUNCTION ("mmi_audio_player_files_exec_cb"); + + switch (event) + { + case E_INIT: + + TRACE_EVENT(">>>> mmi_audio_player_files_exec_cb() Event:E_INIT"); + + /* initialization of administrative data */ + + data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData)); + + if(data->menu_list_data == 0) + { + TRACE_EVENT("Failed memory alloc 1 "); + return; + } + + max_file_number = mfw_audio_player_return_file_number(); + //In case no files have been loaded display info message + //In case no files have been loaded return info message + if(max_file_number == 0) + { + mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); + return; + } + + + data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( max_file_number * sizeof(T_MFW_MNU_ITEM) ); + + if(data->menu_list_data->List == 0) + { + TRACE_EVENT("Failed memory alloc 2"); + return; + } +//Sep 29,2005 REF: SPR 34407 xdeepadh + for (i = 0; i < max_file_number ; i++) + { + mnuInitDataItem(&data->menu_list_data->List[i]); + data->menu_list_data->List[i].flagFunc = item_flag_none; + //Display the Player file names in the list + data->menu_list_data->List[i].str = (char *)mfw_audio_player_return_file_name(data->player_file_count++); + } + + data->menu_list_data->ListLength =max_file_number; + data->menu_list_data->ListPosition = 1; + data->menu_list_data->CursorPosition = 1; + data->menu_list_data->SnapshotSize = max_file_number; + data->menu_list_data->Font = 0; + data->menu_list_data->LeftSoftKey = TxtSoftSelect; + data->menu_list_data->RightSoftKey = TxtSoftBack; + data->menu_list_data->KeyEvents = KEY_ALL; + data->menu_list_data->Reason = 0; + data->menu_list_data->Strings = TRUE; + data->menu_list_data->Attr = (MfwMnuAttr*)&menuPlayerSearchListAttr; +//Apr 05, 2005 REF: ENH 29994 xdeepadh + + data->menu_list_data->Attr->hdrId = TxtPlayerTest; + data->menu_list_data->autoDestroy = FALSE; + listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)mmi_audio_player_menu_list_listmnu_cb,0); + + break; + + + default: + break; + } + +} + + +/******************************************************************************* + + $Function: mmi_audio_player_files_browse + + $Description: This function is called when the user selects "Browse Player Files" option + + $Returns: MFW_EVENT_CONSUMED + + $Arguments: + + +*******************************************************************************/ +GLOBAL int mmi_audio_player_files_browse( MfwMnu *m, MfwMnuItem *i ) +{ + T_MFW_HND win; + T_MFW_HND parent_win = mfw_parent(mfw_header()); + int numberOfMelodies=0; + + TRACE_FUNCTION ("mmi_audio_player_files_browse"); + //initialize data in Player MFW + if(IsMfwInit==0) + { + mfw_audio_player_init(); + IsMfwInit = 1; + } + numberOfMelodies = mfw_audio_player_return_file_number(); + TRACE_EVENT_P1("numberOfMelodies is %d",numberOfMelodies); + + if(numberOfMelodies <= 0) + { + mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); + + } + else + { + win = mmi_audio_player_build_player_Menu(parent_win); + + if (win NEQ NULL) + { + SEND_EVENT (win, E_INIT, 0, 0); + } + + } + return MFW_EVENT_CONSUMED; +} + + +//Sep 29,2005 REF: SPR 34407 xdeepadh +/******************************************************************************* + + $Function: mmi_audio_player_build_player_Menu + + $Description: To hold list window + + $Returns: Window handle + + $Arguments: +*******************************************************************************/ + +static T_MFW_HND mmi_audio_player_build_player_Menu( MfwHnd parent_window) +{ + T_player_menu * data = (T_player_menu *)mfwAlloc(sizeof (T_player_menu)); + T_MFW_WIN * win; + + TRACE_FUNCTION ("mmi_audio_player_build_player_Menu"); + + /* + * Create window handler + */ + + data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_audio_player_files_win_cb); + if (data->win EQ NULL) + { + return NULL; + } + + TRACE_EVENT("list holder window created: " ); + /* + * connect the dialog data to the MFW-window + */ + + data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_audio_player_files_exec_cb; + data->mmi_control.data = data; + win = ((T_MFW_HDR *)data->win)->data; + win->user = (void *)data; + data->parent = parent_window; + winShow(data->win); + /* + * return window handle + */ + + return data->win; +} + +//Sep 27,2005 REF: SPR 34402 xdeepadh +/******************************************************************************* + + $Function: mmi_audio_player_set_cur_selected_channels + + $Description: The Menu for Player channels will be displayed, + by highlighting the selected menu item. + + $Returns:None + + $Arguments:None + +*******************************************************************************/ + +void mmi_audio_player_set_cur_selected_channels(void) +{ + UBYTE CurSel; + T_MFW_HND setting_win; + T_MFW_HND win = mfw_parent(mfw_header()); + + setting_win =(T_MFW_HND) bookMenuStart(win, (MfwMnuAttr*)PlayerChannelAttributes(), 0); + + CurSel = FFS_flashData.player_channel_state; + SEND_EVENT(setting_win, DEFAULT_OPTION, NULL, &CurSel); +} + + +/******************************************************************************* + + $Function: mmi_audio_player_set_channel_mono + + $Description: set channels to mono + + $Returns: + + $Arguments: + +*******************************************************************************/ +GLOBAL int mmi_audio_player_set_channel_mono (MfwMnu* m, MfwMnuItem* i) +{ + + SHORT mfw_audio_player_retVal; + + TRACE_FUNCTION ("mmi_audio_player_set_channel_mono()"); + + mfw_audio_player_retVal = mfw_audio_player_set_channel_mono(); + if(mfw_audio_player_retVal != MFW_PLAYER_TEST_OK) + { + TRACE_FUNCTION ("mmi_audio_player_set_channel_mono(): Riviera Failed"); + mmi_audio_player_show_info(0, TxtPlayerTest, TxtNull, NULL); + } + else + { + // Sep 27,2005 REF: SPR 34402 xdeepadh + // The channel state will be written into the flash. + FFS_flashData.player_channel_state = PLAYER_CHANNEL_MONO ; + flash_write(); + mmi_audio_player_show_info(0, TxtPlayerMonoChannel, TxtNull, NULL); + } + + return 1; +} + +/******************************************************************************* + + $Function: mmi_audio_player_set_channel_stereo + + $Description: set channels to stereo + + $Returns: + + $Arguments: + +*******************************************************************************/ +GLOBAL int mmi_audio_player_set_channel_stereo (MfwMnu* m, MfwMnuItem* i) +{ + + SHORT mfw_audio_player_retVal; + + TRACE_FUNCTION ("mmi_audio_player_set_channel_stereo()"); + mfw_audio_player_retVal = mfw_audio_player_set_channel_stereo(); + if(mfw_audio_player_retVal != MFW_PLAYER_TEST_OK) + { + TRACE_FUNCTION ("mmi_audio_player_set_channel_stereo(): Riviera Failed"); + mmi_audio_player_show_info(0, TxtPlayerTest, TxtNull, NULL); + } + else + { + // Sep 27,2005 REF: SPR 34402 xdeepadh + // The channel state will be written into the flash. + FFS_flashData.player_channel_state = PLAYER_CHANNEL_STEREO; + flash_write(); + mmi_audio_player_show_info(0, TxtPlayerStereoChannel, TxtNull, NULL); + } + + return 1; +} + + +/******************************************************************************* + + $Function: mmi_audio_player_show_info + + $Description: + + $Returns: + + $Arguments: + +*******************************************************************************/ +static MfwHnd mmi_audio_player_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback) +{ + T_DISPLAY_DATA display_info; + + TRACE_FUNCTION ("mmi_audio_player_show_info()"); + + /* + ** Create a timed dialog to display the Message "Failed" + */ + dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, callback, PLAYER_INFO_SCRN_TIMEOUT, KEY_LEFT | KEY_CLEAR | KEY_HUP); + + return info_dialog(parent, &display_info); +} + + +//Jul 18, 2005 REF: SPR 31695 xdeepadh + +/******************************************************************************* + + $Function: mmi_audio_player_play_destroy + + $Description: Destruction of an dialog + + $Returns: void + + $Arguments: win + +*******************************************************************************/ +void mmi_audio_player_play_destroy (T_MFW_HND own_window) +{ + T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data; + T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win->user; + + TRACE_FUNCTION ("mmi_audio_player_play_destroy()"); + + if (own_window == NULL) + { + TRACE_EVENT ("Error : Called with NULL Pointer"); + return; + } + + if (data) + { + /* + * Exit KEYBOARD Handle + */ + kbd_delete (data->kbd); + + /* + * Delete WIN Handler + */ + win_delete (data->info_win); + /* + * Free Memory + */ + FREE_MEMORY ((void *)data, sizeof (T_MMI_Player_Win_data)); + } +} + +//Jul 18, 2005 REF: SPR 31695 xdeepadh + +/******************************************************************************* + + $Function: mmi_audio_player_play_kbd_cb + + $Description: Keyboard event handler + + $Returns: status int + + $Arguments: window handle event, keyboard control block + +*******************************************************************************/ + +static int mmi_audio_player_play_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard) +{ + T_MFW_HND win = mfw_parent (mfw_header()); + T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; + T_MMI_Player_Win_data *data = (T_MMI_Player_Win_data *)win_data->user; + + TRACE_FUNCTION("mmi_audio_player_play_kbd_cb"); + + switch (keyboard->code) + { + + case KCD_LEFT: + + if(IsPaused == FALSE) + { + mfw_audio_player_pause(); + /* + * Clear Screen + */ + dspl_ClearAll(); + /* + * Print the information screen + */ + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPause); + /* + * Print softkeys + */ + displaySoftKeys(TxtPlayerResume, TxtStop); + IsPaused=TRUE; + } + else + { + + /* + * Clear Screen + */ + dspl_ClearAll(); + mfw_audio_player_resume(); + /* + * Print the information screen + */ + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); + + /* + * Print softkeys + */ + displaySoftKeys(TxtPlayerPause, TxtStop); + IsPaused = FALSE; + } + break; + case KCD_HUP: + case KCD_RIGHT: + mfw_audio_player_stop(); + //go back to the previous dialog + SEND_EVENT (win, PLAYER_DESTROY, 0, 0); + break; + + default: + break; + } + return MFW_EVENT_CONSUMED; +} +//Nov 16,2005 REF: DR OMAPS00049192 x0039928 +/******************************************************************************* + + $Function: mmi_audio_player_start_cb + + $Description: Mmi callback function for mp3 test application + + $Returns: void + + $Arguments: win, window handle + +*******************************************************************************/ +void mmi_audio_player_start_cb(T_MFW_HND win) +{ + mmi_audio_player_play_destroy(win); + dspl_Enable(TRUE); +} + +//Nov 16,2005 REF: DR OMAPS00049192 x0039928 +/******************************************************************************* + + $Function: mmi_audio_player_callback_init + + $Description: Initializes the mmi return callback path. + + $Returns: void + + $Arguments: window handle, callback function + +*******************************************************************************/ +//Nov 16,2005 REF: DR OMAPS00049192 x0039928 +static void mmi_audio_player_callback_init(T_MFW_HND win, void (*callback)(T_MFW_HND )) +{ + mmi_audio_player_return_path.focus_win = win; + mmi_audio_player_return_path.callback = callback; +} + +//Jul 18, 2005 REF: SPR 31695 xdeepadh +/******************************************************************************* + + $Function: mmi_audio_player_play_exec_cb + + $Description: Dialog function for Player test app dialog + + $Returns: void + + $Arguments: win, window handle event, value, parameter + +*******************************************************************************/ +void mmi_audio_player_play_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; + T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win_data->user; + T_DISPLAY_DATA display_info; + + TRACE_FUNCTION ("mmi_audio_player_play_exec_cb()"); + + + switch (event) + { + case PLAYER_INIT: + TRACE_EVENT ("PLAYER_INIT()"); + // Nov 16,2005 REF: DR OMAPS00049192 x0039928 + // Initialize the callback function to the return path. + mmi_audio_player_callback_init(win, mmi_audio_player_start_cb); + + + + // Initialize dialog + //Create keyboard handler + data->kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)mmi_audio_player_play_kbd_cb); + if (value EQ PLAYER_PLAY) + { + TRACE_EVENT ("PLAYER_PLAY()"); + + mfw_audio_player_play(); + win_show (win); + } + break; + + case PLAYER_DESTROY: + mmi_audio_player_play_destroy(win); + break; + } +} + +//Jul 18, 2005 REF: SPR 31695 xdeepadh + +/******************************************************************************* + + $Function: mmi_audio_player_play_win_cb + + $Description: Callback function for information dialog + + $Returns: void + + $Arguments: window handle event, win +*******************************************************************************/ +static int mmi_audio_player_play_win_cb (T_MFW_EVENT event, T_MFW_WIN * win) +{ + T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win->user; + + TRACE_FUNCTION ("mmi_audio_player_play_win_cb()"); + + if (data EQ NULL) + return NULL; + + switch (event) + { + case E_WIN_VISIBLE: + if (win->flags & E_WIN_VISIBLE) + { + /* + * Clear Screen + */ + dspl_ClearAll(); + /* + * Print the information screen + */ + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPlaying); + /* + * Print softkeys + */ + displaySoftKeys(TxtPlayerPause,TxtStop ); + } + break; + + default: + return 0; + } + return 1; +} + +//Jul 18, 2005 REF: SPR 31695 xdeepadh +/******************************************************************************* + + $Function: mmi_audio_player_play_create + + $Description: Creation of window + + $Returns: Dialogue info win + + $Arguments: parent win + +*******************************************************************************/ +static T_MFW_HND mmi_audio_player_play_create (T_MFW_HND parent_win) + { + T_MFW_WIN * win_data; + T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)ALLOC_MEMORY (sizeof (T_MMI_Player_Win_data)); + + TRACE_FUNCTION ("mmi_audio_player_play_create()"); + + data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_audio_player_play_win_cb); + + if (data->info_win EQ NULL) + return NULL; + + /* + * Create window handler + */ + data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_audio_player_play_exec_cb; + data->mmi_control.data = data; + data->parent_win = parent_win; + win_data = ((T_MFW_HDR *)data->info_win)->data; + win_data->user = (void *)data; + + /* + * return window handle + */ + return data->info_win; +} + +//Jul 18, 2005 REF: SPR 31695 xdeepadh +/******************************************************************************* + + $Function: mmi_audio_player_play_start + + $Description: create a new voicememo dialog + + $Returns: Dialogue info win + + $Arguments: parent win, display info + +*******************************************************************************/ +T_MFW_HND mmi_audio_player_play_start (T_MFW_HND parent_win, SHORT ID) +{ + T_MFW_HND win; + + win = mmi_audio_player_play_create (parent_win); + + + if (win NEQ NULL) + { + SEND_EVENT (win, PLAYER_INIT, ID, 0); + } + return win; +} + + +//Jul 18, 2005 REF: SPR 31695 xdeepadh + +/******************************************************************************* + + $Function: mmi_audio_player_play + + $Description: + + $Returns: + + $Arguments: + +*******************************************************************************/ +GLOBAL int mmi_audio_player_play (MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfw_parent(mfw_header()); + int max_file_number; + + TRACE_FUNCTION ("mmi_audio_player_play()"); + + //If no file is selected inform the user + //retrieve from MFW number of files loaded + max_file_number = mfw_audio_player_return_file_number(); + //In case no files have been loaded return info message + if(max_file_number == 0) + { + mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); + } + //If no file is selected inform the user + else if(audio_player_currently_playing_idx < 0) + + { + mmi_audio_player_show_info(0, TxtPlayerSelectFile, TxtNull, NULL); + + } + else + { + //create a new Player playing screen + mmi_audio_player_play_start (win, PLAYER_PLAY); + } + + return 1; +}