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

📄 mp3_osd.c

📁 三星ic 9980的源代码. 718版.
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
 *   Filename    : Mp3_OSD.c
 *   Start       : 
 *   By          : 
 *   Contact     : 
 *   Description : 
 ******************************************************************************
 */
/******************************************************
 *       INCLUDES
 *****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Sys_call_abstract.h"
#include "Basic_typedefs.h"
#include "Osd_consts.h"
#include "Osd_structure.h"
#include "OSD_Api.h"
#include "Osd_resources.h"
#include "Mp3_include.h"
#include "spi_api.h"     
#include "Mp3_Osd.h"
#include "Codec.h"

#define MP3_OSD_TIMER		2500 //1600

extern SystemInfo_t SysInfo;

extern SysTimer_t 				gMp3_Reserved_Timer;

#if _MP3_300_
extern Mp3_FileInfo_t			*gFileInfo;
extern USHORT				gFileNumInFolder[MAX_FOLDER_NUM];
#else
extern Mp3_DirInfo_t			gDirinfo[MAX_CONTENT_IN_PAGE];
extern Mp3_FolderInfo_t		gFolderinfo[MAX_CONTENT_IN_PAGE];
#endif/* _MP3_300_ */
#if _SW_VOLUME_
 extern UCHAR 				VolumeShowVal;
#endif
extern S5L_DisplayStdType_t 	gOutput_tv_system ;
extern Mp3_ControlArea_t		gMp3Control;
extern Mp3_PageInfo_t			*gPageinfo;
extern Mp3_FolderPageInfo_t	*gFolderPage;
extern Mp3_Timeinfo_t			gMp3_time;
extern BOOL  					bLeftRight_arrow_flag;

extern BOOL 					gTrkSelectEnd_flag;	
extern BOOL      				gReturnFlag;//may050804
extern BOOL    				bInfoKey;
extern BOOL 					gMute;

extern char 					VfdDiscTurnF;
//extern UCHAR 				gNumber_output[3];	
#if MP3_over_250
extern UCHAR    Select_250;
#endif
extern UCHAR    Tenplus,Fiveplus;

extern UCHAR                gNumber_output;
extern USHORT				gMp3TotalFile;
extern UCHAR 				ToneValue;
extern UCHAR 				gNumber[4];
BOOL 						gshowReserved1 = FALSE;
USHORT  					mp3_cur_track;
extern void 					Mp3_SendOSDMsgToNAVI(void);
extern BOOL bRemsec;
/******************************************************************************
 *  Function name : 	Mp3_ShowFoldOSD
 *  Arguments  : 
 *       IN         
 *       OUT
 *       INOUT
 *  Return        	: 	void
 *  By            	: 		maymeng 050523  modified 050713
 *  Description	:		show current folder page osd
 ******************************************************************************
 */
 void Mp3_ShowFoldOSD(USHORT	focus_item)
 { 
 #if _MP3_OSD_ENABLE
  #if _MP3_300_
	STR_DYN_ID		string_id;
	UCHAR 		 	acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
	USHORT			index;
	USHORT         	 pre_index =0;	
	USHORT			folder_num;
	USHORT			first_file = 0;
	char 			tmp_folderno[7];//maymeng 050713
	
	ASSERT(focus_item < 10);
#if 1
	memset(temp,0,sizeof(temp));
	memset(acDirName,0,sizeof(acDirName));
	memset(tmp_folderno,0,sizeof(tmp_folderno));
#else
	CLEAR_STRING(temp);
	CLEAR_STRING(acDirName);
	CLEAR_STRING(tmp_folderno);
#endif
	

	if( gFolderPage->page_index == (gFolderPage->total_page - 1))
		folder_num = gFolderPage->total_num - gFolderPage->page_index*MAX_CONTENT_IN_PAGE;
	else
		folder_num = MAX_CONTENT_IN_PAGE;

	for(index = 0; index < (/*gFolderPage->focus_index + */gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
		first_file += gFileNumInFolder[index];
	//first_file += gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
	
	pre_index = gFolderPage->page_index*MAX_CONTENT_IN_PAGE;
	//pre_index  = MAX_CONTENT_IN_PAGE -1 - gFolderPage->content_num;

	for(index=0; index<folder_num;index++)
	{
		first_file += gFileNumInFolder[pre_index + index] ;
	    
		strncpy(acDirName, gFileInfo[first_file - 1].path, 6/*8*/);
		if(acDirName[0] == '\0')//for "ROOT"folder display maymeng 050808
		    strcpy(acDirName,"ROOT");
		
		if (strlen(acDirName) > FOLDER_WIDTH)
		{
			strncpy(temp, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
			temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
		}
		else
			strcpy(temp, acDirName);
		
		Check_String(temp);

		sprintf(tmp_folderno, "%02d", ( gFolderPage->page_index*MAX_CONTENT_IN_PAGE + index + 1) );//maymeng 050713

		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+ index].item_id;
		strcpy((char *)gOsd_str_dyn[ string_id ], tmp_folderno);
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index].item_id;
		strcpy((char *)gOsd_str_dyn[ string_id ], temp);
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index].item_id;
   		strcpy((char *)gOsd_str_dyn[ string_id ], FOLDER_ICON);
		
		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+index].color= ID_COLOR_DARK_WHITE;
		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index].status = HS_NEED_DRAW;			
		gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+index].status = HS_NEED_DRAW;			
	}

	for( index = folder_num + 1; index <= MAX_CONTENT_IN_PAGE; index++)
	{
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+ index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);

		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index - 1].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index - 1].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+index - 1].status = HS_NEED_DRAW;
	}
	
	//highlight the sel dir
	gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
	gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;
	OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
	ShowWindow(ID_WND_EXP_BG);  
#else
	STR_DYN_ID		string_id;
	UCHAR 		 acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
	int				index;	

	ASSERT(focus_item < 10);

	OwSetCurrentWindowSet(gMp3_wnd);

	for(index=0; index<gFolderPage->content_num;index++)
	{
		strncpy(acDirName, gFolderinfo[index].name, 6/*8*/);
		if(acDirName[0] == '\0')
		    strcpy(acDirName,"ROOT");

		if (strlen(acDirName) > FOLDER_WIDTH)
		{
			strncpy(temp, acDirName, MAXTRINO_STRLEN_FOLDER );
			temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
		}
		else
			strcpy(temp, acDirName);
		
		Check_String(temp);

		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index].item_id;
		strcpy((char *)gOsd_str_dyn[ string_id ], temp);
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index].item_id;
   		strcpy((char *)gOsd_str_dyn[ string_id ], FOLDER_ICON);
		
		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+index].color= ID_COLOR_DARK_WHITE;
		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index].status = HS_NEED_DRAW;			
	}

	for( index = gFolderPage->content_num+1; index <= MAX_CONTENT_IN_PAGE; index++)
	{
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		
		string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);

		gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index - 1].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index - 1].status = HS_NEED_DRAW;
	}
	
	//highlight the sel dir
	gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
	gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;

	//gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
	//gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;
	OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
	ShowWindow(ID_WND_EXP_BG);
  #endif/* _MP3_300_ */
#endif	/*	_MP3_OSD_ENABLE	*/
 }


 /******************************************************************************
 *  Function name : 	Mp3_ShowFileOSD
 *  Arguments  : 
 *       IN         
 *       OUT
 *       INOUT
 *  Return        	: 	void
 *  By            	: 		wanghu
 *  Description	:		show current file page osd
 ******************************************************************************
 */
 void Mp3_ShowFileOSD(USHORT	focus_item)
 { 
 #if _MP3_OSD_ENABLE
  #if _MP3_300_
	STR_DYN_ID		string_id;
	ULONG 			dircount = 1;
	UCHAR 			acDirName [ MAX_FILE_DIR_NAME ], temp[14];
	USHORT			index;
	USHORT			file_num;
	USHORT			pre_index = 0;
	UCHAR			tmp_str_mp3fileno[7];//maymeng 050705
    	int i,length;//
	
	ASSERT(focus_item < 10);
#if 1
	memset(temp,0,sizeof(temp));
	memset(acDirName,0,sizeof(acDirName));
	memset(tmp_str_mp3fileno,0,sizeof(tmp_str_mp3fileno));
#else
	CLEAR_STRING(acFileName);
	CLEAR_STRING(acDirName);
	CLEAR_STRING(tmp_str_mp3fileno);
#endif

// 	strcpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME_ICON], FOLDER_ICON);      
//	gMp3_wnd[ ID_WND_EXP_DIRNAME_ICON].status= HS_NEED_DRAW;
      	Check_String((char *)gPageinfo->path);
       if((char *)gPageinfo->path[0] =='\0')
       	strcpy((char *)gPageinfo->path,"ROOT");
	
	//strncpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME], (char *)gPageinfo->path, 8);
//	gMp3_wnd[ ID_WND_EXP_DIRNAME].status= HS_NEED_DRAW;

	if( gPageinfo->page_index == (gPageinfo->total_page - 1))
		file_num = gPageinfo->total_num - gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
	else
		file_num = MAX_CONTENT_IN_PAGE;

	for(index = 0; index < (gFolderPage->focus_index + gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
		pre_index += gFileNumInFolder[index];
	pre_index += gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
	
	for(index = 0; index < file_num; index++)
	{
		strncpy(acDirName, gFileInfo[pre_index + index].name, 6/*8*/);
			sprintf(tmp_str_mp3fileno, "%03d", ( gFileInfo[pre_index + index ].file_no + 1) );//maymeng 050705
			length = strlen(tmp_str_mp3fileno);
			for(i=0; i<length; i++)
				{
					if(tmp_str_mp3fileno[i] != gOsd_str_dyn[ID_WND_EXP_FILE_NUM1+ index][i])
					break;
				}//
		if (strlen(acDirName) > FOLDER_WIDTH)
		{
			strncpy(temp, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
			temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
		}
		else
			strcpy(temp, acDirName);
		
		Check_String(temp);
		strcat(temp,MP3_FILE_EXTN);

		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index].item_id;
		strcpy((char *)gOsd_str_dyn[ string_id ], temp);
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index].item_id;
   		//strcpy((char *)gOsd_str_dyn[ string_id ], FILE_ICON);
   		strcpy((char *)gOsd_str_dyn[ string_id ], (char *)( tmp_str_mp3fileno));//maymeng 050705

		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index].color= ID_COLOR_DARK_WHITE;
		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+ index].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index].status = HS_NEED_DRAW;			
	}

	for( index = file_num + 1; index <= MAX_CONTENT_IN_PAGE; index++)
	{
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index-1].status= HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index-1].status= HS_NEED_DRAW;
	}

	//highlight the sel dir	
	gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].color= ID_COLOR_RED;
	gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].status= HS_NEED_DRAW;
	OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
	ShowWindow(ID_WND_EXP_BG);
  #else
	STR_DYN_ID		string_id;
	ULONG 			dircount = 1;
	UCHAR 			acFileName [ MAX_FILE_DIR_NAME ], acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
	int				index;

	ASSERT(focus_item < 10);

	OwSetCurrentWindowSet(gMp3_wnd);

  	//strcpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME_ICON], FOLDER_ICON);      
	//gMp3_wnd[ ID_WND_EXP_DIRNAME_ICON].status= HS_NEED_DRAW;
      	Check_String((char *)gPageinfo->path);
       if((char *)gPageinfo->path[0] =='\0')
       	strcpy((char *)gPageinfo->path,"ROOT");
	
	//strncpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME], (char *)gPageinfo->path, 8);
	//gMp3_wnd[ ID_WND_EXP_DIRNAME].status= HS_NEED_DRAW;

	for(index=0; index<gPageinfo->content_num;index++)
	{
		strncpy(acDirName, gDirinfo[index].name, 6/*8*/);
		if (strlen(acDirName) > FOLDER_WIDTH)
		{
			strncpy(temp, acDirName, MAXTRINO_STRLEN_FOLDER );
			temp[6] = '\0';
		}
		else
			strcpy(temp, acDirName);
		
		Check_String(temp);

		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index].item_id;
		strcpy((char *)gOsd_str_dyn[ string_id ], temp);
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index].item_id;
   		strcpy((char *)gOsd_str_dyn[ string_id ], FILE_ICON);

		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index].color= ID_COLOR_DARK_WHITE;
		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+ index].status = HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index].status = HS_NEED_DRAW;			
	}

	for( index = gPageinfo->content_num+1; index <= MAX_CONTENT_IN_PAGE; index++)
	{
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		
		string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index - 1].item_id;
		CLEAR_STRING(gOsd_str_dyn[ string_id ]);
		gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index-1].status= HS_NEED_DRAW;
		gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index-1].status= HS_NEED_DRAW;
	}

	//highlight the sel dir	
	gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].color= ID_COLOR_RED;
	gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].status= HS_NEED_DRAW;
	OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707	
	ShowWindow(ID_WND_EXP_BG);
  #endif
#endif	/*	_MP3_OSD_ENABLE	*/
}

/******************************************************************************
 *  Function name : 	 Mp3_ShowFilePath
 *  Arguments  : 
 *       IN         
 *       OUT
 *       INOUT
 *  Return        	: 	void
 *  By            	: 		maymeng 050711
 *  Description	:		show file path and file name on the reserved wnd
 ******************************************************************************
 */
void Mp3_ShowFilePath(void)
{
#if _MP3_OSD_ENABLE

	UCHAR 	acFileName[ MAX_FILE_DIR_NAME ] ,acDirName[MAX_FILE_DIR_NAME];
	UCHAR    tempFile[14], tempDir[MAXTRINO_STRING];
	UCHAR    tempstring1[20], tempstring2[MAXTRINO_STRING];
	USHORT	 pre_index = 0; 
	USHORT	 index,length;
	//char*   tempstring1;
	//char*  tempstring2;
#if 1
 	memset(acFileName,0,sizeof(acFileName));
	memset(acDirName,0,sizeof(acDirName));
	memset(tempFile,0,sizeof(tempFile));
	memset(tempDir,0,sizeof(tempDir));
	memset(tempstring1,0,sizeof(tempstring1));
#else
 	CLEAR_STRING(acFileName);
	CLEAR_STRING(acDirName);
	CLEAR_STRING(tempFile);
	CLEAR_STRING(tempDir);
	CLEAR_STRING(tempstring1);
	CLEAR_STRING(tempstring2);
#endif

	for(index = 0; index < (gFolderPage->focus_index + gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
		pre_index += gFileNumInFolder[index];
	pre_index += gPageinfo->page_index*MAX_CONTENT_IN_PAGE;  //maymeng 050711

#if !_MP3_300_
		strncpy(acFileName, gDirinfo[gPageinfo->focus_index].name, 6/*8*/);
#else 
		strncpy(acFileName, gFileInfo[gPageinfo->focus_index + pre_index].name, 6/*8*/);//maymeng 050707
		strncpy(acDirName, gFileInfo[gPageinfo->focus_index + pre_index].path,6 /*8*/);
#endif/* _MP3_300_ */

       if(acDirName[0] == '\0')//for "ROOT"folder display maymeng 050808
		  strcpy(acDirName,"ROOT");
	   
	if (strlen(acFileName) > FOLDER_WIDTH)
	{
			strncpy(tempFile, acFileName, 6/*MAXTRINO_STRLEN_FOLDER*/);
			tempFile[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
	}
	else
		 strcpy(tempFile, acFileName);			
	Check_String(tempFile);	
	strcat(tempFile,MP3_FILE_EXTN);
	
	#if _MP3_300_
	if (strlen(acDirName) > FOLDER_WIDTH)
	{
		strncpy(tempDir, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
		tempDir[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
	}
	else
			strcpy(tempDir, acDirName);			
			Check_String(tempDir);
			//strcpy(tempstring1, "[");	
			//strcat(tempstring1, tempDir);
			//strcpy(tempstring2, "\]");
			strcpy(tempstring2, "\134");	
			strcat(tempDir, tempstring2);
			strcpy(tempstring1, tempDir);	
                     strcat(tempstring1, tempFile);
					 
		strcpy((char *)gOsd_str_dyn[ ID_STR_EXP_RESERVED_FILENAME ], tempstring1);				 
	#else
		strcpy((char *)gOsd_str_dyn[ ID_STR_EXP_RESERVED_FILENAME ], tempFile);
	#endif
	
	
	gMp3_wnd[ID_WND_EXP_RESERVED_FILENAME].status=HS_NEED_DRAW;

	#endif
}

  /******************************************************************************
 *  Function name : 	Mp3_ShowInfo
 *  Arguments  : 
 *       IN         
 *       OUT
 *       INOUT
 *  Return        	: 	void
 *  By            	:   maymeng 050720
 *  Description	:		info-osd display
 ******************************************************************************
 */
 void Mp3_ShowInfo(BOOL bInfoTrue)
{
#if _MP3_OSD_ENABLE
	if(TRUE == bInfoTrue)
	{
		CLEAR_STRING(gOsd_str_dyn[ID_STR_EXP_NOTICE_FILENAME]);
		CLEAR_STRING(gOsd_str_dyn[ID_STR_EXP_RESERVED_FILENAME]);		
	}

⌨️ 快捷键说明

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