FreeCalypso > hg > fc-magnetite
diff src/ui3/bmi/MmiMP3Test.c @ 420:e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 21 Jan 2018 03:09:00 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ui3/bmi/MmiMP3Test.c Sun Jan 21 03:09:00 2018 +0000 @@ -0,0 +1,1500 @@ +/******************************************************************************* + + 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 + + Sep 11, 2006 DR: OMAPS00094182 xrashmic + Description: midi and mp3 files is not being populated on accessing corresponding menu, but only during bootup + Solution: Populate files on accessing the "browse files" list + + Jun 06, 2006 REF: ERT OMAPS00070659 x0039928 + Bug:MP3 RWD and FWD function - MOT + Fix: Forward and Rewind functionalities are handled. + + Jun 02,2006 REF: DR OMAPS00079746 x0039928 + Bug:MMI displays 'Playing' when trying to play a wrong file + Fix: MP3 playback error is handled. + + 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 + +#if (BOARD == 71) +#define MP3_INIT 1 +#define MP3_RETURN 2 +#endif + +//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 + +#if (BOARD == 71) +#define MP3_FORWARD_REWIND_TIME 10 +#endif + +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; +#if (BOARD == 71) + MfwHnd menu; +#endif +} 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 ; + +#if (BOARD == 71) +static T_MFW_HND optionwin; +#endif + +/******************************************************************************* + + 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 */ + (U8)-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 */ +}; + +#if (BOARD == 71) +static const MfwMnuItem Mmi_mp3_OPTItems [] = +{ + {0,0,0,(char *)TxtPlayerPause,0,(MenuFunc)M_exePause,item_flag_none}, + {0,0,0,(char *)TxtPlayerForward,0,(MenuFunc)M_exeForward,item_flag_none}, + {0,0,0,(char *)TxtPlayerRewind,0,(MenuFunc)M_exeRewind,item_flag_none} +}; + + +static const MfwMnuAttr Mmi_mp3_OPTAttrib = +{ + &SmsSend_R_OPTArea, + MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ + (U8)-1, /* use default font */ + (MfwMnuItem*)Mmi_mp3_OPTItems, /* with these items */ + sizeof(Mmi_mp3_OPTItems)/sizeof(MfwMnuItem), /* number of items */ + COLOUR_LIST_SMS, TxtNull, NULL, MNUATTRSPARE + +}; + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_win_cb + + $Description: + + $Returns: MFW_EVENT_CONSUMED + + $Arguments: event - window handle event + win - Camera window + +*******************************************************************************/ +int mmi_mp3_test_opt_win_cb (MfwEvt evt, MfwHnd win) +{ + switch (evt) + { + case MfwWinVisible: /* window is visible */ + displaySoftKeys(TxtSoftSelect,TxtSoftBack); + break; + case MfwWinFocussed: /* input focus / selected */ + case MfwWinDelete: /* window will be deleted */ + default: + return MFW_EVENT_REJECTED; + } + return MFW_EVENT_CONSUMED; + + } + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_kbd_cb + + $Description: + + $Returns: execution status + + $Arguments: e - event id + k - keyboard info +*******************************************************************************/ + +static int mmi_mp3_test_opt_kbd_cb (MfwEvt e, MfwKbd *k) + { + T_MFW_HND win = mfwParent(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; + + + 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: mmi_mp3_test_opt_mnu_cb + + $Description: Menu callback function for the Option window + + $Returns: Execution status + + $Arguments: e - event id + m - menu handle +*******************************************************************************/ + +static int mmi_mp3_test_opt_mnu_cb (MfwEvt e, MfwMnu *m) +{ + switch (e) + { + case E_MNU_ESCAPE: /* back to previous menu */ + TRACE_EVENT("E_MNU_ESCAPE"); + SEND_EVENT (optionwin, MP3_RETURN, NULL, NULL); + break; + default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */ + return MFW_EVENT_REJECTED; + } + return MFW_EVENT_CONSUMED; +} + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_destroy + + $Description: Destroy the Camera Option window + + $Returns: mfw window handle + + $Arguments: own_window - current window + +*******************************************************************************/ + +static void mmi_mp3_test_opt_destroy(MfwHnd own_window) +{ + T_MFW_WIN * win_data; + T_MMI_Player_Win_data * data; + + if (own_window) + { + win_data = ((T_MFW_HDR *)own_window)->data; + data = (T_MMI_Player_Win_data *)win_data->user; + + if (data) + { + + /* + ** Failed to start : Free Memory, and exit + */ + + if(data->kbd != NULL) + { + kbdDelete (data->kbd); + } + + if(data->menu!= NULL) + { + mnuDelete(data->menu); + } + + // Delete WIN handler + + win_delete (data->win); + + // Free Memory + + FREE_MEMORY ((void *)data, sizeof (T_MMI_Player_Win_data)); + } + else + { + TRACE_EVENT ("mmi_mp3_test_opt_destroy() called twice"); + } + } +} + + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_exec_cb + + $Description: + $Returns: None + + $Arguments: win : The pointer to the window handler, so the function can reference the + dynamic user data, if any. + event : The incoming event + value : Generic incoming Parameter, it will be 'event' dependant + parameter : Generic incoming Parameter, it will be 'event' dependant + +*******************************************************************************/ +void mmi_mp3_test_opt_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; + TRACE_FUNCTION ("mmi_mp3_test_opt_exec_cb()"); + switch (event) + { + case MP3_INIT: + /* initialization of administrative data */ + data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)mmi_mp3_test_opt_kbd_cb); + data->menu = mnuCreate(data->win,(MfwMnuAttr *)&Mmi_mp3_OPTAttrib, E_MNU_ESCAPE, (MfwCb)mmi_mp3_test_opt_mnu_cb); + mnuLang(data->menu,mainMmiLng); + + /* put the (new) dialog window on top of the window stack */ + mnuUnhide(data->menu); + winShow(data->win); + break; + + case MP3_RETURN: + mmi_mp3_test_opt_destroy(optionwin); + optionwin = NULL; + dspl_ClearAll(); + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); + displaySoftKeys(TxtSoftOptions, TxtStop); + break; + + default: + return; + } +} + + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_win_create + + $Description: + + $Returns: + + $Arguments: parent : pointer to the parent window. + +*******************************************************************************/ +T_MFW_HND mmi_mp3_test_opt_create(T_MFW_HND parent) + { + T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)ALLOC_MEMORY (sizeof (T_MMI_Player_Win_data)); + T_MFW_WIN * win; + + TRACE_FUNCTION ("mmi_mp3_test_opt_create()"); + + /* + * Create window handler + */ + + data->win = + win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_mp3_test_opt_win_cb); + if (data->win EQ NULL) + { + return NULL; + } + /* + * connect the dialog data to the MFW-window + */ + + data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_mp3_test_opt_exec_cb; + data->mmi_control.data = data; + win = ((T_MFW_HDR *)data->win)->data; + win->user = (void *)data; + data->parent_win = parent; + + /* + * return window handle + */ + + return data->win; + } + +/******************************************************************************* + + $Function: mmi_mp3_test_opt_start + + $Description: + + $Returns: + + $Arguments: parent_window -parent window handle + menuAttr - Menu attributes. + +*******************************************************************************/ + +T_MFW_HND mmi_mp3_test_opt_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr) +{ +// T_MFW_HND win; + + TRACE_FUNCTION ("mmi_mp3_test_opt_start()"); + + optionwin = (T_MFW_HND)mmi_mp3_test_opt_create (parent_window); + + if (optionwin NEQ NULL) + { + SEND_EVENT (optionwin, MP3_INIT, NULL, (void *)menuAttr); + } + return optionwin; + } + +#endif +/******************************************************************************* + + $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; + int max_file_number; + int i; + + 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"); + //Sep 11, 2006 DR: OMAPS00094182 xrashmic + mfw_audio_player_init(); + + 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); +} + +#if (BOARD == 71) +/******************************************************************************* + + $Function: mmi_audio_player_pause + + $Description: set player to pause + + $Returns: + + $Arguments: + +*******************************************************************************/ +int M_exePause (MfwMnu* m, MfwMnuItem* i) +{ + + mfw_audio_player_pause(); + IsPaused=TRUE; + mmi_mp3_test_opt_destroy(optionwin); + optionwin = NULL; + dspl_ClearAll(); + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPause); + displaySoftKeys(TxtPlayerResume, TxtStop); + + + return 1; +} + + +/******************************************************************************* + + $Function: mmi_audio_player_forward + + $Description: set player to forward + + $Returns: + + $Arguments: + +*******************************************************************************/ +int M_exeForward (MfwMnu* m, MfwMnuItem* i) +{ + + mmi_mp3_test_opt_destroy(optionwin); + optionwin = NULL; + dspl_ClearAll(); + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); + displaySoftKeys(TxtSoftOptions, TxtStop); + mfw_audio_player_forward(MP3_FORWARD_REWIND_TIME); + mmi_audio_player_show_info(0, TxtPlayerForwarding, TxtNull, NULL); + + return 1; +} + +/******************************************************************************* + + $Function: mmi_audio_player_rewind + + $Description: set player to rewind + + $Returns: + + $Arguments: + +*******************************************************************************/ +int M_exeRewind (MfwMnu* m, MfwMnuItem* i) +{ + mmi_mp3_test_opt_destroy(optionwin); + optionwin = NULL; + dspl_ClearAll(); + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); + displaySoftKeys(TxtSoftOptions, TxtStop); + mfw_audio_player_rewind(MP3_FORWARD_REWIND_TIME); + mmi_audio_player_show_info(0, TxtPlayerRewinding, TxtNull, NULL); + + return 1; +} +#endif + +/******************************************************************************* + + $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) + { +#if (BOARD == 71) + if(IsMP3On == MFW_PLAYER_AAC) + { +#endif + 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; +#if (BOARD == 71) + } + else + { + mmi_mp3_test_opt_start(data->win,(MfwMnuAttr*)&Mmi_mp3_OPTAttrib); + } +#endif + } + else + { + + /* + * Clear Screen + */ + dspl_ClearAll(); + mfw_audio_player_resume(); + /* + * Print the information screen + */ + ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); + + /* + * Print softkeys + */ +#if (BOARD == 71) + if(IsMP3On == MFW_PLAYER_AAC) +#endif + displaySoftKeys(TxtPlayerPause, TxtStop); +#if (BOARD == 71) + else + displaySoftKeys(TxtSoftOptions, TxtStop); +#endif + IsPaused = FALSE; + } + break; + case KCD_HUP: + case KCD_RIGHT: + mfw_audio_player_stop(); + IsPaused = FALSE;/*a0393213 warnings removal- == made =*/ + //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, SHORT value) +{ +// Jun 02,2006 REF: DR OMAPS00079746 x0039928 +// Fix: MP3 playback error is handled. + if (value < 0) + mmi_audio_player_show_info(0, TxtError, TxtNull, NULL); + +#if (BOARD == 71) + if(optionwin != NULL) + { mmi_mp3_test_opt_destroy(optionwin); + optionwin = NULL; + } +#endif + + IsPaused = FALSE;/*a0393213 warnings removal- '==' made '='*/ + 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, SHORT )) +{ + 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; + + 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 + */ +#if (BOARD == 71) + if(IsMP3On == MFW_PLAYER_AAC) +#endif + displaySoftKeys(TxtPlayerPause, TxtStop); +#if (BOARD == 71) + else + displaySoftKeys(TxtSoftOptions,TxtStop ); +#endif + } + 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; +} + + //Sep 11, 2006 DR: OMAPS00094182 xrashmic +/******************************************************************************* + + $Function: mmi_audio_player_Application_cb + + $Description: Callback function called on exiting the audio player appilcation + + $Returns: None + + $Arguments: parent_win : Parent window + identifier : + reason: +*******************************************************************************/ +static void mmi_audio_player_Application_cb(T_MFW_HND parent_win, UBYTE identifier, UBYTE reason) +{ + TRACE_FUNCTION("mmi_audio_player_Application_cb"); + mfw_audio_player_unpopulate_files(); +} +/******************************************************************************* + + $Function: mmi_audio_player_Application + + $Description: Launcing the audio player application menu + + $Returns: + + $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. + i : pointer to the item data from the menu. + +*******************************************************************************/ + +GLOBAL int mmi_audio_player_Application (MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win; + T_MFW_HND parent_win = mfw_parent(mfw_header()); + TRACE_FUNCTION("mmi_audio_player_Application"); + win=bookMenuStart(parent_win, AudioPlayerAppMenuAttributes(),0); + SEND_EVENT(win, ADD_CALLBACK, NULL, (void *)mmi_audio_player_Application_cb); + return MFW_EVENT_CONSUMED; +} +