示例#1
0
文件: dev-file.c 项目: Oldes/R3A110
*/	DEVICE_CMD Query_File(REBREQ *file)
/*
**		Obtain information about a file. Return TRUE on success.
**		On error, return FALSE and set file->error code.
**
**		Note: time is in local format and must be converted
**
***********************************************************************/
{
	return Get_File_Info(file);
}
示例#2
0
文件: gui.c 项目: nvero/fmhobby
//浏览文件夹下面的文件
//file_type:要浏览的文件类型
//返回要打开的目标文件编号 1~n(在总目标文件里面的)
//不包括文件夹!!!
//如果返回0则代表退出浏览
u16 File_Browse(u32 file_type)
{			 
	FileInfoStruct *FileInfo;
	u16 folder_cnt;//文件夹的个数
	u16 des_cnt;   //目标文件的个数		    
	u8 fcnt;	   //显示的文件数目
	u16 temp; 					     									  

	u16 total_file;//总文件数目
	u16 pos_cnt;//当前文件号 1~folder_cnt+des_cnt
	u8 key;	  			  
							   			  
Reset:				    
	POINT_COLOR=BLUE;  	   		   //蓝色笔头使用
	folder_cnt=0;des_cnt=0;fcnt=0;key=0;pos_cnt=0;	 	
	Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&folder_cnt);//得到当前目录下文件夹的个数	    
	Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&des_cnt);//得到当前目录下目标文件的个数	 
									   
	total_file=des_cnt+folder_cnt;//总的文件数目=文件夹数目+目标文件数目
	while(1)
	{
		if(pos_cnt<total_file)//文件标尺,未到达文件末尾
		{	   
			FileInfo=&F_Info[fcnt];
			if(pos_cnt<folder_cnt)//找文件夹
			{
			    temp=pos_cnt+1;			    
				Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&temp);
			}else				   //找目标文件
			{
				temp=pos_cnt-folder_cnt+1; 
				Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&temp);
			}
			fcnt++;   //已存的文件数目增加
			pos_cnt++;//文件位置标志增加
		}	  
		if(fcnt==8||pos_cnt==total_file)//找满八个了,或者文件夹已经找完了
		{  
			key=Show_File(fcnt,1);//显示此次得到的文件
			switch(key)
			{
				case 1://要打开目标文件
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
					key-=1;
					if(key<fcnt)//按键在有效范围内
					{
						if(F_Info[key].F_Type==T_FILE)//要打开的是个文件夹
						{
							Cur_Dir_Cluster=F_Info[key].F_StartCluster;//打开这个文件夹		  
							goto Reset;
						}else    //要打开的是目标文件
						{	
							//LCD_Clear(WHITE);//清屏		   
							return pos_cnt+key-folder_cnt-fcnt+1;//返回目标文件编号
						}
					}
					break;
				case 9:	//选择了返回按钮.退出到上一层目录
					//在主目录浏览里面,按下返回按钮,则退出浏览模式	
					if((FAT32_Enable&&Cur_Dir_Cluster==FirstDirClust)||Cur_Dir_Cluster==0)return 0;//退出浏览模式	  					
					Cur_Dir_Cluster=Fat_Dir_Cluster;//退到父目录  			    	 
					goto Reset;	   	 
				case MOVE_UP:  //向上翻页
				case MOVE_LEFT:
					if(pos_cnt>8)pos_cnt-=(8+fcnt);//回到上一页
					else pos_cnt=0;//从头开始了
					break;
				case MOVE_DOWN://向下翻页
		    	case MOVE_RIGHT:
					if(pos_cnt==total_file)pos_cnt-=fcnt;//重新找
					break;

			}	 				    
			fcnt=0;//清除显示文件计数器
		}
	}		
}