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

📄 hdd_gui.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "user_init.h"
#include "global.h"
#include "func.h" 
#include "memmap.h"
#include "util.h" 
#include "graph.h"
#include "framebuf.h"
#include "macro.h"
#include "stc.h"
#include "cfont.h"
#include "vfdfunc.h"
#include "osd.h"
#include "image.h"
#include "nesinit.h"
#include "fs96602.h"
#include "fsNAV.h"
#include "fsGUI.h"
#include "fsGUI1.h"
#include "user_if.h"
#include "user_init.h"

#ifdef SUPPORT_HDD_ACCESS

//MIKEY
#define	D	printf("INFO: __%d__(%s:%s)\n",__LINE__,__FILE__,__FUNCTION__);
char *strcpy();

//IOP IR control interface
//register mapping of RISC register
#define IR_PORT			5
//control flag
#define IR_RDY			(1<<15)
#define IR_REPEAT		(1<<14)
#define IR_REPLACE		(1<<13)
extern const BYTE ir_mapcode[256];
#include "ircode.h"

#ifdef HDD_MODIFY_INDEX_TEST
#include "fsMidiUI.h" 
#include "alpha.h"

#define SUPPORT_PINYIN_INPUT
extern void osd_Clear_Region(BYTE , BYTE );
#endif//#ifdef HDD_MODIFY_INDEX_TEST

UINT32 ir_rx_empty()
{
	UINT32 rx;
	rx = regs0->iop_data[IR_PORT];
	if (rx & IR_RDY)
		return 0;
	return 1;	
}


UINT32 ir_getch()
{
	UINT32 rx;	

	rx = regs0->iop_data[IR_PORT];
	if (rx & IR_RDY) {
		regs0->iop_data[IR_PORT]=rx & ~IR_RDY;
        	rx = reverse_fun(rx);
        	rx = ir_mapcode[(BYTE) rx];
		printf("INFO: IR[%x]\n",rx);
		return rx; //OK
	}
	return IRC_NULL; // ERROR
}


#define	CD_FP	iso9660_file[pFsJpeg->file_array[pFsJpeg->file_will]]
#define	STARTX		(5)
#define	LINEONE		(236+5)
#define	LINEONE_UL	(LINEONE+3)
#define	LINETWO		(LINEONE+15)
#define	LINETWO_UL	(LINETWO+3)






int do_copy(UINT8 *name)
{
	extern UINT8 f_do_copy_vcd;
	extern UINT8 f_vcd;
	extern int copy_cd_to_hdd();
	UINT8 states[10]={0, FS_STATE_MP3, FS_STATE_JPEG, FS_STATE_OTHER, 0};
	int state=0;
	if(CD_FP.type<=4)
		state = states[CD_FP.type];
	printf("\nINFO: COPY this file[%s]->[%s] msf[%x] len(%d) type(%d)->(%d)\n",CD_FP.name,name, CD_FP.loc, CD_FP.size, CD_FP.type, state);
	if(f_vcd) { // vcd/svcd
		UINT32 newvcdsize;
		f_do_copy_vcd=1;
		newvcdsize = ((CD_FP.size+2048-1)/2048) * 2352;
		printf("MIKEY: VCD: sz(%ld) -> newvcdsize(%ld)\n", CD_FP.size, newvcdsize);
		copy_cd_to_hdd(name, CD_FP.loc, newvcdsize, state);
	}
	else 
		copy_cd_to_hdd(name, CD_FP.loc, CD_FP.size, state);
	CD_FP.name[0]='<';	// FILE COPY MARK
	return 0;
}

int do_rm()
{
	extern UINT32 rm_file_from_hdd();
	UINT8 states[10]={0, FS_STATE_MP3, FS_STATE_JPEG, FS_STATE_OTHER, 0};
	int state=0;
	if(CD_FP.type<=4)
		state = states[CD_FP.type];
	printf("\nINFO: del this file[%s] msf[%x] len(%d) type(%d)->(%d)\n",CD_FP.name, CD_FP.loc, CD_FP.size, CD_FP.type, state);
	rm_file_from_hdd(CD_FP.name, CD_FP.loc, CD_FP.size, state);
	CD_FP.name[0]='/';	// FILE COPY MARK
	return 0;
}


int do_rename(UINT8 *newname)
{
	extern UINT32 rename_file_from_hdd();
	UINT8 states[10]={0, FS_STATE_MP3, FS_STATE_JPEG, FS_STATE_OTHER, 0};
	int state=0;
	if(CD_FP.type<=4)
		state = states[CD_FP.type];
	printf("\nINFO: rename this file[%s] msf[%x] len(%d) type(%d)->(%d)\n",CD_FP.name, CD_FP.loc, CD_FP.size, CD_FP.type, state);
	rename_file_from_hdd(newname, CD_FP.name,CD_FP.loc, CD_FP.size, state);
	strcpy(CD_FP.name, newname);
	return 0;
}


int fsgui_100(int p)
{
#ifdef HDD_FILE_MANAGEERUI
        fileManageui_DrawProcessBar(p);
        return 0;
#else
	static int pp=-1;
	UINT8 buf[64];
	if(pp==p)
		return 0;
	pp=p;	
	printf("INFO: COPY(%d%c)\n",p,'%');
	psprintf(buf, "%d%%", p);
	FSGUI_FillFrameBuf(STARTX + 16*9 , LINETWO ,4*9, 12,BK_GROUNDY,BK_GROUNDCRCB);
	FSGUI_ShowString(STARTX + 16*9, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);
	FSGUI_FillFrameBuf(STARTX + 21*9 , LINETWO ,100, 12,WHITE_Y,WHITE_CRCB);
	FSGUI_FillFrameBuf(STARTX + 21*9 , LINETWO ,p, 12,YELLOW_Y,YELLOW_CRCB);
	if(pp==100)
		pp=-1;
	return 0;
#endif
}


int fsgui_rename()
{
	UINT8 buf[64];
	UINT8 name[16];
	int i;
	UINT32 ch=IRC_NULL;
	int run=1;
	int k=0;
	int ok=0;
	int f_update=0;


D	if(CD_FP.name[0]=='<' || CD_FP.name[0]=='/') // FILE MARK COPY'<' DEL'/'
		return 0;

	FSGUI_FillFrameBuf(0,236,352,48,BK_GROUNDY,BK_GROUNDCRCB);

	for(i=0;i<8;i++) {
		name[i]=0x20;
	}
	name[i]=0x0;
	for(i=0;i<8;i++) {
		if(CD_FP.name[i]==0x0) {
			break;
		}	
		name[i]=CD_FP.name[i];
	}
	
	psprintf(buf, "FROM [%s] SIZE:%ldK", name, (CD_FP.size)/1024);
	printf("%s\n",buf);
	FSGUI_ShowString(STARTX, LINEONE, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);


	psprintf(buf, "  TO [%s]", name);
	FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);
	psprintf(buf, "      ________");
	FSGUI_ShowString(STARTX, LINETWO_UL, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);

	FSGUI_ReplaceFrameBuf(STARTX + 6*9 , LINETWO ,8*9, 12,BK_GROUNDY,BK_GROUNDCRCB,HL_Y,HL_CRCB);

	while(run) {
		if(ir_rx_empty()) // IR EMPTY
			continue;

		ch = ir_getch();
		switch(ch) {
			case IRC_NULL:
				break;
			case IRC_SELECT:
				if(ok==1) {
					run=0;
					FSGUI_FillFrameBuf(STARTX + 16*9 , LINETWO ,4*9, 12,BK_GROUNDY,BK_GROUNDCRCB);
					do_rename(name);
					delay_1ms(1000);
					break;
				}	
				printf("COPY IR[%x]->[%s]",ch, "IRC_SELECT");
				psprintf(buf, "  TO [%s]  OK", name);
				FSGUI_FillFrameBuf(STARTX + 6*9 , LINETWO ,8*9, 12,BK_GROUNDY,BK_GROUNDCRCB);
				FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);
				FSGUI_ReplaceFrameBuf(STARTX + 16*9 , LINETWO ,4*9, 12,BK_GROUNDY,BK_GROUNDCRCB,HL_Y,HL_CRCB);
				k=0;
				ok=1;
				break;
#ifdef MIKEY_MOREKEY
#else
			case IRC_DOWN:
				if(k>=0) {
					name[k]= name[k]+1;
					if(name[k]<'A' || name[k]>'Z')
						name[k]= 'A';
					f_update++;
				}
				break;
			case IRC_UP:
				if(k>=0) {
					name[k]= name[k]-1;
					if(name[k]<'A' || name[k]>'Z')
						name[k]= 'Z';
					f_update++;
				}
				break;
			case IRC_LEFT:
				if(k>=0) {
					name[k]=' ';
					f_update++;
					k--;
					if(k<=0)
						k=0;
				}
				break;
			case IRC_RIGHT:
				k++;
				if(k>=7)
					k=7;
				f_update++;
				break;
			case IRC_P10:
#endif
			case IRC_0:
			case IRC_1:
			case IRC_2:
			case IRC_3:
			case IRC_4:
			case IRC_5:
			case IRC_6:
			case IRC_7:
			case IRC_8:
			case IRC_9:
				if(ok==1)
					break;
				if(k==0) {
					for(i=0;i<8;i++) {
						name[i]=0x20;
					}
				}	
#ifdef MIKEY_MOREKEY
#else
				if(ch==IRC_P10)
					name[k]='-';
				else
#endif
				name[k]=ch+0x30;
				f_update++;
				k++;
				if(k>=7) {
					k=7;
				}	
				break;
			case IRC_RETURN:
			case IRC_STOP:
				run=0;
				break;
			default:
				break;
		}

		if(f_update) {
			psprintf(buf, "  TO [%s]", name);
			FSGUI_FillFrameBuf(STARTX + 6*9 , LINETWO ,8*9, 12,HL_Y,HL_CRCB);
			FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);			
			f_update=0;
		}	
	}

	FSGUI_FillFrameBuf(0,236,352,48,BK_GROUNDY,BK_GROUNDCRCB);
	FSGUI_Menu();
	FSGUI_Refresh();
	return 0;
}

int fsgui_del()
{
	UINT8 buf[64];
	UINT8 name[16];
	int i;
	UINT32 ch=IRC_NULL;
	int run=1;


D	if(CD_FP.name[0]=='<' || CD_FP.name[0]=='/') // FILE MARK COPY'<' DEL'/'
		return 0;

	FSGUI_FillFrameBuf(0,236,352,48,BK_GROUNDY,BK_GROUNDCRCB);

	for(i=0;i<8;i++) {
		name[i]=0x20;
	}
	name[i]=0x0;
	for(i=0;i<8;i++) {
		if(CD_FP.name[i]==0x0) {
			break;
		}	
		name[i]=CD_FP.name[i];
	}
	
	psprintf(buf, "FILE [%s] SIZE:%ldK", name, (CD_FP.size)/1024);
	printf("%s\n",buf);
	FSGUI_ShowString(STARTX, LINEONE, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);


	psprintf(buf, "PRESS KEY 1:DELETE 2:RENAME");
	FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);

	while(run) {
		if(ir_rx_empty()) // IR EMPTY
			continue;

		ch = ir_getch();
		switch(ch) {
			case IRC_NULL:
				break;
			case IRC_1:
				FSGUI_ReplaceFrameBuf(STARTX + 10*9 , LINETWO ,8*9, 12,BK_GROUNDY,BK_GROUNDCRCB,HL_Y,HL_CRCB);
				do_rm();
				run=0;
				break;
			case IRC_2:
				FSGUI_ReplaceFrameBuf(STARTX + 19*9 , LINETWO ,8*9, 12,BK_GROUNDY,BK_GROUNDCRCB,HL_Y,HL_CRCB);
				fsgui_rename();
				run=0;
				break;
			case IRC_RETURN:
			case IRC_STOP:
				run=0;
				break;
			default:
				run=0;
				break;
			break;
		}
	}

	FSGUI_FillFrameBuf(0,236,352,48,BK_GROUNDY,BK_GROUNDCRCB);
	FSGUI_Menu();
	FSGUI_Refresh();
	return 0;
}

#define	IFP	iso9660_file[file_ptr]


int fsgui_cdcopy()
{
	extern UINT8 f_do_copy_vcd;
	extern UINT8 f_vcd;
	extern int copy_cd_to_hdd();
	UINT8 states[10]={0, FS_STATE_MP3, FS_STATE_JPEG, FS_STATE_OTHER, 0};
	int state=0;
	int file_ptr=0;
	UINT8 buf[64];
	UINT8 name[16];
	int i;

	for(file_ptr=0;file_ptr<pFsJpeg->iso9660_file_cnt;file_ptr++) {
		if(IFP.name[0]=='<' || IFP.name[0]=='/') // FILE MARK COPY'<' DEL'/'
			continue;
		if(IFP.type<=4)
			state = states[IFP.type];
		printf("\nINFO: COPY this file[%s] msf[%x] len(%d) type(%d)->(%d)\n",IFP.name, IFP.loc, IFP.size, IFP.type, state);

		FSGUI_FillFrameBuf(0,236,352,48,BK_GROUNDY,BK_GROUNDCRCB);

		for(i=0;i<8;i++) {
			name[i]=0x20;
		}
		name[i]=0x0;
		for(i=0;i<8;i++) {
			if(IFP.name[i]==0x0) {
				break;
			}	
			name[i]=IFP.name[i];
		}
	
		psprintf(buf, "COPY [%s] SIZE:%ldK", name, (IFP.size)/1024);
		printf("%s\n",buf);
		FSGUI_ShowString(STARTX, LINEONE, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);

		psprintf(buf, "%3d%c [%d/%d]",(file_ptr)*100/pFsJpeg->iso9660_file_cnt,'%', file_ptr+1, pFsJpeg->iso9660_file_cnt);
		FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);

		if(f_vcd) { // vcd/svcd
			UINT32 newvcdsize;
			f_do_copy_vcd=1;
			newvcdsize = ((IFP.size+2048-1)/2048) * 2352;
			printf("MIKEY: VCD: sz(%ld) -> newvcdsize(%ld)\n", IFP.size, newvcdsize);
			copy_cd_to_hdd(IFP.name, IFP.loc, newvcdsize, state);
		}
		else 
			copy_cd_to_hdd(IFP.name, IFP.loc, IFP.size, state);
		IFP.name[0]='<';	// FILE COPY MARK
		psprintf(buf, "%3d%c [%d/%d]",(file_ptr+1)*100/pFsJpeg->iso9660_file_cnt,'%', file_ptr+1, pFsJpeg->iso9660_file_cnt);
		FSGUI_ShowString(STARTX, LINETWO, buf, FS_FONTCOLOR_FILE_Y, FS_FONTCOLOR_FILE_CrCb);
	}
	return 0;
}


int fsgui_copy()
{
#ifndef HDD_FILE_MANAGEERUI
	UINT8 buf[64];
#endif     
	UINT8 name[16];
	int i;
	UINT32 ch=IRC_NULL;
	int run=1;
	int ok=0;
#ifdef SUPPORT_HDD_DELETEFILE
        BYTE numName[6];
        int codeNo =0;
#ifndef SUPPORT_HDD_DELETEFILE
        BYTE IsDelFile =0;
#endif
#endif
        int k = 0;
#ifdef HDD_FILE_MANAGEERUI
        int retflag;

⌨️ 快捷键说明

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