📄 musicmain.c
字号:
{
msg_t msg;
Music_CreateVolumnWindow(MusicTaskVars);
SLIDER_Dec(MusicTaskVars->SliderWin);
MusicTaskVars->CurVolumn = SLIDER_GetValue(MusicTaskVars->SliderWin);
msg.type = MS_SetVolume;
msg.msg.data[0] = MusicTaskVars->CurVolumn;
MYOSQPost(MP3_Player_In,&msg);
}
void Music_SelectKeyResolve(muisc_vars *MusicTaskVars)
{
MusicTaskVars->RedrawFlag = TRUE;
if(Music_SelectVolumn(MusicTaskVars))
return;
Music_SelectSong(MusicTaskVars);
}
bool Music_SelectVolumn(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->VolumWin)
{
MusicTaskVars->CurVolumn = SLIDER_GetValue(MusicTaskVars->SliderWin);
Music_DeleteVolumnWindow(MusicTaskVars);
return TRUE;
}
return FALSE;
}
void Music_RedrawSongInfo(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->PlayWin)
{
GUI_RECT rClient;
GET_NOWTIME_RECT(rClient);
WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
GET_TOTALTIME_RECT(rClient);
WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
GET_BITRATE_RECT1(rClient);
WM_InvalidateRect(MusicTaskVars->PlayWin, &rClient);
}
}
void Music_CreateVolumnWindow(muisc_vars *MusicTaskVars)
{
if(!MusicTaskVars->VolumWin)// && MusicTaskVars->music_selectflag
{
MusicTaskVars->VolumWin= WM_CreateWindow(5,20,80,20,WM_CF_SHOW,&cbCallBack_MusicSetVolumn,0);
MusicTaskVars->SliderWin= SLIDER_Create(2,2,76,16,MusicTaskVars->VolumWin,0,WM_CF_SHOW,0);
SLIDER_SetRange(MusicTaskVars->SliderWin,0,31);
SLIDER_SetValue(MusicTaskVars->SliderWin,MusicTaskVars->CurVolumn);
}
}
void Music_DeleteVolumnWindow(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->VolumWin)
{
WM_DeleteWindow(MusicTaskVars->VolumWin);
MusicTaskVars->VolumWin = 0;
}
}
void Music_CreatePlayingWindow(muisc_vars *MusicTaskVars)
{
if(!MusicTaskVars->PlayWin)
{
MusicTaskVars->RedrawFlag = TRUE;
if(MusicTaskVars->fileno != MusicTaskVars->g_music_var->infomation.fileno)
{
MusicTaskVars->fileno = MusicTaskVars->g_music_var->infomation.fileno;
api_GetFileNameByNo(MusicTaskVars->g_music_var->infomation.FifoCntNo, MusicTaskVars->g_music_var->infomation.filename, MusicTaskVars->g_music_var->infomation.fileno);
}
MusicTaskVars->PlayWin = WM_CreateWindow(20,20,74,42,WM_CF_SHOW,&cbCallBack_MusicPlayingWindow,0);
}
}
void Music_DeletePlayingWindow(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->PlayWin)
{
WM_DeleteWindow(MusicTaskVars->PlayWin);
MusicTaskVars->PlayWin = 0;
}
}
void cbCallBack_MusicSetVolumn(WM_MESSAGE *pMsg)
{
GUI_RECT rClient;
GUI_COLOR color;
switch(pMsg->MsgId)
{
case WM_PAINT:
GUI_SetBkColor(GUI_LIGHTRED);
GUI_Clear();
GUI_GetClientRect(&rClient);
color = GUI_GetColor();
GUI_SetColor(GUI_WHITE);
GUI_DrawRectEx(&rClient);
GUI_SetColor(color);
break;
}
WM_DefaultProc(pMsg);
}
void cbCallBack_MusicPlayingWindow(WM_MESSAGE* pMsg)
{
char string[11];
GUI_RECT rClient;
music_t *g_music_var;
GUI_COLOR color;
muisc_vars *MusicTaskVars;
switch (pMsg->MsgId)
{
case WM_PAINT:
MusicTaskVars = (muisc_vars *)OSGetTaskOwnPtr(MUSIC_FACE_ID);
g_music_var = (music_t *)OSGetTaskOwnPtr(PLAYER_ENGINE_ID);
GUI_SetBkColor(GUI_LIGHTBLUE);
GUI_SetColor(GUI_WHITE);
if(MusicTaskVars->RedrawFlag)
{
MusicTaskVars->RedrawFlag = FALSE;
GUI_SetBkColor(GUI_LIGHTBLUE);
GUI_Clear();
GUI_GetClientRect(&rClient);
color = GUI_GetColor();
GUI_SetColor(GUI_WHITE);
GUI_DrawRectEx(&rClient);
GUI_SetBkColor(GUI_LIGHTBLUE);
GUI_SetColor(GUI_WHITE);
GET_FILENAME_RECT(rClient);
GUI_DispStringInRect(g_music_var->infomation.filename, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
GET_BITRATE_RECT2(rClient);
GUI_DispStringInRect((char *)MusicTaskVars->point[1]+18, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
}
GET_BITRATE_RECT1(rClient);
GUI_DispStringInRect(ConvertBitrateToString(g_music_var->cur_info.BitRate,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
GET_TOTALTIME_RECT(rClient);
GUI_DispStringInRect(ConvertTimeToString(g_music_var->dec_info.total_time,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
GET_NOWTIME_RECT(rClient);
GUI_DispStringInRect(ConvertTimeToString(g_music_var->cur_info.NowTime,string), &rClient, GUI_TA_LEFT | GUI_TA_TOP);
GET_MODE_RECT(rClient);
if(g_music_var->status <= music_NormalPlay)
GUI_DispStringInRect((char *)MusicTaskVars->point[1]+8, &rClient, GUI_TA_LEFT | GUI_TA_TOP);
else if(g_music_var->status >= music_WaitSetA && g_music_var->status <= music_ABLoopPlay)
{
GUI_DispStringInRect((char *)MusicTaskVars->point[1], &rClient, GUI_TA_LEFT | GUI_TA_TOP);
if(g_music_var->status == music_WaitSetA)
{
MusicTaskVars->ABFlashFlag ^= 1;
if(MusicTaskVars->ABFlashFlag)
GUI_DispStringAt((char *)MusicTaskVars->point[1]+15 , rClient.x0 + 22, rClient.y0);
}
}
break;
}
WM_DefaultProc(pMsg);
}
char *ConvertTimeToString(full_time_t time,char *string)
{
if(time.hour !=0)
{
string[0] = time.hour /10 +'0';
string[1] = time.hour %10 +'0';
string[2] = ':';
string[3] = time.minute /10 + '0';
string[4] = time.minute %10 + '0';
}
else
{
string[0] = time.minute /10 +'0';
string[1] = time.minute %10 +'0';
string[2] = ':';
string[3] = time.second /10 + '0';
string[4] = time.second %10 + '0';
}
string[5] = 0;
return string;
}
char *ConvertBitrateToString(BYTE bitrate[],char *string)
{
if(bitrate[0] | bitrate[1] | bitrate[2])
{
string[0] = bitrate[0];
string[1] = bitrate[1];
string[2] = bitrate[2];
}
else
{
string[0] = '0';
string[1] = '0';
string[2] = '0';
}
string[3] = 0;
return string;
}
void cbCallBack_MusicStopSongWindow(WM_MESSAGE *pMsg)
{
msg_t msg;
switch(pMsg->MsgId)
{
case WM_KEY:
switch(((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)
{
case 0:
msg.type = MSG_KEY;
msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Up;
MYOSQPost(MP3_Player_Out,&msg);
return;
case 1:
msg.type = MSG_KEY;
msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Down;
MYOSQPost(MP3_Player_Out,&msg);
return;
case 2:
msg.type = MSG_KEY;
msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Long;
MYOSQPost(MP3_Player_Out,&msg);
return;
case 3:
msg.type = MSG_KEY;
msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Hold;
MYOSQPost(MP3_Player_Out,&msg);
return;
case 4:
System_DealMessage(pMsg);
return;
}
}
}
void Music_ShowSelectWindow(muisc_vars *MusicTaskVars)
{
//获得歌曲列表,存入ListMusicBox
char **ListMusicBox = (GUI_ConstString *)MusicTaskVars->point[0];
GUI_SetLanguageMode(0);
MusicTaskVars->ListWin = LISTBOX_Create(ListMusicBox, 0, 0, 0, 0, cbCallBack_MusicStopSongWindow,WM_CF_SHOW);
LISTBOX_SetBackColor(MusicTaskVars->ListWin, 0, GUI_BLUE);
LISTBOX_SetBackColor(MusicTaskVars->ListWin, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(MusicTaskVars->ListWin, 0, GUI_WHITE);
LISTBOX_SetTextColor(MusicTaskVars->ListWin, 1, GUI_BLACK);
LISTBOX_SetFont(MusicTaskVars->ListWin, &GUI_Font13B_1);
WM_SetFocus(MusicTaskVars->ListWin);
}
void Music_DeleteAllWindow(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->ListWin != 0)
WM_DeleteWindow(MusicTaskVars->ListWin);
Music_DeleteVolumnWindow(MusicTaskVars);
Music_DeletePlayingWindow(MusicTaskVars);
//MusicTaskVars->music_selectflag = FALSE;
}
#ifdef WIN32
bool MusicTaskExistFlag = FALSE;
#endif
void MusicTaskCreate()
{
int result;
msg_t msg_send;
//IF MUSICTASK IS NOT EXIST THEN
if(!MusicTaskDetect())
{
//OS_ENTER_CRITICAL(); ///////////////////////////////////////////////////////
#ifdef WIN32
CREATE_TASK(&aTCB[4], "MusicMenu", MusicTask, 6, Stack_4);
#else
if( (result = PlayerEngineDetect()) <= 0)
{
if( result == -1 )
{
msg_send.type = MS_END;
MYOSQPost(Engine_In, &msg_send);
do
{
OSTimeDly(5);
}while(PlayerEngineDetect() != 0);
}
OSTaskCreate((void(*)(void *))(long)PlayerEngine, (void *)0x0000,
(void *)PLAYER_ENGINE_SPACE, PLAYER_ENGINE_PRIO, PLAYER_ENGINE_ID);
for(;MP3_Player_Out == 0;)
OSTimeDly(1);
}
OSTaskCreate((void(*)(void *))(long)MusicTask, (void *)0x0000,
(void *)MUSIC_FACE_SPACE, MUSIC_FACE_PRIO, MUSIC_FACE_ID);
#endif
//OS_EXIT_CRITICAL();/////////////////////////////////////////////////////////////////
}
//ELSE THEN DO NOTHING
else
{
msg_t msg;
msg.type = MSG_REBUILDWIN;
MYOSQPost(MP3_Player_Out,&msg);
}
}
void MusicTaskDelete()
{
for(;;)
{
output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
OSTaskDel(OS_PRIO_SELF);
}
}
bool MusicTaskDetect()
{
#ifndef WIN32
OS_ENTER_CRITICAL();
if(OSTCBPrioTbl[MUSIC_FACE_PRIO] != (OS_TCB *)0)
{
OS_EXIT_CRITICAL();
return TRUE;
}
OS_EXIT_CRITICAL();
return FALSE;
#else
if(!MusicTaskExistFlag)
{
MusicTaskExistFlag = TRUE;
return FALSE;
}
return TRUE;
#endif
}
int PlayerEngineDetect()
{
OS_ENTER_CRITICAL();
if(OSTCBPrioTbl[PLAYER_ENGINE_PRIO] != (OS_TCB *)0)
{
if(OSGetIDFromPrio(PLAYER_ENGINE_PRIO) == PLAYER_ENGINE_ID)
{
OS_EXIT_CRITICAL();
return 1;
}
OS_EXIT_CRITICAL();
return -1;
}
OS_EXIT_CRITICAL();
return 0;
}
#endif
/*
char *ConvertInt3ToString(int pecent,char *string)
{
if(pecent >100 || pecent <0)
{
string[0] = 'e';
string[1] = 'r';
string[2] = 'r';
string[3] = 0;
return string;
}
if(pecent ==100)
string [0] = '1';
string[1] = (pecent /10)%10 +'0';
string[2] = pecent %10 +'0';
string[3] = 0;
return string;
}
char *GetCurMusicName(muisc_vars *MusicTaskVars,int sel)
{
char **FileNamePtr = (char **)MusicTaskVars->point[0];
return FileNamePtr[sel];
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -