2025-06-27 00:32:57 +08:00
|
|
|
|
#include "mywin_inc.h"
|
|
|
|
|
#include "flash_manager.h"
|
|
|
|
|
#include "system_file.h"
|
|
|
|
|
#include "ff.h"
|
|
|
|
|
//#include "nes_main.h"
|
|
|
|
|
#include "mywin_user_photo.h"
|
|
|
|
|
#include "mywin_user_sysfile.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define WIN_SYSFILE_TYPE "WIN_SysFileStruct"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char *g_popup_itmes[]=
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>SD<EFBFBD><EFBFBD>",
|
|
|
|
|
"ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>",
|
|
|
|
|
"<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ϣ",
|
|
|
|
|
"<EFBFBD>洢<EFBFBD>ռ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|
|
|
|
"<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>"
|
2025-06-27 00:32:57 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WIN_SysFileStruct *WIN_CreatSysFile (WIN_WindowStruct *base,
|
|
|
|
|
void (*msgLoop)(struct _WIN_WindowStruct *win,WIN_MsgStruct *msg),
|
|
|
|
|
int x,int y,int x_size,int y_size)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<CFA2><D1AD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
if (msgLoop==0)
|
|
|
|
|
{
|
|
|
|
|
msgLoop=(void (*)(struct _WIN_WindowStruct *win,WIN_MsgStruct *msg))SYSFILE_defaultMsgLoop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WIN_SysFileStruct *ret=mymalloc (sizeof ( WIN_SysFileStruct));
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9>캯<EFBFBD><ECBAAF>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
if (ret)
|
|
|
|
|
{
|
|
|
|
|
mymemset (ret,0,sizeof ( WIN_SysFileStruct));
|
|
|
|
|
if (0==WIN_CreatWindowExt((WIN_WindowStruct *)ret,base,msgLoop,x,y,x_size,y_size))
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
myfree (ret);
|
|
|
|
|
ret=0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
((WIN_WindowStruct *)ret)->winType=WIN_SYSFILE_TYPE;
|
|
|
|
|
((WIN_WindowStruct *)ret)->bkcolor=0x808080;
|
|
|
|
|
((WIN_WindowStruct *)ret)->color=0xffffff;
|
|
|
|
|
ret->titleHight=30;
|
|
|
|
|
ret->itemHight=30;
|
|
|
|
|
ret->itemIndent=35;
|
|
|
|
|
ret->itemNumOnePage=(((WIN_WindowStruct *)ret)->y_size-ret->titleHight)/ret->itemHight;
|
|
|
|
|
ret->itemHight=(((WIN_WindowStruct *)ret)->y_size-ret->titleHight)/ret->itemNumOnePage;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SYSFILE_ClearItem (WIN_SysFileStruct *filder)
|
|
|
|
|
{
|
|
|
|
|
filder->fileNum=0;
|
|
|
|
|
filder->firstItemOnPage=0;
|
|
|
|
|
filder->index=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SYSFILE_AddItem (WIN_SysFileStruct *filder,FLASH_FileStruct *file)
|
|
|
|
|
{
|
|
|
|
|
if (filder->fileNum<SYSFILE_FILE_MAXNUM)
|
|
|
|
|
{
|
|
|
|
|
mymemcpy (&filder->file[filder->fileNum],file,sizeof (FLASH_FileStruct));
|
|
|
|
|
filder->fileNum++;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ɨ<><C9A8><EFBFBD>ļ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SYSFILE_ScanFile (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
|
|
|
|
sysfile->fileNum=FLASH_GetFileNum();
|
|
|
|
|
for (int i=0;i<sysfile->fileNum;i++)
|
|
|
|
|
{
|
|
|
|
|
FLASH_GetFileInfo (i,&sysfile->file[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SYSFILE_OpenFile (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
|
|
|
|
int str_len=strlen(sysfile->file[sysfile->index].FileName);
|
|
|
|
|
char *p_str=&sysfile->file[sysfile->index].FileName[str_len-4];
|
|
|
|
|
if (strcmp (p_str,".pic")==0)
|
|
|
|
|
{
|
|
|
|
|
WIN_PicStruct pic={0};
|
|
|
|
|
u32 file_size=0;
|
|
|
|
|
u8 *data=0;
|
|
|
|
|
u8 ret=0;
|
|
|
|
|
if (FLASH_FindFile (sysfile->file[sysfile->index].FileName,&file_size)!=0)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLASH<53>ж<EFBFBD>ȡͼ<C8A1><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
data=mymalloc (file_size);
|
|
|
|
|
FLASH_ReadFile (sysfile->file[sysfile->index].FileName,0,(u8*)data,file_size);
|
|
|
|
|
ret=WIN_GetImageSize ((u8*)data,&pic.xsize,&pic.ysize);
|
|
|
|
|
if (ret==0)
|
|
|
|
|
{
|
|
|
|
|
pic.data=(u16*)(data+8);
|
|
|
|
|
}
|
|
|
|
|
PHOTO_ShowPic ((WIN_WindowStruct *)sysfile,&pic);
|
|
|
|
|
myfree(data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ((strcmp (p_str,".nes")==0)||(strcmp (p_str,".NES")==0))
|
|
|
|
|
{
|
|
|
|
|
u32 file_size=0;
|
|
|
|
|
u8 *data=0;
|
|
|
|
|
u8 ret=0;
|
|
|
|
|
if (FLASH_FindFile (sysfile->file[sysfile->index].FileName,&file_size)!=0)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLASH<53>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
data=mymalloc (file_size);
|
|
|
|
|
FLASH_ReadFile (sysfile->file[sysfile->index].FileName,0,(u8*)data,file_size);
|
|
|
|
|
WIN_KeyShieldOn();
|
|
|
|
|
//nes_start (data,file_size,LCD_GetShowAddr(),LCD_GetLcdSizeX()/2-128,LCD_GetLcdSizeY()/2-120);
|
|
|
|
|
WIN_KeyShieldOff();
|
|
|
|
|
myfree(data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (strcmp (p_str,".app")==0)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (MSGBOX_Inquiry((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣿷DZ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>","ȡ<EFBFBD><EFBFBD>")==0)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ָ<><D6B8> <20>ļ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
(*(u32 *)0x20000000)=0xff000002;
|
|
|
|
|
(*(u32 *)0x20000004)=sysfile->index;
|
|
|
|
|
NVIC_SystemReset ();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD>ļ<EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD>Ļ<EFBFBD><C4BB>ƺ<EFBFBD><C6BA><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SYSFILE_DefaultPaint (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ʹ<><CAB9>˫<EFBFBD><CBAB><EFBFBD>壬<EFBFBD><E5A3AC>ֹ<EFBFBD><D6B9>˸
|
2025-06-27 00:32:57 +08:00
|
|
|
|
// LCD_LayerBufferOn();
|
|
|
|
|
|
|
|
|
|
int x=0;
|
|
|
|
|
int y=0;
|
|
|
|
|
int x_size=((WIN_WindowStruct *)sysfile)->x_size;
|
|
|
|
|
int y_size=((WIN_WindowStruct *)sysfile)->y_size;
|
|
|
|
|
char txt_buff[20]={0};
|
|
|
|
|
WIN_PaintBackGround ((WIN_WindowStruct *)sysfile);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int scrollbar_x=x_size-10-1;
|
|
|
|
|
int scrollbar_y=y+sysfile->titleHight;
|
|
|
|
|
int scrollbar_xsize=10;
|
|
|
|
|
int scrollbar_ysize=y_size-scrollbar_y;
|
|
|
|
|
int scrollbar_tstart=sysfile->firstItemOnPage*scrollbar_ysize/sysfile->fileNum;
|
|
|
|
|
int scrollbar_tsize=sysfile->itemNumOnePage*scrollbar_ysize/sysfile->fileNum;
|
|
|
|
|
WIN_SetLcdColor (((WIN_WindowStruct *)sysfile)->color);
|
|
|
|
|
WIN_DrawHLine (scrollbar_x,scrollbar_y,scrollbar_x+scrollbar_xsize-1);
|
|
|
|
|
WIN_DrawHLine (scrollbar_x,scrollbar_y+scrollbar_ysize-1,scrollbar_x+scrollbar_xsize-1);
|
|
|
|
|
WIN_DrawVLine (scrollbar_x,scrollbar_y,scrollbar_y+scrollbar_ysize-1);
|
|
|
|
|
WIN_DrawVLine (scrollbar_x+scrollbar_xsize-1,scrollbar_y,scrollbar_y+scrollbar_ysize-1);
|
|
|
|
|
WIN_FillRectByColor (scrollbar_x,scrollbar_y+scrollbar_tstart,scrollbar_xsize,scrollbar_tsize);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
WIN_SetFontMode (WIN_DRAWMODE_ALONE);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
WIN_DrawTxtHCenterAt ("ϵͳ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",x_size/2,sysfile->titleHight/2-WIN_GetFontHight()/2);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sprintf (txt_buff,"%d/%d",sysfile->index+1,sysfile->fileNum);
|
|
|
|
|
WIN_DrawTxtAt (txt_buff,x_size-WIN_GetFontWidth()*strlen(txt_buff)/2-1,sysfile->titleHight/2-WIN_GetFontHight()/2);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾѡ<CABE>п<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int selete_x=x;
|
|
|
|
|
int selete_y=y+sysfile->titleHight;
|
|
|
|
|
int selete_xsize=x_size-scrollbar_xsize-1;
|
|
|
|
|
int selete_ysize=sysfile->itemHight;
|
|
|
|
|
WIN_SetLcdColor (0x00ffff);
|
|
|
|
|
selete_y+=sysfile->itemHight*(sysfile->index-sysfile->firstItemOnPage);
|
|
|
|
|
//WIN_FillRectByColor (selete_x,selete_y,selete_xsize,selete_ysize);
|
|
|
|
|
WIN_FillRectByColorAlpha (selete_x,selete_y,selete_xsize,selete_ysize,16);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾ<EFBFBD>ļ<EFBFBD>
|
|
|
|
|
RECT_Struct rs={0};//<2F><><EFBFBD>ڲü<DAB2><C3BC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
rs.x=x;rs.y=y+sysfile->titleHight;
|
|
|
|
|
rs.x_size=x_size-scrollbar_xsize-1;
|
|
|
|
|
rs.y_size=sysfile->itemHight;
|
|
|
|
|
WIN_SetLcdColor (((WIN_WindowStruct *)sysfile)->color);
|
|
|
|
|
for (int i=0;i<sysfile->itemNumOnePage;i++)
|
|
|
|
|
{
|
|
|
|
|
if (i+sysfile->firstItemOnPage<sysfile->fileNum)
|
|
|
|
|
{
|
|
|
|
|
WIN_SetWinInvalidRect (((WIN_WindowStruct *)sysfile),&rs);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾͼ<CABE><CDBC>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int img_xsize=0;
|
|
|
|
|
int img_ysize=0;
|
|
|
|
|
u8 *img=0;
|
|
|
|
|
//if (sysfile->file[i+sysfile->firstItemOnPage].type==FILDER_DIR_TYPE)
|
|
|
|
|
//{img=filder->imgDir;} else {img=filder->imgFile;}
|
|
|
|
|
if (img)
|
|
|
|
|
{
|
|
|
|
|
WIN_GetImageSize (img,&img_xsize,&img_ysize);
|
|
|
|
|
if (img_xsize>sysfile->itemIndent) img_xsize=sysfile->itemIndent;
|
|
|
|
|
if (img_ysize>rs.y_size) img_ysize=rs.y_size;
|
|
|
|
|
WIN_DrawImag (x+sysfile->itemIndent/2-img_xsize/2,rs.y+rs.y_size/2-img_ysize/2,
|
|
|
|
|
img_xsize,img_ysize,img);
|
|
|
|
|
}
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
WIN_DrawTxtAt (sysfile->file[i+sysfile->firstItemOnPage].FileName,rs.x+sysfile->itemIndent,rs.y+rs.y_size/2-WIN_GetFontHight()/2);
|
|
|
|
|
}
|
|
|
|
|
rs.y+=sysfile->itemHight;
|
|
|
|
|
}
|
|
|
|
|
WIN_SetWinInvalidRect (((WIN_WindowStruct *)sysfile),0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// LCD_LayerBuffShow();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
}sysfile_copy_struct;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƶ<EFBFBD>SD<53><44>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
static int sysfile_copy (void *ptr)
|
|
|
|
|
{
|
|
|
|
|
sysfile_copy_struct *t=ptr;
|
|
|
|
|
u32 file_size=0;
|
|
|
|
|
int ret_int=0;
|
|
|
|
|
if (FLASH_FindFile (t->name,&file_size)!=0)
|
|
|
|
|
{
|
|
|
|
|
u8 *data=mymalloc (file_size);
|
|
|
|
|
FLASH_ReadFile (t->name,0,(u8*)data,file_size);
|
|
|
|
|
FIL *file=mymalloc (sizeof (FIL));
|
|
|
|
|
char *file_name=mymalloc (256);
|
|
|
|
|
FRESULT ret=FR_OK;
|
|
|
|
|
sprintf (file_name,"0:/SYS/%s",t->name);
|
|
|
|
|
ret=f_open (file,file_name,FA_CREATE_NEW|FA_WRITE);
|
|
|
|
|
if (ret==FR_OK)
|
|
|
|
|
{
|
|
|
|
|
UINT real=0;
|
|
|
|
|
ret=f_write (file,data,file_size,&real);
|
|
|
|
|
if (ret!=FR_OK)
|
|
|
|
|
while (1);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
else ret_int=1;//<2F><><EFBFBD><EFBFBD>1<EFBFBD>ɹ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
else ret_int=0;
|
|
|
|
|
f_close (file);
|
|
|
|
|
myfree(file);
|
|
|
|
|
myfree(file_name);
|
|
|
|
|
myfree(data);
|
|
|
|
|
}
|
|
|
|
|
return ret_int;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
static int sysfile_del (void *ptr)
|
|
|
|
|
{
|
|
|
|
|
int index=(int)ptr;
|
|
|
|
|
return FLASH_DeleteFile (index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void SYSFILE_Down (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
|
|
|
|
if ( sysfile->index<sysfile->fileNum-1)
|
|
|
|
|
{
|
|
|
|
|
sysfile->index++;
|
|
|
|
|
if (sysfile->index>=sysfile->firstItemOnPage+sysfile->itemNumOnePage)
|
|
|
|
|
{
|
|
|
|
|
sysfile->firstItemOnPage++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sysfile->index=0;
|
|
|
|
|
sysfile->firstItemOnPage=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void SYSFILE_Up (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
|
|
|
|
if ( sysfile->index>0)
|
|
|
|
|
{
|
|
|
|
|
sysfile->index--;
|
|
|
|
|
if (sysfile->index<sysfile->firstItemOnPage)
|
|
|
|
|
{
|
|
|
|
|
sysfile->firstItemOnPage--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sysfile->index=sysfile->fileNum-1;
|
|
|
|
|
if (sysfile->fileNum>sysfile->itemNumOnePage)
|
|
|
|
|
sysfile->firstItemOnPage=sysfile->fileNum-sysfile->itemNumOnePage;
|
|
|
|
|
else sysfile->firstItemOnPage=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void SYSFILE_Enter (WIN_SysFileStruct *sysfile)
|
|
|
|
|
{
|
|
|
|
|
int index=POPUP_SelectItem ((WIN_WindowStruct *)sysfile,(char **)g_popup_itmes,8,100,100);
|
|
|
|
|
if (index==0)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
SYSFILE_OpenFile (sysfile);
|
|
|
|
|
}
|
|
|
|
|
else if (index==1)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
char *txt_buff=mymalloc (256);
|
|
|
|
|
mymemcpy (txt_buff,sysfile->file[sysfile->index].FileName,strlen(sysfile->file[sysfile->index].FileName)+1);
|
|
|
|
|
INPUT_KeyBoard ((WIN_WindowStruct *)sysfile,txt_buff,256);
|
|
|
|
|
myfree(txt_buff);
|
|
|
|
|
}
|
|
|
|
|
else if (index==2)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
SysFile_SetBackPicPath (sysfile->file[sysfile->index].FileName);
|
|
|
|
|
WIN_WindowStruct *home=WIN_GetWinByTitle(0,"home");
|
|
|
|
|
if(home)
|
|
|
|
|
{
|
|
|
|
|
WIN_SetBackPicPath(home,SysFile_GetSysFile()->backPicPath);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (index==3)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD>Ƶ<EFBFBD>SD<53><44>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sysfile_copy_struct cop={0};
|
|
|
|
|
cop.name=sysfile->file[sysfile->index].FileName;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
if (WORKING_DoWork ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>SD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",sysfile_copy,&cop))
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴɹ<EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
2025-07-05 19:47:28 +08:00
|
|
|
|
else MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
else if (index==4)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ɾ<><C9BE>
|
|
|
|
|
if (MSGBOX_Inquiry((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>","ȡ<EFBFBD><EFBFBD>")==0)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
|
|
|
|
//if (FLASH_DeleteFile(sysfile->index)==0)
|
2025-07-05 19:47:28 +08:00
|
|
|
|
if (WORKING_DoWork ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",sysfile_del,(void *)sysfile->index)==0)
|
|
|
|
|
{MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000); }
|
2025-06-27 00:32:57 +08:00
|
|
|
|
else
|
2025-07-05 19:47:28 +08:00
|
|
|
|
{MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD>ļ<EFBFBD>ɾ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000); }
|
2025-06-27 00:32:57 +08:00
|
|
|
|
SYSFILE_ClearItem (sysfile);
|
|
|
|
|
SYSFILE_ScanFile(sysfile);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (index==5)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
char *txt_buff=mymalloc (512);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
sprintf (txt_buff,"<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>%d Byte\nλ<EFBFBD>ã<EFBFBD>%d",sysfile->file[sysfile->index].FileName,
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sysfile->file[sysfile->index].FileSize,sysfile->file[sysfile->index].Address);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_Tips((WIN_WindowStruct *)sysfile,"<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ϣ",txt_buff,"ȷ<EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
myfree(txt_buff);
|
|
|
|
|
}
|
|
|
|
|
else if (index==6)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//flashʹ<68><CAB9><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
char *txt_buff=mymalloc (512);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
sprintf (txt_buff,"<EFBFBD>ܿռ䣺%d Byte\n<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>%d Byte",FLASH_GetFlashSize(),
|
2025-06-27 00:32:57 +08:00
|
|
|
|
FLASH_GetUsed());
|
2025-07-05 19:47:28 +08:00
|
|
|
|
MSGBOX_Tips((WIN_WindowStruct *)sysfile,"<EFBFBD>洢<EFBFBD>ռ<EFBFBD>",txt_buff,"ȷ<EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
myfree(txt_buff);
|
|
|
|
|
}
|
|
|
|
|
else if(index==7)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
if (WORKING_DoWork ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",(int (*)(void *))FLASH_EraseAllSector,0)==0)
|
|
|
|
|
{MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000); }
|
2025-06-27 00:32:57 +08:00
|
|
|
|
else
|
2025-07-05 19:47:28 +08:00
|
|
|
|
{MSGBOX_TipsTime ((WIN_WindowStruct *)sysfile,"<EFBFBD><EFBFBD>ʾ","<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>","ȷ<EFBFBD><EFBFBD>",5000); }
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SYSFILE_defaultMsgLoop (WIN_SysFileStruct *sysfile,WIN_MsgStruct *msg)
|
|
|
|
|
{
|
|
|
|
|
WIN_MoveStruct *m=0;
|
|
|
|
|
WIN_KeyStruct *k=0;
|
|
|
|
|
switch (msg->msg)
|
|
|
|
|
{
|
|
|
|
|
case WIN_MSG_PAINT:
|
|
|
|
|
SYSFILE_DefaultPaint(sysfile);
|
|
|
|
|
break;
|
|
|
|
|
case WIN_MSG_KEY:
|
|
|
|
|
k=msg->data.p;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F>յ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ؼ<F2B7B5BB>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
if (k->shortPress& KEY_VALUE_DOWN)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Down(sysfile);
|
|
|
|
|
}//if (k->shortPress&KEY_VALUE_DOWN)
|
|
|
|
|
else if (k->shortPress&KEY_VALUE_UP)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Up(sysfile);
|
|
|
|
|
}//else if (k->shortPress&KEY_VALUE_UP)
|
|
|
|
|
else if (k->shortPress&KEY_VALUE_ENTER)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Enter(sysfile);
|
|
|
|
|
}
|
|
|
|
|
else if (k->shortPress&KEY_VALUE_HOME)
|
|
|
|
|
{
|
|
|
|
|
((WIN_WindowStruct *)sysfile)->deleteWindow((WIN_WindowStruct *)sysfile);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
break;//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>أ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
if (k->shortPress)
|
|
|
|
|
{
|
|
|
|
|
WIN_SetInvalid((WIN_WindowStruct *)sysfile);
|
|
|
|
|
}
|
|
|
|
|
break;//case WIN_MSG_KEY:
|
|
|
|
|
case WIN_MSG_MOVE:
|
|
|
|
|
m=msg->data.p;
|
|
|
|
|
switch (m->moveType)
|
|
|
|
|
{
|
|
|
|
|
case MOVE_DATA_SHORT:
|
|
|
|
|
if (sysfile->touch_support==0)
|
|
|
|
|
{
|
|
|
|
|
sysfile->touch_support=1;
|
|
|
|
|
int y_size=((WIN_WindowStruct *)sysfile)->y_size;
|
|
|
|
|
int x_size=((WIN_WindowStruct *)sysfile)->x_size;
|
|
|
|
|
sysfile->key_enter=WIN_CreatButton(((WIN_WindowStruct *)sysfile),0,x_size-100,y_size/2+25,90,45);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
BUTTON_SetKeyString(sysfile->key_enter,"ȷ<EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sysfile->key_back=WIN_CreatButton(((WIN_WindowStruct *)sysfile),0,x_size-100,y_size/2+25+50,90,45);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
BUTTON_SetKeyString(sysfile->key_back,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sysfile->key_up=WIN_CreatButton(((WIN_WindowStruct *)sysfile),0,x_size-100,y_size/2-50-50,90,45);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
BUTTON_SetKeyString(sysfile->key_up,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
sysfile->key_down=WIN_CreatButton(((WIN_WindowStruct *)sysfile),0,x_size-100,y_size/2-50,90,45);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
BUTTON_SetKeyString(sysfile->key_down,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
2025-06-27 00:32:57 +08:00
|
|
|
|
WIN_SetInvalid((WIN_WindowStruct *)sysfile);
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
WIN_DefaultMsgLoop ((WIN_WindowStruct *)sysfile,msg);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case WIN_MSG_CHID:
|
|
|
|
|
switch (msg->data.v)
|
|
|
|
|
{
|
|
|
|
|
case CHID_DELETE:
|
|
|
|
|
break;
|
|
|
|
|
case CHID_USER:
|
|
|
|
|
{
|
|
|
|
|
if (msg->data2.v==BUTTON_PRESSED)
|
|
|
|
|
{
|
|
|
|
|
if (msg->srcWin==sysfile->key_back)
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
((WIN_WindowStruct *)sysfile)->deleteWindow((WIN_WindowStruct *)sysfile);
|
|
|
|
|
}
|
|
|
|
|
else if (msg->srcWin==sysfile->key_up)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Up(sysfile);
|
|
|
|
|
}
|
|
|
|
|
else if (msg->srcWin==sysfile->key_down)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Down(sysfile);
|
|
|
|
|
}
|
|
|
|
|
else if (msg->srcWin==sysfile->key_enter)
|
|
|
|
|
{
|
|
|
|
|
SYSFILE_Enter(sysfile);
|
|
|
|
|
}
|
|
|
|
|
WIN_SetInvalid((WIN_WindowStruct *)sysfile);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
WIN_DefaultMsgLoop((WIN_WindowStruct *)sysfile,msg);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ѡ<><D1A1><EFBFBD>ļ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int SYSFILE_ChooseFile (WIN_WindowStruct *win)
|
|
|
|
|
{
|
|
|
|
|
WIN_SysFileStruct *sysfile=0;
|
|
|
|
|
if (win)
|
|
|
|
|
{
|
|
|
|
|
int x,y,xsize,ysize;
|
|
|
|
|
sysfile=WIN_CreatSysFile (win,0,0,0,win->x_size,win->y_size);
|
|
|
|
|
}
|
|
|
|
|
else sysfile=WIN_CreatSysFile (0,0,0,0,WIN_GetWinStruct()->lcd->getLcdSizeX(),WIN_GetWinStruct()->lcd->getLcdSizeY());
|
|
|
|
|
WIN_SetBackPicPath ((WIN_WindowStruct *)sysfile,win->pic_path);
|
|
|
|
|
SYSFILE_ScanFile (sysfile);
|
|
|
|
|
WIN_ShowWindow((WIN_WindowStruct *)sysfile);
|
|
|
|
|
//return WIN_RunBlock ((WIN_WindowStruct *)sysfile);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|