?? test4lg686.c
字號:
/*===========================================================================
FILE: test4lg686.c
===========================================================================*/
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "test4lg686.h"
/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */
/*===========================================================================
FUNCTION: AEEClsCreateInstance
===========================================================================*/
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
*ppObj = NULL;
if(ClsId == AEECLSID_TEST4LG686){
if(AEEApplet_New(sizeof(CTheApp), ClsId, pIShell,po,(IApplet**)ppObj,
(AEEHANDLER)test4lg686_HandleEvent,(PFNFREEAPPDATA)test4lg686_FreeAppData)
== TRUE)
{
// Add your code here .....
if(test4lg686_InitAppData((CTheApp*)*ppObj))
return (AEE_SUCCESS);
}
}
return (EFAILED);
}
/*===========================================================================
FUNCTION test4lg686_HandleEvent
===========================================================================*/
static boolean test4lg686_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
CTheApp *pApp=(CTheApp*)pi;
switch (eCode)
{
case EVT_APP_START:
// Add your code here .....
OnAppStart(pApp,eCode,wParam,dwParam);
return(TRUE);
case EVT_KEY:
ShowMSG(pApp," ");
ClearInterface(pApp);
if(wParam == AVK_CLR)
{
if(pApp->pPopMenu)
{
IMENUCTL_Release(pApp->pPopMenu);
pApp->pPopMenu=NULL;
IMENUCTL_Redraw(pApp->pIMenuCtl);
return TRUE;
}
}
if(pApp->pPopMenu)
{
IMENUCTL_HandleEvent(pApp->pPopMenu,eCode,wParam,0);
return TRUE;
}
if(pApp->pIMenuCtl)
{
IMENUCTL_HandleEvent(pApp->pIMenuCtl,eCode,wParam,0);
return TRUE;
}
break;
case EVT_COMMAND:
OnComand(pApp,eCode,wParam,dwParam);
return TRUE;
case EVT_APP_STOP:
// Add your code here .....
return TRUE;
default:
break;
}
return FALSE;
}
//=====================================================================
static boolean test4lg686_InitAppData(CTheApp* pi)
{
CTheApp* pApp=(CTheApp*)pi;
AEEDeviceInfo di;
//get the physical screen size
ISHELL_GetDeviceInfo(pApp->a.m_pIShell,&di);
pApp->cxScreen=di.cxScreen;
pApp->cyScreen=di.cyScreen;
//get the device font height
pApp->nNormalFontHeight=IDISPLAY_GetFontMetrics(pApp->a.m_pIDisplay,AEE_FONT_NORMAL, NULL, NULL);
pApp->nBoldFontHeight=IDISPLAY_GetFontMetrics(pApp->a.m_pIDisplay,AEE_FONT_BOLD,NULL,NULL);
pApp->pIMenuCtl=NULL;
pApp->pPopMenu=NULL;
pApp->pIFile=NULL;
pApp->pIFileMgr=NULL;
pApp->pIMemStream=NULL;
pApp->pIRingerMgr=NULL;
return TRUE;
}
//=======================================================================
static void test4lg686_FreeAppData(CTheApp* pi)
{
CTheApp* pApp=(CTheApp*)pi;
if(pApp->pIMenuCtl)
{
IMENUCTL_Release(pApp->pIMenuCtl);
pApp->pIMenuCtl=NULL;
}
if(pApp->pPopMenu)
{
IMENUCTL_Release(pApp->pPopMenu);
pApp->pPopMenu=NULL;
}
ClearInterface(pApp);
return;
}
//=======================================================================
static boolean OnAppStart(CTheApp* pApp,AEEEvent eCode,uint16 wParam,uint32 dwParam)
{
BuildMainMenu(pApp);
return TRUE;
}
//=======================================================================
static boolean OnComand(CTheApp *pApp,AEEEvent eCode,uint16 wParam,uint32 dwParam)
{
switch(wParam)
{
case 100:
PlayRingerFile(pApp,"midfile.mid");
break;
case 101:
PlayRingerFile(pApp,"mmffile.mmf");
break;
case 102:
PlayRingerFile(pApp,"qcpfile.qcp");
break;
case 103:
PlayRingerFile(pApp,"pmdfile.pmd");
break;
case 104:
PlayStream(pApp,"midfile.mid");
break;
case 105:
PlayStream(pApp,"mmffile.mmf");
break;
case 106:
PlayStream(pApp,"qcpfile.qcp");
break;
case 107:
PlayStream(pApp,"pmdfile.pmd");
break;
case 108:
CreateRinger(pApp,"midfile.mid",1);
break;
case 109:
CreateRinger(pApp,"mmffile.mmf",4);
break;
case 110:
CreateRinger(pApp,"qcpfile.qcp",3);
break;
case 111:
CreateRinger(pApp,"pmdfile.pmd",11);
break;
case 112:
SetRinger(pApp,"midfile.mid",1);
break;
case 113:
SetRinger(pApp,"mmffile.mmf",4);
break;
case 114:
SetRinger(pApp,"qcpfile.qcp",3);
break;
case 115:
SetRinger(pApp,"pmdfile.pmd",11);
break;
case 116:
EnumRinger(pApp);
break;
case 201:
break;
case 202:
break;
case 203:
break;
default:
break;
}
return TRUE;
}
//==================================================================
void BuildMainMenu(CTheApp* pApp)
{
AEERect rct;
AECHAR szBuf[64];
rct.x=0;
rct.y=0;
rct.dx=pApp->cxScreen-8;
rct.dy=pApp->cyScreen-pApp->nNormalFontHeight-8;
ISHELL_CreateInstance(pApp->a.m_pIShell,
AEECLSID_MENUCTL, (void **)&pApp->pIMenuCtl);
IMENUCTL_SetRect(pApp->pIMenuCtl, &rct);
STR_TO_WSTR("1.Play mid file", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,100,szBuf,0);
STR_TO_WSTR("2.Play mmf file", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,101,szBuf,0);
STR_TO_WSTR("3.Play qcp file", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,102,szBuf,0);
STR_TO_WSTR("4.Play pmd file", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,103,szBuf,0);
STR_TO_WSTR("5.Play stream mid", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,104,szBuf,0);
STR_TO_WSTR("6.Play stream mmf", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,105,szBuf,0);
STR_TO_WSTR("7.Play stream qcp", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,106,szBuf,0);
STR_TO_WSTR("8.Play stream pmd", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,107,szBuf,0);
STR_TO_WSTR("9.Create with mid", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,108,szBuf,0);
STR_TO_WSTR("10.Create with mmf", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,109,szBuf,0);
STR_TO_WSTR("11.Create with qcp", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,110,szBuf,0);
STR_TO_WSTR("12.Create with pmd", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,111,szBuf,0);
STR_TO_WSTR("13.Set with mid", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,112,szBuf,0);
STR_TO_WSTR("14.Set with mmf", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,113,szBuf,0);
STR_TO_WSTR("15.Set with qcp", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,114,szBuf,0);
STR_TO_WSTR("16.Set with pmd", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,115,szBuf,0);
STR_TO_WSTR("17.Enum Ringer", szBuf, sizeof(szBuf));
IMENUCTL_AddItem(pApp->pIMenuCtl,0,0,116,szBuf,0);
IMENUCTL_SetActive(pApp->pIMenuCtl,TRUE);
return;
}
//==================================================================
//===================================================================
void PlayRingerFile(CTheApp* pApp,const char *filename)
{
ClearInterface(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_RINGERMGR,
(void **)(&pApp->pIRingerMgr));
IRINGERMGR_PlayFile(pApp->pIRingerMgr,filename,0);
return;
}
//====================================================================
void PlayStream(CTheApp* pApp,const char *filename)
{
FileInfo fi;
ClearInterface(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_RINGERMGR,
(void **)&pApp->pIRingerMgr);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_FILEMGR,
(void **)(&pApp->pIFileMgr));
pApp->pIFile=IFILEMGR_OpenFile(pApp->pIFileMgr,filename, _OFM_READ);
IFILE_GetInfo(pApp->pIFile, &fi);
pApp->pBuf=(byte *) MALLOC(fi.dwSize);
IFILE_Read(pApp->pIFile, (void *)pApp->pBuf, fi.dwSize);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_MEMASTREAM,
(void **)(&pApp->pIMemStream));
IMEMASTREAM_Set(pApp->pIMemStream,pApp->pBuf,fi.dwSize, 0, 0);
IRINGERMGR_PlayStream(pApp->pIRingerMgr, (IAStream*)pApp->pIMemStream,0);
return;
}
//====================================================================
void CreateRinger(CTheApp* pApp,const char *filename,AEESoundPlayerFile format)
{
FileInfo fi;
AECHAR rngName[20]={'\0'};
AEERingerID ringerId;
ClearInterface(pApp);
STR_TO_WSTR(filename, rngName, sizeof(rngName));
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_RINGERMGR,
(void **)&pApp->pIRingerMgr);
//ringerId=IRINGERMGR_GetRingerID(pApp->pIRingerMgr,rngName);
ringerId=GetRingerId(pApp,rngName);
if(ringerId!=AEE_RINGER_ID_NONE)
{
if(SUCCESS!=IRINGERMGR_Remove(pApp->pIRingerMgr, ringerId))
{
ShowMSG(pApp,"Not remove");
return;
}
}
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_FILEMGR,
(void **)(&pApp->pIFileMgr));
pApp->pIFile=IFILEMGR_OpenFile(pApp->pIFileMgr,filename, _OFM_READ);
IFILE_GetInfo(pApp->pIFile, &fi);
pApp->pBuf=(byte *) MALLOC(fi.dwSize+1);
MEMSET(pApp->pBuf,0,fi.dwSize+1);
IFILE_Read(pApp->pIFile, (void *)pApp->pBuf, fi.dwSize);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_MEMASTREAM,
(void **)(&pApp->pIMemStream));
IMEMASTREAM_Set(pApp->pIMemStream,pApp->pBuf,fi.dwSize, 0, 0);
if(SUCCESS==IRINGERMGR_Create(pApp->pIRingerMgr,(AECHAR*)rngName, format,
(IAStream*)pApp->pIMemStream))
{
ShowMSG(pApp,"Create Ok");
}
else
{
ShowMSG(pApp,"Create Failed");
}
return;
}
//===================================================================
AEERingerID GetRingerId(CTheApp *pApp,AECHAR* rngName)
{
AEERingerInfo ri;
AEERingerID ringerId;
WSTRUPPER(rngName);
ringerId=AEE_RINGER_ID_NONE;
if(IRINGERMGR_EnumRingerInit(pApp->pIRingerMgr)==SUCCESS)
{
while(IRINGERMGR_EnumNextRinger(pApp->pIRingerMgr,&ri)==TRUE)
{
if (!ri.bReadOnly && STRLEN(ri.szFile) > 0)//skip phone's default tones -- they are readonly
{
WSTRUPPER(ri.szName);
if(WSTRCMP(rngName,ri.szName) ==0)
{
ringerId = ri.id;
break;
}
}
}
}
return ringerId;
}
//===================================================================
void SetRinger(CTheApp* pApp,const char *filename,AEESoundPlayerFile format)
{
AECHAR rngName[20]={'\0'};
AEERingerID ringerId ;
CreateRinger(pApp,filename,format);
ClearInterface(pApp);
STR_TO_WSTR(filename, rngName, sizeof(rngName));
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_RINGERMGR,
(void **)&pApp->pIRingerMgr);
//ringerId = IRINGERMGR_GetRingerID(pApp->pIRingerMgr,filename);
ringerId=GetRingerId(pApp,rngName);
if(ringerId==AEE_RINGER_ID_NONE)
{
ShowMSG(pApp,"Have no ringer");
return;
}
//have to modify the second para to 1 sometimes.
//if(SUCCESS==IRINGERMGR_SetRinger(pApp->pIRingerMgr,1, ringerId))
if(SUCCESS==IRINGERMGR_SetRinger(pApp->pIRingerMgr,0, ringerId))
{
ShowMSG(pApp,"Set Ok");
}
else
{
ShowMSG(pApp,"Set failed");
}
return;
}
//====================================================================
void EnumRinger(CTheApp* pApp)
{
uint16 i=200;
AEERingerInfo ri;
AEERect rct;
rct.x=pApp->nNormalFontHeight;
rct.y=pApp->nNormalFontHeight;
rct.dx=pApp->cxScreen-pApp->nNormalFontHeight-pApp->nNormalFontHeight;
rct.dy=pApp->nNormalFontHeight*5;
if(pApp->pPopMenu)
{
IMENUCTL_Release(pApp->pPopMenu);
pApp->pPopMenu=NULL;
}
ISHELL_CreateInstance(pApp->a.m_pIShell,
AEECLSID_MENUCTL, (void **)&pApp->pPopMenu);
IMENUCTL_SetRect(pApp->pPopMenu, &rct);
ClearInterface(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_RINGERMGR,
(void **)&pApp->pIRingerMgr);
if(IRINGERMGR_EnumRingerInit(pApp->pIRingerMgr)==SUCCESS)
{
while(IRINGERMGR_EnumNextRinger(pApp->pIRingerMgr,&ri)==TRUE)
{
if (!ri.bReadOnly && STRLEN(ri.szFile) > 0)//skip phone's default tones -- they are readonly
{
IMENUCTL_AddItem(pApp->pPopMenu,NULL,NULL,
i, (AECHAR*)ri.szName, 0);
i++;
}
}
}
IMENUCTL_SetActive(pApp->pPopMenu,TRUE);
return;
}
//====================================================================
void ClearInterface(CTheApp* pApp)
{
if(pApp->pIRingerMgr)
{
IRINGERMGR_RegisterNotify(pApp->pIRingerMgr,NULL,NULL);
IRINGERMGR_Stop(pApp->pIRingerMgr);
IRINGERMGR_Release(pApp->pIRingerMgr);
pApp->pIRingerMgr=NULL;
}
if(pApp->pIFile)
{
IFILE_Release(pApp->pIFile);
pApp->pIFile=NULL;
}
if(pApp->pIFileMgr)
{
IFILEMGR_Release(pApp->pIFileMgr);
pApp->pIFileMgr=NULL;
}
if(pApp->pIMemStream)
{
IMEMASTREAM_Release(pApp->pIMemStream);
pApp->pIMemStream=NULL;
}
return;
}
//==================================================================
void ShowMSG(CTheApp* pApp,const char* pszStr)
{
AECHAR szBuf[128];
STR_TO_WSTR((char*)pszStr,szBuf,sizeof(szBuf));
IDISPLAY_DrawText(pApp->a.m_pIDisplay,AEE_FONT_NORMAL,szBuf,-1,0,
pApp->cyScreen-pApp->nNormalFontHeight-4,
NULL,IDF_ALIGN_CENTER);
IDISPLAY_Update(pApp->a.m_pIDisplay);
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -