⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 media.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	if (m_pObject)
	{
		m_pObject->Resume();
	}
	else
	{
		if(m_nState==STATE_ERRO)
		{
			if(m_pIStatic)
			{
				ISTATIC_SetActive(m_pIStatic,true);
				ISTATIC_Redraw(m_pIStatic);
			}
		}
		else
		{
			ClearScreen();
			if(m_pMenu)
				IMENUCTL_SetActive(m_pMenu, TRUE);	
			if (((m_nType & 0xffff) == CONTENT_SOUND) && (m_nState == STATE_CONTENT))
			{
				if (!m_bPlayResume && HIDE_MUSIC_BUTTON)
				{
					m_bPlayResume = TRUE;
					m_bResum = FALSE;
					m_nState=STATE_OPTION;					
				}
				else
				{
					ISHELL_PostEvent(m_pApplet->m_pIShell, CLASS_ID, EVT_CREATEMEDIA, 0, 0);
					ShowPicCallback(this);				
				}
			}
/*
			if(m_pMedia)
			{
				IMEDIA_RegisterNotify(m_pMedia, MediaNotify, this);
				if(m_bPlayRec)
					IMEDIA_Resume(m_pMedia);
				ShowPicCallback(this);
			}
*/
			Display();	
		}
	
	}
	m_bResum = FALSE;
}

void CMedia::ReadDoc()
{
	char szFile[256];
	int nLen;

	MEMSET(szFile, 0, 256);
	if(!GetFavoriteByIndex(m_pApplet->m_pIShell,&m_pFileMgr, m_nID, szFile))
	{
/*
		AEERect rcScreen;
		char szBuf[512];
        AECHAR * szText = NULL;
		
		SPRINTF(szBuf, "ID = %d; File = %s", m_nID, szFile);
		StrToWstr( szBuf, &szText);

		rcScreen.x=0;
		rcScreen.y=0;
		rcScreen.dx=m_pDevice->cxScreen;
		rcScreen.dy=m_pDevice->cyScreen;
		
		ClearScreen();
		IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);

		if (m_pIStatic == NULL)
		{
			ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_STATIC, (void * *)&m_pIStatic);
		}
		ISTATIC_SetRect(m_pIStatic, &rcScreen);
		PrintString2(m_pIStatic, m_szName, szText, TRUE);
		if (szText) FREEIF(szText);
*/
		
		m_nState = STATE_ERRO;		
		return;		//erro
	}
	nLen = STRLEN(szFile)+1;
	FREEIF(m_szFileName);
	m_szFileName = (char*)MALLOC(nLen);
	STRCPY(m_szFileName,szFile);
	m_nState = STATE_OPTION;
	Display();
}

void CMedia::ShowPic()
{
	long xoff = 0, yoff = 0;
	IImage * pImage;
	AEEImageInfo info;
	if(m_nPic < TIME_MUSICFLASH)
	{
		pImage = m_imgMusic[0];	
	}
	else if(m_nPic < TIME_MUSICFLASH * 2)
	{
		pImage = m_imgMusic[1];	
	}
	else if(m_nPic < TIME_MUSICFLASH * 3)
	{
		pImage = m_imgMusic[2];	
	}

	m_nPic++;
 	if (m_nPic > (TIME_MUSICFLASH * 3 - 1))
		m_nPic = 0;

	if(pImage)
	{
		IIMAGE_GetInfo(pImage, &info);

		xoff = (m_pDevice->cxScreen - info.cx)/2;
		yoff = (m_pDevice->cyScreen - info.cy)/2;
		if (yoff < PLAYICON_HEIGHT) yoff = PLAYICON_HEIGHT;
		IIMAGE_Draw(pImage,xoff,yoff);

		yoff += info.cy;
//		IDISPLAY_Update(m_pApplet->m_pIDisplay);
	}

	if (!HIDE_MUSIC_BUTTON)
	{
		if (m_nButtonIndex >=0 && m_nButtonIndex < m_nButtonCount)
		{
			int i;

			// 图标
			for (i = 0; i < m_nButtonCount; i++)
			{
				if (i == m_nButtonIndex)
					pImage = m_icon[i * 2 + 1];
				else
					pImage = m_icon[i * 2];

				if(pImage)
				{
					IIMAGE_GetInfo(pImage, &info);
					IIMAGE_Draw(pImage, xoff, yoff);
					xoff += info.cx;
				}
			}
		}
	}
	
	IDISPLAY_Update(m_pApplet->m_pIDisplay);

}

void CMedia::ShowPicCallback(CMedia* pMe)
{
	ISHELL_SetTimer(pMe->m_pApplet->m_pIShell, TIMER_SPEED, (PFNNOTIFY)(ShowPicCallback), pMe);	
	pMe->ShowPic();
}

void CMedia::CancelShowPicCallback()
{
	ISHELL_CancelTimer(m_pApplet->m_pIShell, (PFNNOTIFY)(ShowPicCallback), this);
}

void CMedia::SetRinger()
{
	AEERingerID ringerId ;
	int16 nResID;
   
	if (CreateRinger() == 1)
	{	
		
		ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_RINGERMGR, (void **)&m_pIRingerMgr); 
		if(m_pIRingerMgr == NULL)
		{
			nResID = IDS_SETRINGER_ERROR;
		}
		else
		{
			char szFile[255];
			char szExt[255];
			long nLen = 0;
		
			// 获取文件名
			GetFileName(szFile, m_szFileName);
		//	SPRINTF( szFile, "wxfz%d",m_nID); 
		//	STRCPY(szFile,m_szFileName);
		//	WSTR_TO_STR(m_szName, szFile, 255);
			switch(m_nType & 0xffff0000)
			{
			case SOUND_MID:
				STRCPY(szExt, ".mid");
				break;
			case SOUND_MP3:
				STRCPY(szExt, ".mp3");
				break;
			default:
				STRCPY(szExt, "");
				break;
			}
			STRCAT(szFile, szExt);
			
			// 设置铃声
			ringerId =	IRINGERMGR_GetRingerID(m_pIRingerMgr, szFile);
			if (IRINGERMGR_SetRinger(m_pIRingerMgr, AEE_RINGER_CATEGORY_ALL, ringerId) == SUCCESS)
			//if (IRINGERMGR_SetRinger(m_pIRingerMgr, 1, ringerId) == SUCCESS)
			{
				nResID = IDS_SETRINGER_SUCCESS;
			}
			else
			{
				nResID = IDS_SETRINGER_ERROR;
			}
			
			CleanRingerPtr();
		}
		//nResID = IDS_SETRINGER_SUCCESS;
	}
	else
	{
		nResID = IDS_CREATERINGER_ERROR;
	}

	// 显示提示信息
	{
		AEERect rcScreen;
		rcScreen.x=0;
		rcScreen.y=0;
		rcScreen.dx=m_pDevice->cxScreen;
		rcScreen.dy=m_pDevice->cyScreen;
		ClearScreen();
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, nResID);
		m_nState=STATE_ERRO;
	}
}

int CMedia::CreateRinger()
{
	FileInfo fi;
	IFile *f;   	
	AEESoundPlayerFile format;
	
	if (RECOVER_FIRST_RINGER)
		CheckMaxRinger();

	// Create IRingerMgr interface object. This step needs to be done only
	// if the IRingerMgr interface object have not already been created. 
	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_RINGERMGR, (void **)&m_pIRingerMgr); 
	if(m_pIRingerMgr == NULL)
	{
		return 0;
	}

	// Create an instance of IFileMgr so we can access the  file
	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_FILEMGR, (void **)(&m_pFileMgr));
	if (NULL == m_pFileMgr)
	{
		return 0;
	}

	if (NULL == (f = IFILEMGR_OpenFile(m_pFileMgr, m_szFileName, _OFM_READ)))
	{
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		CleanRingerPtr();
		return 0;
	}

	// Determine the size of the bitmap file and allocate memory
	// to store its contents
	IFILE_GetInfo(f, &fi);
	char* buf;
	buf = (char*)MALLOC(fi.dwSize);

	// Read the contents of the ringer file into the
	// area allocated in memory for it
	if (IFILE_Read(f, buf, fi.dwSize) == 0)
	{
		FREEIF(buf);
		buf = NULL;
		IFILE_Release(f);
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		CleanRingerPtr();
		return 0;
	}

	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_MEMASTREAM, (void **)(&m_pMemStream));
	if (NULL == m_pMemStream)
	{
		FREEIF(buf);
		buf = NULL;
		IFILE_Release(f);
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		CleanRingerPtr();
		return 0;
	}

	IMEMASTREAM_Set(m_pMemStream, (byte*)buf, fi.dwSize, 0, 0);

	switch(m_nType & 0xffff0000) 
	{
	case SOUND_MID:
		format = AEE_SOUNDPLAYER_FILE_MIDI;
		break;
	case SOUND_MP3:
		format = AEE_SOUNDPLAYER_FILE_MP3;
		break;
	default:
		format =  AEE_SOUNDPLAYER_FILE_UNKNOWN;
		break;
	}

	AECHAR szwName[MAX_RINGER_NAME];	
	char szName[MAX_RINGER_NAME];
	// 获取文件名
	GetFileName(szName, m_szFileName);
//	SPRINTF( szName, "wxfz%d",m_nID);
	STRTOWSTR(szName, szwName, sizeof(szwName));
    if (SUCCESS == IRINGERMGR_Create(m_pIRingerMgr, szwName,  format, (IAStream*)m_pMemStream))
	{
//		FREEIF(buf);
		buf = NULL;
		IFILE_Release(f);
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		CleanRingerPtr();
		return 1;
	}

//	FREEIF(buf);
	buf = NULL;
	IFILE_Release(f);
	IFILEMGR_Release(m_pFileMgr);
	m_pFileMgr = NULL;
	CleanRingerPtr();
	return 0;
}

// 清除铃声变量
void CMedia::CleanRingerPtr()
{
	if (m_pIRingerMgr != NULL)
	{
		// Deregister Notify so that 
		IRINGERMGR_RegisterNotify (m_pIRingerMgr, NULL, NULL);
		// Stop any songs being played at this time
		IRINGERMGR_Stop (m_pIRingerMgr);
		IRINGERMGR_Release (m_pIRingerMgr);
		m_pIRingerMgr = NULL;
	}
	
	if(m_pMemStream != NULL)
	{
		IMEMASTREAM_Release(m_pMemStream);
		m_pMemStream = NULL;
	}
}

void CMedia::SetWallPaper()
{	

	if (!CheckFileSpace(m_pApplet->m_pIShell))
	{
		AEERect rcScreen;
		rcScreen.x=0;
		rcScreen.y=0;
		rcScreen.dx=m_pDevice->cxScreen;
		rcScreen.dy=m_pDevice->cyScreen;
		ClearScreen();
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_ERR_SPACE);
		m_nState=STATE_ERRO;
		return;
	}
	
	char filename[256];
	STRCPY( filename, AEE_SHARED_DIR );
	STRCAT( filename, "/" );
	STRCAT( filename, m_szFileName );
	AEERect rcScreen;
	rcScreen.x=0;
	rcScreen.y=0;
	rcScreen.dx=m_pDevice->cxScreen;
	rcScreen.dy=m_pDevice->cyScreen;
	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_FILEMGR, (void **)(&m_pFileMgr));
	if (NULL == m_pFileMgr)
	{
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_SETWALLPAPER_ERRO);
		m_nState=STATE_ERRO;
		return ;
	}
	IFile* f;
	if (NULL == (f = IFILEMGR_OpenFile( m_pFileMgr, filename, _OFM_CREATE )))
	{
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_SETWALLPAPER_ERRO);
		m_nState=STATE_ERRO;
		return ;
	}
	IFile* fPic;
	if (NULL == (fPic = IFILEMGR_OpenFile( m_pFileMgr, m_szFileName, _OFM_READ )))
	{
		IFILEMGR_Release(m_pFileMgr);
		IFILE_Release(f);
		m_pFileMgr = NULL;
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_SETWALLPAPER_ERRO);
		m_nState=STATE_ERRO;
		return ;
	}
	FileInfo pInfo;
	IFILE_GetInfo(fPic,&pInfo);
	// 以1024字节为单位,逐步写入文件信息
	int cstLength = 1024;
	long nLen = pInfo.dwSize;
	long i = 0, nBuffer = cstLength;
	char szBuffer[1024];					
	while (i < nLen)
	{
		if ((nLen - i) > cstLength)
			nBuffer = cstLength;
		else
			nBuffer = nLen - i;
		IFILE_Read(fPic,szBuffer,nBuffer);						
		IFILE_Write (f, szBuffer, nBuffer);
		
		i += nBuffer;
	}
	IFILEMGR_Release(m_pFileMgr);
	IFILE_Release(f);
	IFILE_Release(fPic);
	m_pFileMgr = NULL;
	ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_SETWALLPAPER_SUCCESS);
	m_nState=STATE_ERRO;
	
}

boolean CMedia::IsPlay()
{
	boolean  bChg;
	if(m_pMedia==NULL) return FALSE;
	int      nState = IMEDIA_GetState(m_pMedia, &bChg);
	
	if (bChg)
		return FALSE;
	
	return (nState == MM_STATE_PLAY || nState == MM_STATE_RECORD);
}

void CMedia::RemoveRinger()
{
	// 获取文件名
	AEERingerID id;
	char szName[MAX_RINGER_NAME];
	GetFileName(szName, m_szFileName);
//	SPRINTF( szName, "wxfz%d",m_nID);

	switch(m_nType & 0xffff0000) 
	{
	case SOUND_MID:
		STRCAT(szName, ".mid");
		break;
	case SOUND_MP3:
		STRCAT(szName, ".mp3");
		break;
	default:
		break;
	}
	
	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_RINGERMGR, (void **)&m_pIRingerMgr); 
	if(m_pIRingerMgr == NULL)
	{
		return;
	}

	id = IRINGERMGR_GetRingerID(m_pIRingerMgr, szName);		

	if (id != AEE_RINGER_ID_NONE)
	{
		IRINGERMGR_Remove(m_pIRingerMgr, id);
	}

//	IRINGERMGR_Release (m_pIRingerMgr);
//	m_pIRingerMgr = NULL;
 	CleanRingerPtr();
}

void CMedia::GetFileName(char * szName, char * szFile)
{
	char * szStart, * szEnd;

	if (szName == NULL) return;
	if (szFile == NULL) return;
	szName[0] = 0x00;
	
	// 先找到路径后面的第一个文件名字符
	szStart = szFile;
	while(TRUE)
	{
		szEnd = STRCHR(szStart, '\\');
		if (szEnd == NULL) break;

		szStart = szEnd + 1;
	}
	if (szStart == NULL)
		szStart = szFile;

	STRCPY(szName, szStart);

	// 清除后缀名的信息
	szStart = STRCHR(szName, '.');
	if (szStart) szStart[0] = 0x00;
}


void CMedia::RemoveWallPaper()
{
	char filename[256];
	STRCPY( filename, AEE_SHARED_DIR );
	STRCAT( filename, "/" );
	STRCAT( filename, m_szFileName );

	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_FILEMGR, (void **)(&m_pFileMgr));
	if (NULL == m_pFileMgr)
	{
		return;
	}
	IFILEMGR_Remove(m_pFileMgr, filename);
	IFILEMGR_Release(m_pFileMgr);
	m_pFileMgr = NULL;	

}

// 显示错误提示信息
void CMedia::ShowError(int16 nResId)
{
	AEERect rcScreen;
	rcScreen.x=0;
	rcScreen.y=0;
	rcScreen.dx=m_pDevice->cxScreen;
	rcScreen.dy=m_pDevice->cyScreen;

	ClearScreen();
	ReleaseMedia();
	CancelShowPicCallback();

	IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);

	ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, nResId);
	m_nState=STATE_ERRO;
}

// 如果铃声已满则删除第一个铃声,准备覆盖之
void CMedia::CheckMaxRinger()
{
	ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_RINGERMGR, (void **)&m_pIRingerMgr); 
	if(m_pIRingerMgr == NULL)
	{
		return;
	}
	
	//if (IRINGERMGR_EnumRingerInit(m_pIRingerMgr))
	{
		AEERingerID id;
		AEERingerInfo pi;
		int nCount = 0;
		IRINGERMGR_EnumRingerInit(m_pIRingerMgr);
		while (IRINGERMGR_EnumNextRinger(m_pIRingerMgr, &pi))
		{
			//if (id < 0)
				id = pi.id;
			nCount++;
			
		}
		
		//if (RINGER_COUNT == nCount)
		{
			IRINGERMGR_Remove(m_pIRingerMgr, id);
		}
	}
	
	CleanRingerPtr();	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -