📄 recordmain.c
字号:
/********************************************************************************
* SDK30F_D1
* music player main sub
*
* (c) Copyright 2002, Actions Co,Ld.
* All Right Reserved
*
* File: recordmain.c
* By : wurui
* Version: 1> v1.00 first version 2005-12-12 11:28
*
* $Id: recordmain.C,v 1.3 2005/12/23 02:44:35 wurui Exp $
*******************************************************************************
*/
//#ifdef __RECORD_
#include "record.h"
#include "string.h"
#include "UsbService.h"
void cbCallBack_RecordWindow(WM_MESSAGE* pMsg);
void cbCallBack_FunctionWindow(WM_MESSAGE* pMsg);
void cbCallBack_FunctionSubWindow(WM_MESSAGE* pMsg);
void _cbCallBack_DeakKeyMsg(WM_MESSAGE* pMsg);
void _DealKeyMessage(record_vars *RecordTaskVars,msg_t *msg);
void _DealRecorderMessage(record_vars *RecordTaskVars,msg_t *msg);
void _ReadDefaultVars(record_vars *RecordTaskVars);
unsigned long _GetDiskTotalSize1();
unsigned long _GetDiskFreeSize1();
void _CreateRecordWindow(record_vars *RecordTaskVars);
void _CreateFunctionWindow(record_vars *RecordTaskVars);
void _BackToMainTask(record_vars *RecordTaskVars);
void _DeleteAllWindow(record_vars *RecordTaskVars);
void __DeleteFunctionWindow(record_vars *RecordTaskVars);
char* _ConvertBTToString(bitrate_t BTIndex,char *string);
char* _ConvertRectypeToString(RecType_t type,char *string);
char* _ConvertTimeToString(Full_time_t *time,char *string);
char *_ConvertRestTimeToString(Rest_time_t *time,char *string);
void _StartPauseRecord(record_vars *RecordTaskVars);
void _StopRecord(record_vars *RecordTaskVars);
void __GetRecName(record_vars *RecordTaskVars);
void _ExitFunctionsWindow(record_vars *RecordTaskVars);
void _SetMemuItems(record_vars *RecordTaskVars);
void _ForcusToFunctionWin(record_vars *RecordTaskVars);
void __ForcusToFunctionSubWin(record_vars *RecordTaskVars);
void _SetUserSelect(record_vars *RecordTaskVars);
void _RedrawFunctionSubWin(record_vars *RecordTaskVars);
bitrate_t _ConvertStringToBT(char *BTString);
void RecordTask()
{
record_vars RecordTaskVars;
INT8U err;
msg_t msg;
memset(&RecordTaskVars, 0, sizeof(record_vars));
RecordTaskVars.RedrawFlag = TRUE;
_SetMemuItems(&RecordTaskVars);
OSSetTaskOwnPtr((unsigned int *)&RecordTaskVars, RECORD_FACE_ID);
RecordTaskVars.recorder_vars = (recorder_t *)OSGetTaskOwnPtr(RECORDER_ENGINE_ID);
_ReadDefaultVars(&RecordTaskVars);
_CreateRecordWindow(&RecordTaskVars);
while(Recorder_Out == 0)
OSTimeDly(5);
while(1)
{
MYOSQPend(Recorder_Out, &msg, 0);
switch(msg.type)
{
case MSG_KEY:
_DealKeyMessage(&RecordTaskVars,&msg);
break;
case MS_RECORDER:
_DealRecorderMessage(&RecordTaskVars,&msg);
break;
case MS_Err:
break;
case MS_END:
_DeleteAllWindow(&RecordTaskVars);
RecordTaskDelete();
break;
}
}
}
void _DealKeyMessage(record_vars *RecordTaskVars,msg_t *msg)
{
if(RecordTaskVars->CurWin == 0)
{
switch(msg->msg.data[0])
{
case GUI_KeyEnter_KeyMode | GUI_Key_Long:
_BackToMainTask(RecordTaskVars);
break;
case GUI_KeyBackspace_KeyPlay | GUI_Key_Up:
if(RecordTaskVars->LastOp != (GUI_KeyBackspace_KeyPlay | GUI_Key_Long))
_StartPauseRecord(RecordTaskVars);
else
RecordTaskVars->LastOp = 0;
break;
case GUI_KeyBackspace_KeyPlay | GUI_Key_Long:
_StopRecord(RecordTaskVars);
RecordTaskVars->LastOp = GUI_KeyBackspace_KeyPlay | GUI_Key_Long;
break;
case GUI_KeyEnter_KeyMode | GUI_Key_Up:
if(RecordTaskVars->recorder_vars->recorder_info.status <= record_stop)
_CreateFunctionWindow(RecordTaskVars);
break;
// case GUI_KeyRight_KeyVolAdd | GUI_Key_Down:
// case GUI_KeyLeft_KeyVolSub | GUI_Key_Down:
case GUI_KeyDelete_KeyLoop | GUI_Key_Up:
case GUI_KeyEnd_KeyEQ | GUI_Key_Up:
case GUI_KeyDown_KeyNext | GUI_Key_Up:
case GUI_KeyUp_KeyPrev | GUI_Key_Up:
case GUI_KeyDown_KeyNext | GUI_Key_Long:
break;
}
}
else if(RecordTaskVars->CurWin == 1)
{
switch(msg->msg.data[0])
{
case GUI_KeyEnter_KeyMode | GUI_Key_Long:
_BackToMainTask(RecordTaskVars);
break;
case GUI_KeyBackspace_KeyPlay | GUI_Key_Up:
_ExitFunctionsWindow(RecordTaskVars);
break;
case GUI_KeyEnter_KeyMode | GUI_Key_Up:
_RedrawFunctionSubWin(RecordTaskVars);
break;
case GUI_KeyUp_KeyPrev | GUI_Key_Up:
LISTBOX_DecSel(RecordTaskVars->FunctionWin);
break;
case GUI_KeyDown_KeyNext | GUI_Key_Up:
LISTBOX_IncSel(RecordTaskVars->FunctionWin);
break;
// case GUI_KeyRight_KeyVolAdd | GUI_Key_Down:
// case GUI_KeyLeft_KeyVolSub | GUI_Key_Down:
case GUI_KeyDelete_KeyLoop | GUI_Key_Up:
case GUI_KeyEnd_KeyEQ | GUI_Key_Up:
case GUI_KeyDown_KeyNext | GUI_Key_Long:
break;
}
}
else
{
switch(msg->msg.data[0])
{
case GUI_KeyEnter_KeyMode | GUI_Key_Long:
_BackToMainTask(RecordTaskVars);
break;
case GUI_KeyEnter_KeyMode | GUI_Key_Up:
_SetUserSelect(RecordTaskVars);
_ExitFunctionsWindow(RecordTaskVars);
break;
case GUI_KeyBackspace_KeyPlay | GUI_Key_Up:
_ForcusToFunctionWin(RecordTaskVars);
break;
case GUI_KeyUp_KeyPrev | GUI_Key_Up:
LISTBOX_DecSel(RecordTaskVars->FunctionSubWin);
break;
case GUI_KeyDown_KeyNext | GUI_Key_Up:
LISTBOX_IncSel(RecordTaskVars->FunctionSubWin);
break;
}
}
}
void _RedrawFunctionSubWin(record_vars *RecordTaskVars)
{
GUI_ConstString *pptext;
switch(LISTBOX_GetSel(RecordTaskVars->FunctionWin))
{
case 0:
pptext = (GUI_ConstString*)RecordTaskVars->FunctionSubMenu[0];
break;
case 1:
pptext = (GUI_ConstString*)RecordTaskVars->FunctionSubMenu[RecordTaskVars->FunctionInfo.rec_sort+1];
break;
case 2:
return;
case 3:
_ExitFunctionsWindow(RecordTaskVars);
return;
}
LISTBOX_Clear(RecordTaskVars->FunctionSubWin);
LISTBOX_SetText(RecordTaskVars->FunctionSubWin, pptext);
__ForcusToFunctionSubWin(RecordTaskVars);
}
void _ForcusToFunctionWin(record_vars *RecordTaskVars)
{
RecordTaskVars->CurWin = 1;
LISTBOX_SetBackColor(RecordTaskVars->FunctionSubWin, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(RecordTaskVars->FunctionSubWin, 1, GUI_BLACK);
LISTBOX_SetBackColor(RecordTaskVars->FunctionWin, 1, GUI_RED);
LISTBOX_SetTextColor(RecordTaskVars->FunctionWin, 1, GUI_WHITE);
WM_InvalidateWindow(RecordTaskVars->FunctionWin);
WM_InvalidateWindow(RecordTaskVars->FunctionSubWin);
WM_SetFocus(RecordTaskVars->FunctionWin);
}
void __ForcusToFunctionSubWin(record_vars *RecordTaskVars)
{
RecordTaskVars->CurWin = 2;
LISTBOX_SetBackColor(RecordTaskVars->FunctionWin, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(RecordTaskVars->FunctionWin, 1, GUI_BLACK);
LISTBOX_SetBackColor(RecordTaskVars->FunctionSubWin, 1, GUI_RED);
LISTBOX_SetTextColor(RecordTaskVars->FunctionSubWin, 1, GUI_WHITE);
WM_InvalidateWindow(RecordTaskVars->FunctionSubWin);
WM_InvalidateWindow(RecordTaskVars->FunctionWin);
WM_SetFocus(RecordTaskVars->FunctionSubWin);
}
void _SetUserSelect(record_vars *RecordTaskVars)
{
int *pptext;
int item;
msg_t msg_send;
switch(LISTBOX_GetSel(RecordTaskVars->FunctionWin))
{
case 0:
//RecordTaskVars->FunctionInfo.rec_sort = LISTBOX_GetSel(RecordTaskVars->FunctionSubWin);
//switch(RecordTaskVars->FunctionInfo.rec_sort + 1)
//{
//case 1:
//RecordTaskVars->recorder_vars->rec_control_info.rec_type = REC_AG8;
//break;
//case 2:
//RecordTaskVars->recorder_vars->rec_control_info.rec_type = REC_WAV;
//break;
//case 3:
RecordTaskVars->recorder_vars->rec_control_info.rec_type = REC_MP3;
// break;
//}
break;
case 1:
//pptext = RecordTaskVars->FunctionSubMenu[RecordTaskVars->FunctionInfo.rec_sort + 1];
pptext = RecordTaskVars->FunctionSubMenu[3];
item = LISTBOX_GetSel(RecordTaskVars->FunctionSubWin);
RecordTaskVars->recorder_vars->rec_control_info.BTIndex = _ConvertStringToBT( GUI_GetStringByID( pptext[item], 1 ) );
//if(RecordTaskVars->FunctionInfo.rec_sort == 1)
//{
// if(item > 1)
// RecordTaskVars->recorder_vars->rec_control_info.vor_time = 1; // VOR时长. 0(off)/1/2/3…/10s(max)
// if(item % 2 == 0)
// RecordTaskVars->recorder_vars->rec_control_info.rec_type = REC_ADPCM;
// else
// RecordTaskVars->recorder_vars->rec_control_info.rec_type = REC_AG8;
//}
break;
}
msg_send.type = MS_SetInfo;
MYOSQPost(Recorder_In,&msg_send);
}
void _StartPauseRecord(record_vars *RecordTaskVars)
{
msg_t msg_send;
if(RecordTaskVars->recorder_vars->recorder_info.status <= record_stop)
{
// __GetRecName(RecordTaskVars);
RecordTaskVars->RedrawFlag = TRUE;
WM_InvalidateWindow(RecordTaskVars->MainWin);
}
msg_send.type = MS_Play;
MYOSQPost(Recorder_In,&msg_send);
}
void _StopRecord(record_vars *RecordTaskVars)
{
if(RecordTaskVars->recorder_vars->recorder_info.status > record_stop)
{
msg_t msg_send;
msg_send.type = MS_Stop;
MYOSQPost(Recorder_In,&msg_send);
}
}
/*
void __GetRecName(record_vars *RecordTaskVars)
{
RecordTaskVars->recorder_vars->recorder_filename[0] = 'R';
RecordTaskVars->recorder_vars->recorder_filename[1] = 'E';
RecordTaskVars->recorder_vars->recorder_filename[2] = 'C';
RecordTaskVars->recorder_vars->recorder_filename[3] = '0';
RecordTaskVars->recorder_vars->recorder_filename[4] = '0';
RecordTaskVars->recorder_vars->recorder_filename[5] = '1';
RecordTaskVars->recorder_vars->recorder_filename[6] = '.';
RecordTaskVars->recorder_vars->recorder_filename[7] = 'A';
RecordTaskVars->recorder_vars->recorder_filename[8] = 'C';
RecordTaskVars->recorder_vars->recorder_filename[9] = 'T';
RecordTaskVars->recorder_vars->recorder_filename[10] = 0;
}
*/
void _DealRecorderMessage(record_vars *RecordTaskVars,msg_t *msg)
{
switch(msg->msg.data[0])
{
case MS_RedrawInfo:
if(RecordTaskVars->recorder_vars->recorder_info.status >= record_recording)
WM_InvalidateWindow(RecordTaskVars->MainWin);
break;
case MS_DSPExit:
WM_InvalidateWindow(RecordTaskVars->MainWin);
break;
}
}
void _CreateRecordWindow(record_vars *RecordTaskVars)
{
RecordTaskVars->MainWin = WM_CreateWindow(0,0,0,0,WM_CF_SHOW,&cbCallBack_RecordWindow,0);
WM_SetFocus(RecordTaskVars->MainWin);
}
void _CreateFunctionWindow(record_vars *RecordTaskVars)
{
// RecordTaskVars->FunctionWin = WM_CreateWindow(0,0,0,0,WM_CF_SHOW,&cbCallBack_FunctionWindow,0);
GUI_SetLanguageMode(2);
RecordTaskVars->FunctionWin = LISTBOX_Create((GUI_ConstString *)RecordTaskVars->FunctionMenu, 0,0,37,94,cbCallBack_FunctionWindow, WM_CF_SHOW);
LISTBOX_SetBackColor(RecordTaskVars->FunctionWin, 0, GUI_BLUE);
LISTBOX_SetBackColor(RecordTaskVars->FunctionWin, 1, GUI_RED);
LISTBOX_SetTextColor(RecordTaskVars->FunctionWin, 0, GUI_WHITE);
LISTBOX_SetTextColor(RecordTaskVars->FunctionWin, 1, GUI_WHITE);
LISTBOX_Clear(RecordTaskVars->FunctionWin);
// LISTBOX_SetFont(RecordTaskVars->FunctionMenu, &GUI_Font13B_1);
GUI_SetLanguageMode(2);
RecordTaskVars->FunctionSubWin = LISTBOX_Create((GUI_ConstString *)RecordTaskVars->FunctionSubMenu[0], 35,0,126-35,94,cbCallBack_FunctionSubWindow, WM_CF_SHOW);
LISTBOX_SetBackColor(RecordTaskVars->FunctionSubWin, 0, GUI_BLUE);
LISTBOX_SetBackColor(RecordTaskVars->FunctionSubWin, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(RecordTaskVars->FunctionSubWin, 0, GUI_WHITE);
LISTBOX_SetTextColor(RecordTaskVars->FunctionSubWin, 1, GUI_BLACK);
LISTBOX_Clear(RecordTaskVars->FunctionSubWin);
// LISTBOX_SetFont(RecordTaskVars->FunctionMenu, &GUI_Font13B_1);
RecordTaskVars->CurWin = 1;
WM_SetFocus(RecordTaskVars->FunctionWin);
}
void cbCallBack_RecordWindow(WM_MESSAGE* pMsg)
{
recorder_t *recorder_vars;
record_vars *RecordTaskVars;
char string[13];
GUI_RECT rClient;
switch (pMsg->MsgId)
{
case WM_PAINT:
recorder_vars = (recorder_t *)OSGetTaskOwnPtr(RECORDER_ENGINE_ID);
RecordTaskVars = (record_vars *)OSGetTaskOwnPtr(RECORD_FACE_ID);
GUI_SetBkColor(GUI_BLUE);
GUI_SetColor(GUI_WHITE);
GUI_GetClientRect(&rClient);
if(recorder_vars->recorder_info.status <= record_stop)
{
GUI_Clear();
GUI_DispStringAt(GUI_GetStringByID(S_TOTSZ , 1), rClient.x0, rClient.y0);
GUI_DispStringAt(GUI_GetStringByID(S_RESSZ, 1), rClient.x0, rClient.y0+16);
GUI_DispStringAt(GUI_GetStringByID(S_RESTM , 1), rClient.x0, rClient.y0+32);
GUI_DispDecAt(_GetDiskTotalSize1(), rClient.x0, rClient.y0+8, 9);
GUI_DispDecAt(_GetDiskFreeSize1(), rClient.x0, rClient.y0+24, 9);
GUI_DispStringAt(_ConvertRestTimeToString(&recorder_vars->restTime,string), rClient.x0, rClient.y0+40);
GUI_DispStringAt(recorder_vars->infomation.recorder_filename,rClient.x0, rClient.y0+48);
}
else
{
if(RecordTaskVars->RedrawFlag == TRUE)
{
GUI_RECT tmpClient;
GUI_Clear();
GUI_ShowPic(PHONE, rClient.x0, rClient.y0);
GUI_ShowPic(BTTYPE, rClient.x0+36, rClient.y0);
tmpClient.x0 = rClient.x0 + 37;
tmpClient.x1 = rClient.x0 + 71;
tmpClient.y0 = rClient.y0 + 1;
tmpClient.y1 = rClient.y0 + 18;
GUI_DispStringInRect(_ConvertBTToString(recorder_vars->rec_control_info.BTIndex, string), &tmpClient, GUI_TA_HCENTER | GUI_TA_VCENTER);
tmpClient.y0 = rClient.y0 + 20;
tmpClient.y1 = rClient.y0 + 37;
GUI_DispStringInRect(_ConvertRectypeToString(recorder_vars->rec_control_info.rec_type, string), &tmpClient, GUI_TA_HCENTER | GUI_TA_VCENTER);
GUI_DispStringAt(GUI_GetStringByID(W_REC , 1), rClient.x0, rClient.y0+40);
GUI_DispStringAt(GUI_GetStringByID(W_REST , 1), rClient.x0, rClient.y0+48);
GUI_DispStringAt(_ConvertRestTimeToString(&recorder_vars->restTime,string), rClient.x0+30, rClient.y0+48);
GUI_DispStringAt(recorder_vars->infomation.recorder_filename,rClient.x0, rClient.y0+56);
RecordTaskVars->RedrawFlag = FALSE;
}
GUI_DispStringAt(_ConvertTimeToString(&recorder_vars->recorder_info.current_time, string), rClient.x0+30, rClient.y0+40);
}
break;
case WM_KEY:
_cbCallBack_DeakKeyMsg(pMsg);
return;
}
WM_DefaultProc(pMsg);
}
void _cbCallBack_DeakKeyMsg(WM_MESSAGE* pMsg)
{
msg_t msg;
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(Recorder_Out,&msg);
return;
/* case 1:
msg.type = MSG_KEY;
msg.msg.data[0] = ((WM_KEY_INFO*)(pMsg->Data.p))->Key | GUI_Key_Down;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -