工具界面转换字符编码
This commit is contained in:
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@@ -7,7 +7,11 @@
|
|||||||
"stm32f4xx.h": "c",
|
"stm32f4xx.h": "c",
|
||||||
"libc.h": "c",
|
"libc.h": "c",
|
||||||
"*.txt": "c",
|
"*.txt": "c",
|
||||||
"*.tmp": "c"
|
"*.tmp": "c",
|
||||||
|
"mywin_inc.h": "c",
|
||||||
|
"mywin_user_status_bar.h": "c",
|
||||||
|
"elf.h": "c",
|
||||||
|
"string.h": "c"
|
||||||
},
|
},
|
||||||
"cortex-debug.variableUseNaturalFormat": false
|
"cortex-debug.variableUseNaturalFormat": false
|
||||||
}
|
}
|
@@ -13,14 +13,12 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "nrf.h"
|
#include "nrf.h"
|
||||||
#include "mywin_user_debug.h"
|
#include "mywin_user_debug.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
// 文件管理器
|
// 文件管理器
|
||||||
|
|
||||||
#define WIN_FILDER_TYPE "WIN_FilderStruct"
|
#define WIN_FILDER_TYPE "WIN_FilderStruct"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const char *g_popup_itmes[] =
|
static const char *g_popup_itmes[] =
|
||||||
{
|
{
|
||||||
"打开",
|
"打开",
|
||||||
@@ -31,10 +29,8 @@ static const char *g_popup_itmes[]=
|
|||||||
"发送",
|
"发送",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void FILDER_Delete(WIN_FilderStruct *up);
|
void FILDER_Delete(WIN_FilderStruct *up);
|
||||||
|
|
||||||
|
|
||||||
WIN_FilderStruct *WIN_CreatFilder(WIN_WindowStruct *base,
|
WIN_FilderStruct *WIN_CreatFilder(WIN_WindowStruct *base,
|
||||||
void (*msgLoop)(struct _WIN_WindowStruct *win, WIN_MsgStruct *msg),
|
void (*msgLoop)(struct _WIN_WindowStruct *win, WIN_MsgStruct *msg),
|
||||||
int x, int y, int x_size, int y_size)
|
int x, int y, int x_size, int y_size)
|
||||||
@@ -78,23 +74,17 @@ WIN_FilderStruct *WIN_CreatFilder (WIN_WindowStruct *base,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void FILDER_Delete(WIN_FilderStruct *up)
|
void FILDER_Delete(WIN_FilderStruct *up)
|
||||||
{
|
{
|
||||||
tools_updata_off();
|
tools_updata_off();
|
||||||
|
|
||||||
// 调用父类的销毁函数
|
// 调用父类的销毁函数
|
||||||
WIN_DeleteWindow((WIN_WindowStruct *)up);
|
WIN_DeleteWindow((WIN_WindowStruct *)up);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 设置文件索引
|
// 设置文件索引
|
||||||
int FILDER_SetIndex(WIN_FilderStruct *filder, int index);
|
int FILDER_SetIndex(WIN_FilderStruct *filder, int index);
|
||||||
|
|
||||||
@@ -106,7 +96,6 @@ void FILDER_SetFileDir (WIN_FilderStruct *filder,char *dir)
|
|||||||
FILDER_ScanFile(filder);
|
FILDER_ScanFile(filder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 清空条目
|
// 清空条目
|
||||||
void FILDER_ClearItem(WIN_FilderStruct *filder)
|
void FILDER_ClearItem(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -117,8 +106,6 @@ void FILDER_ClearItem (WIN_FilderStruct *filder)
|
|||||||
FILDER_SetIndex(filder, 0);
|
FILDER_SetIndex(filder, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 添加一个文件条目
|
// 添加一个文件条目
|
||||||
void FILDER_AddItem(WIN_FilderStruct *filder, Filder_FildInfo *file)
|
void FILDER_AddItem(WIN_FilderStruct *filder, Filder_FildInfo *file)
|
||||||
{
|
{
|
||||||
@@ -129,15 +116,17 @@ void FILDER_AddItem (WIN_FilderStruct *filder,Filder_FildInfo *file)
|
|||||||
|
|
||||||
// 如果是文件夹,文件夹数目加1
|
// 如果是文件夹,文件夹数目加1
|
||||||
if (file->type == FILDER_DIR_TYPE)
|
if (file->type == FILDER_DIR_TYPE)
|
||||||
{ filder->dirNum++; }
|
{
|
||||||
|
filder->dirNum++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 在指定位置插入一个条目
|
// 在指定位置插入一个条目
|
||||||
void FILDER_InsertItem(WIN_FilderStruct *filder, Filder_FildInfo *file, int index)
|
void FILDER_InsertItem(WIN_FilderStruct *filder, Filder_FildInfo *file, int index)
|
||||||
{
|
{
|
||||||
if (index<0) return;
|
if (index < 0)
|
||||||
|
return;
|
||||||
if (filder->fileNum < FILDER_FILE_MAXNUM)
|
if (filder->fileNum < FILDER_FILE_MAXNUM)
|
||||||
{
|
{
|
||||||
// 在列表中间插入条目
|
// 在列表中间插入条目
|
||||||
@@ -154,7 +143,9 @@ void FILDER_InsertItem (WIN_FilderStruct *filder,Filder_FildInfo *file,int index
|
|||||||
|
|
||||||
// 如果是文件夹,文件夹数目加1
|
// 如果是文件夹,文件夹数目加1
|
||||||
if (file->type == FILDER_DIR_TYPE)
|
if (file->type == FILDER_DIR_TYPE)
|
||||||
{ filder->dirNum++; }
|
{
|
||||||
|
filder->dirNum++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -163,7 +154,6 @@ void FILDER_InsertItem (WIN_FilderStruct *filder,Filder_FildInfo *file,int index
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 入栈
|
// 入栈
|
||||||
int FILDER_PathPush(WIN_FilderStruct *filder)
|
int FILDER_PathPush(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -200,8 +190,6 @@ int FILDER_PathPull (WIN_FilderStruct *filder)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 把文件名追加到目录,同时扫描路径下的文件,目标不是目录时返回-1
|
// 把文件名追加到目录,同时扫描路径下的文件,目标不是目录时返回-1
|
||||||
int FILDER_DirAppend(WIN_FilderStruct *filder, Filder_FildInfo *file)
|
int FILDER_DirAppend(WIN_FilderStruct *filder, Filder_FildInfo *file)
|
||||||
{
|
{
|
||||||
@@ -228,9 +216,14 @@ int FILDER_DirAppend (WIN_FilderStruct *filder,Filder_FildInfo *file)
|
|||||||
int FILDER_DirCut(WIN_FilderStruct *filder)
|
int FILDER_DirCut(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
int dir_len = strlen(filder->dirName);
|
int dir_len = strlen(filder->dirName);
|
||||||
if (dir_len==0) return -1;
|
if (dir_len == 0)
|
||||||
|
return -1;
|
||||||
char *ptr_name = &filder->dirName[dir_len - 1];
|
char *ptr_name = &filder->dirName[dir_len - 1];
|
||||||
while (*ptr_name&&(*ptr_name!='/')&&(*ptr_name!=':')) {*ptr_name=0;ptr_name--;}
|
while (*ptr_name && (*ptr_name != '/') && (*ptr_name != ':'))
|
||||||
|
{
|
||||||
|
*ptr_name = 0;
|
||||||
|
ptr_name--;
|
||||||
|
}
|
||||||
if (*ptr_name == '/')
|
if (*ptr_name == '/')
|
||||||
{
|
{
|
||||||
*ptr_name = 0;
|
*ptr_name = 0;
|
||||||
@@ -246,7 +239,6 @@ int FILDER_DirCut (WIN_FilderStruct *filder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 生成文件路径
|
// 生成文件路径
|
||||||
void FILDER_GetFileRoute(WIN_FilderStruct *filder)
|
void FILDER_GetFileRoute(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -257,7 +249,6 @@ void FILDER_GetFileRoute (WIN_FilderStruct *filder)
|
|||||||
mymemcpy(&filder->fileName[dir_len], filder->file[filder->index].name, strlen(filder->file[filder->index].name) + 1);
|
mymemcpy(&filder->fileName[dir_len], filder->file[filder->index].name, strlen(filder->file[filder->index].name) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 扫描文件
|
// 扫描文件
|
||||||
void FILDER_ScanFile(WIN_FilderStruct *filder)
|
void FILDER_ScanFile(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -273,8 +264,13 @@ void FILDER_ScanFile (WIN_FilderStruct *filder)
|
|||||||
mymemcpy(file_info_x->name, file_info->fname, strlen(file_info->fname) + 1);
|
mymemcpy(file_info_x->name, file_info->fname, strlen(file_info->fname) + 1);
|
||||||
file_info_x->size = file_info->fsize;
|
file_info_x->size = file_info->fsize;
|
||||||
if (AM_DIR & file_info->fattrib)
|
if (AM_DIR & file_info->fattrib)
|
||||||
{file_info_x->type=FILDER_DIR_TYPE;}
|
{
|
||||||
else {file_info_x->type=FILDER_FILE_TYPE;}
|
file_info_x->type = FILDER_DIR_TYPE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file_info_x->type = FILDER_FILE_TYPE;
|
||||||
|
}
|
||||||
if (filder->fileNum < FILDER_FILE_MAXNUM)
|
if (filder->fileNum < FILDER_FILE_MAXNUM)
|
||||||
{
|
{
|
||||||
if (file_info_x->type == FILDER_DIR_TYPE)
|
if (file_info_x->type == FILDER_DIR_TYPE)
|
||||||
@@ -296,9 +292,6 @@ void FILDER_ScanFile (WIN_FilderStruct *filder)
|
|||||||
myfree(file_info_x);
|
myfree(file_info_x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 打开文件
|
// 打开文件
|
||||||
void FILDER_OpenFile(WIN_FilderStruct *filder)
|
void FILDER_OpenFile(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -335,7 +328,10 @@ void FILDER_OpenFile (WIN_FilderStruct *filder)
|
|||||||
f_read(file, data, file_info->fsize, &br);
|
f_read(file, data, file_info->fsize, &br);
|
||||||
f_close(file);
|
f_close(file);
|
||||||
res = WIN_GetImageSize((u8 *)data, &pic.xsize, &pic.ysize);
|
res = WIN_GetImageSize((u8 *)data, &pic.xsize, &pic.ysize);
|
||||||
if (res==0){pic.data=(u16*)(data+8);}
|
if (res == 0)
|
||||||
|
{
|
||||||
|
pic.data = (u16 *)(data + 8);
|
||||||
|
}
|
||||||
PHOTO_ShowPic((WIN_WindowStruct *)filder, &pic);
|
PHOTO_ShowPic((WIN_WindowStruct *)filder, &pic);
|
||||||
myfree(data);
|
myfree(data);
|
||||||
myfree(file);
|
myfree(file);
|
||||||
@@ -352,7 +348,6 @@ void FILDER_OpenFile (WIN_FilderStruct *filder)
|
|||||||
WIN_KeyShieldOn();
|
WIN_KeyShieldOn();
|
||||||
// nes_load ((u8*)filder->fileName,LCD_GetShowAddr(),LCD_GetLcdSizeX()/2-128,LCD_GetLcdSizeY()/2-120);
|
// nes_load ((u8*)filder->fileName,LCD_GetShowAddr(),LCD_GetLcdSizeX()/2-128,LCD_GetLcdSizeY()/2-120);
|
||||||
WIN_KeyShieldOff();
|
WIN_KeyShieldOff();
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (strcmp(p_str, ".avi") == 0)
|
else if (strcmp(p_str, ".avi") == 0)
|
||||||
{
|
{
|
||||||
@@ -384,12 +379,10 @@ void FILDER_OpenFile (WIN_FilderStruct *filder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void FILDER_PaintItem(WIN_FilderStruct *filder, int index)
|
void FILDER_PaintItem(WIN_FilderStruct *filder, int index)
|
||||||
{
|
{
|
||||||
if(index<0||index>=filder->fileNum) return ;
|
if (index < 0 || index >= filder->fileNum)
|
||||||
|
return;
|
||||||
|
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = filder->titleHight + filder->y_off + (index - filder->firstItemOnPage) * filder->itemHight;
|
int y = filder->titleHight + filder->y_off + (index - filder->firstItemOnPage) * filder->itemHight;
|
||||||
@@ -401,7 +394,13 @@ void FILDER_PaintItem(WIN_FilderStruct *filder,int index)
|
|||||||
int img_ysize = 0;
|
int img_ysize = 0;
|
||||||
char *img = 0;
|
char *img = 0;
|
||||||
if (file->type == FILDER_DIR_TYPE)
|
if (file->type == FILDER_DIR_TYPE)
|
||||||
{img=filder->imgDir;} else {img=filder->imgFile;}
|
{
|
||||||
|
img = filder->imgDir;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
img = filder->imgFile;
|
||||||
|
}
|
||||||
if (img)
|
if (img)
|
||||||
{
|
{
|
||||||
WIN_PicStruct *pic = WIN_GetPic(img);
|
WIN_PicStruct *pic = WIN_GetPic(img);
|
||||||
@@ -423,8 +422,6 @@ void FILDER_PaintItem(WIN_FilderStruct *filder,int index)
|
|||||||
WIN_DrawTxtAt(file->name, x + filder->itemIndent, y + y_size / 2 - WIN_GetFontHight() / 2);
|
WIN_DrawTxtAt(file->name, x + filder->itemIndent, y + y_size / 2 - WIN_GetFontHight() / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 绘制函数
|
// 绘制函数
|
||||||
void FILDER_DefaultPaint(WIN_FilderStruct *filder)
|
void FILDER_DefaultPaint(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
@@ -471,7 +468,8 @@ void FILDER_DefaultPaint (WIN_FilderStruct *filder)
|
|||||||
|
|
||||||
// 显示文件
|
// 显示文件
|
||||||
RECT_Struct rs = {0}; // 用于裁剪绘图区的矩形
|
RECT_Struct rs = {0}; // 用于裁剪绘图区的矩形
|
||||||
rs.x=x;rs.y=y+filder->titleHight;
|
rs.x = x;
|
||||||
|
rs.y = y + filder->titleHight;
|
||||||
rs.x_size = x_size - scrollbar_xsize - 1;
|
rs.x_size = x_size - scrollbar_xsize - 1;
|
||||||
rs.y_size = y_size - rs.y;
|
rs.y_size = y_size - rs.y;
|
||||||
WIN_SetLcdColor(((WIN_WindowStruct *)filder)->color);
|
WIN_SetLcdColor(((WIN_WindowStruct *)filder)->color);
|
||||||
@@ -481,22 +479,14 @@ void FILDER_DefaultPaint (WIN_FilderStruct *filder)
|
|||||||
FILDER_PaintItem(filder, i + filder->firstItemOnPage - 1);
|
FILDER_PaintItem(filder, i + filder->firstItemOnPage - 1);
|
||||||
}
|
}
|
||||||
WIN_SetWinInvalidRect(((WIN_WindowStruct *)filder), 0);
|
WIN_SetWinInvalidRect(((WIN_WindowStruct *)filder), 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
char *path;
|
char *path;
|
||||||
} sysfile_updata_struct;
|
} sysfile_updata_struct;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int sysfile_updata(void *ptr)
|
static int sysfile_updata(void *ptr)
|
||||||
{
|
{
|
||||||
sysfile_updata_struct *t = ptr;
|
sysfile_updata_struct *t = ptr;
|
||||||
@@ -504,7 +494,6 @@ static int sysfile_updata (void *ptr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void FILDER_Down(WIN_FilderStruct *filder)
|
static void FILDER_Down(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
if (filder->index < filder->fileNum - 1)
|
if (filder->index < filder->fileNum - 1)
|
||||||
@@ -522,8 +511,6 @@ static void FILDER_Down (WIN_FilderStruct *filder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void FILDER_Up(WIN_FilderStruct *filder)
|
static void FILDER_Up(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
if (filder->index > 0)
|
if (filder->index > 0)
|
||||||
@@ -539,19 +526,16 @@ static void FILDER_Up (WIN_FilderStruct *filder)
|
|||||||
FILDER_SetIndex(filder, filder->fileNum - 1);
|
FILDER_SetIndex(filder, filder->fileNum - 1);
|
||||||
if (filder->fileNum > filder->itemNumOnePage)
|
if (filder->fileNum > filder->itemNumOnePage)
|
||||||
filder->firstItemOnPage = filder->fileNum - filder->itemNumOnePage;
|
filder->firstItemOnPage = filder->fileNum - filder->itemNumOnePage;
|
||||||
else filder->firstItemOnPage=0;
|
else
|
||||||
|
filder->firstItemOnPage = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int g_send_file(void *t);
|
static int g_send_file(void *t);
|
||||||
static int set_progress(int now, int all);
|
static int set_progress(int now, int all);
|
||||||
static void get_progress(int *now, int *all);
|
static void get_progress(int *now, int *all);
|
||||||
static int g_send(void *data, int size);
|
static int g_send(void *data, int size);
|
||||||
|
|
||||||
|
|
||||||
static void FILDER_Enter(WIN_FilderStruct *filder, int x, int y)
|
static void FILDER_Enter(WIN_FilderStruct *filder, int x, int y)
|
||||||
{
|
{
|
||||||
// 打开
|
// 打开
|
||||||
@@ -578,7 +562,8 @@ static void FILDER_Enter (WIN_FilderStruct *filder,int x,int y)
|
|||||||
if (f_rename(txt_path_old, filder->fileName) == FR_OK)
|
if (f_rename(txt_path_old, filder->fileName) == FR_OK)
|
||||||
{
|
{
|
||||||
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件名修改成功", "确定", 5000);
|
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件名修改成功", "确定", 5000);
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件名修改失败", "确定", 5000);
|
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件名修改失败", "确定", 5000);
|
||||||
}
|
}
|
||||||
@@ -638,14 +623,10 @@ static void FILDER_Enter (WIN_FilderStruct *filder,int x,int y)
|
|||||||
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件发送成功", "确定", 5000);
|
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件发送成功", "确定", 5000);
|
||||||
else
|
else
|
||||||
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件发送失败", "确定", 5000);
|
MSGBOX_TipsTime((WIN_WindowStruct *)filder, "提示", "文件发送失败", "确定", 5000);
|
||||||
|
|
||||||
}
|
}
|
||||||
} // if (FILDER_DirAppend (filder,&filder->file[filder->index])==-1)
|
} // if (FILDER_DirAppend (filder,&filder->file[filder->index])==-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int g_send_now;
|
static int g_send_now;
|
||||||
static int g_send_all;
|
static int g_send_all;
|
||||||
static int set_progress(int now, int all)
|
static int set_progress(int now, int all)
|
||||||
@@ -663,7 +644,8 @@ static int g_send(void *data,int size)
|
|||||||
{
|
{
|
||||||
if (nrf_send(data, size, 0) == NRF_OK)
|
if (nrf_send(data, size, 0) == NRF_OK)
|
||||||
return 0;
|
return 0;
|
||||||
else return -1;
|
else
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
static int g_send_file(void *t)
|
static int g_send_file(void *t)
|
||||||
{
|
{
|
||||||
@@ -672,23 +654,17 @@ static int g_send_file(void *t)
|
|||||||
SysFile_SendStruct *send = t;
|
SysFile_SendStruct *send = t;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
ret = SysFile_SendFileName(send);
|
ret = SysFile_SendFileName(send);
|
||||||
if(ret!=0) return ret;
|
if (ret != 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
ret = SysFile_SendFileInfo(send);
|
ret = SysFile_SendFileInfo(send);
|
||||||
if(ret!=0) return ret;
|
if (ret != 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
ret = SysFile_SendFileData(send);
|
ret = SysFile_SendFileData(send);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void FILDER_Home(WIN_FilderStruct *filder)
|
static void FILDER_Home(WIN_FilderStruct *filder)
|
||||||
{
|
{
|
||||||
// 后退
|
// 后退
|
||||||
@@ -701,7 +677,8 @@ static void FILDER_Home (WIN_FilderStruct *filder)
|
|||||||
|
|
||||||
int FILDER_GetTouchIndex(WIN_FilderStruct *filder, int x, int y)
|
int FILDER_GetTouchIndex(WIN_FilderStruct *filder, int x, int y)
|
||||||
{
|
{
|
||||||
if(y<filder->titleHight) return -1;
|
if (y < filder->titleHight)
|
||||||
|
return -1;
|
||||||
return (y - filder->titleHight) / filder->itemHight + filder->firstItemOnPage;
|
return (y - filder->titleHight) / filder->itemHight + filder->firstItemOnPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -741,14 +718,30 @@ void FILDER_ScrollTimer(WIN_FilderStruct *filder)
|
|||||||
WIN_SetInvalidRectWhenTop((WIN_WindowStruct *)filder, filder->itemIndent, y, x_size, filder->itemHight);
|
WIN_SetInvalidRectWhenTop((WIN_WindowStruct *)filder, filder->itemIndent, y, x_size, filder->itemHight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FIRST_ADD() \
|
||||||
#define FIRST_ADD() {if (filder->firstItemOnPage<filder->fileNum-filder->itemNumOnePage) {filder->firstItemOnPage++;\
|
{ \
|
||||||
if(filder->index<filder->firstItemOnPage) FILDER_SetIndex(filder,filder->firstItemOnPage);\
|
if (filder->firstItemOnPage < filder->fileNum - filder->itemNumOnePage) \
|
||||||
filder->y_off+=filder->itemHight;}else filder->y_off=0;}
|
{ \
|
||||||
#define FIRST_SUB() {if (filder->firstItemOnPage>0) {filder->firstItemOnPage--;\
|
filder->firstItemOnPage++; \
|
||||||
|
if (filder->index < filder->firstItemOnPage) \
|
||||||
|
FILDER_SetIndex(filder, filder->firstItemOnPage); \
|
||||||
|
filder->y_off += filder->itemHight; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
filder->y_off = 0; \
|
||||||
|
}
|
||||||
|
#define FIRST_SUB() \
|
||||||
|
{ \
|
||||||
|
if (filder->firstItemOnPage > 0) \
|
||||||
|
{ \
|
||||||
|
filder->firstItemOnPage--; \
|
||||||
if (filder->index > filder->firstItemOnPage + filder->itemNumOnePage - 1) \
|
if (filder->index > filder->firstItemOnPage + filder->itemNumOnePage - 1) \
|
||||||
FILDER_SetIndex(filder, filder->firstItemOnPage + filder->itemNumOnePage - 1); \
|
FILDER_SetIndex(filder, filder->firstItemOnPage + filder->itemNumOnePage - 1); \
|
||||||
filder->y_off-=filder->itemHight;}else filder->y_off=0;}
|
filder->y_off -= filder->itemHight; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
filder->y_off = 0; \
|
||||||
|
}
|
||||||
|
|
||||||
#define IS_MIDDLE() (filder->firstItemOnPage > 0 || m->y_move < 0) && (filder->firstItemOnPage < filder->fileNum - filder->itemNumOnePage || m->y_move > 0)
|
#define IS_MIDDLE() (filder->firstItemOnPage > 0 || m->y_move < 0) && (filder->firstItemOnPage < filder->fileNum - filder->itemNumOnePage || m->y_move > 0)
|
||||||
|
|
||||||
@@ -882,7 +875,6 @@ void FILDER_defaultMsgLoop (WIN_FilderStruct *filder,WIN_MsgStruct *msg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 选则文件
|
// 选则文件
|
||||||
int FILDER_ChooseFile(WIN_WindowStruct *win, char *dir)
|
int FILDER_ChooseFile(WIN_WindowStruct *win, char *dir)
|
||||||
{
|
{
|
||||||
@@ -891,13 +883,11 @@ int FILDER_ChooseFile (WIN_WindowStruct *win,char *dir)
|
|||||||
{
|
{
|
||||||
filder = WIN_CreatFilder(win, 0, 0, 0, win->x_size, win->y_size);
|
filder = WIN_CreatFilder(win, 0, 0, 0, win->x_size, win->y_size);
|
||||||
}
|
}
|
||||||
else filder=WIN_CreatFilder (0,0,0,0,WIN_GetWinStruct()->lcd->getLcdSizeX(),WIN_GetWinStruct()->lcd->getLcdSizeY());
|
else
|
||||||
|
filder = WIN_CreatFilder(0, 0, 0, 0, WIN_GetWinStruct()->lcd->getLcdSizeX(), WIN_GetWinStruct()->lcd->getLcdSizeY());
|
||||||
WIN_SetBackPicPath((WIN_WindowStruct *)filder, win->pic_path);
|
WIN_SetBackPicPath((WIN_WindowStruct *)filder, win->pic_path);
|
||||||
FILDER_SetFileDir(filder, dir);
|
FILDER_SetFileDir(filder, dir);
|
||||||
WIN_ShowWindow((WIN_WindowStruct *)filder);
|
WIN_ShowWindow((WIN_WindowStruct *)filder);
|
||||||
// return WIN_RunBlock ((WIN_WindowStruct *)filder);
|
// return WIN_RunBlock ((WIN_WindowStruct *)filder);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,15 +4,11 @@
|
|||||||
#include "mywin_user_tool.h"
|
#include "mywin_user_tool.h"
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
#include "elf.h"
|
#include "elf.h"
|
||||||
|
#include "char_encode.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void MENU_ToolScanFile(WIN_MenuStruct *menu);
|
void MENU_ToolScanFile(WIN_MenuStruct *menu);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 进入设置页面
|
// 进入设置页面
|
||||||
WIN_MenuStruct *MENU_Tool(WIN_WindowStruct *base, WIN_PicStruct *pic)
|
WIN_MenuStruct *MENU_Tool(WIN_WindowStruct *base, WIN_PicStruct *pic)
|
||||||
{
|
{
|
||||||
@@ -30,51 +26,45 @@ WIN_MenuStruct *MENU_Tool (WIN_WindowStruct *base,WIN_PicStruct *pic)
|
|||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void MENU_ToolScanFile(WIN_MenuStruct *menu)
|
void MENU_ToolScanFile(WIN_MenuStruct *menu)
|
||||||
{
|
{
|
||||||
FRESULT ret = FR_OK;
|
FRESULT ret = FR_OK;
|
||||||
DIR dir = {0};
|
DIR dir = {0};
|
||||||
FILINFO *file_info = 0;
|
FILINFO *file_info = 0;
|
||||||
|
char *tmp = mymalloc(256);
|
||||||
file_info = mymalloc(sizeof(FILINFO));
|
file_info = mymalloc(sizeof(FILINFO));
|
||||||
ret = f_findfirst(&dir, file_info, TOOL_APP_PATH, "*.axf");
|
ret = f_findfirst(&dir, file_info, TOOL_APP_PATH, "*.axf");
|
||||||
while ((ret == FR_OK) && (file_info->fname[0] != 0))
|
while ((ret == FR_OK) && (file_info->fname[0] != 0))
|
||||||
{
|
{
|
||||||
if (AM_DIR&file_info->fattrib) continue;
|
if (AM_DIR & file_info->fattrib)
|
||||||
|
continue;
|
||||||
|
gbk2utf8_str(file_info->fname, tmp);
|
||||||
if (MENU_GetAllItemNum(menu) < TOOL_APP_MAXNUM)
|
if (MENU_GetAllItemNum(menu) < TOOL_APP_MAXNUM)
|
||||||
MENU_AddItem (menu,0,file_info->fname);
|
MENU_AddItem(menu, 0, tmp);
|
||||||
else break;
|
else
|
||||||
|
break;
|
||||||
ret = f_findnext(&dir, file_info);
|
ret = f_findnext(&dir, file_info);
|
||||||
}
|
}
|
||||||
myfree(file_info);
|
myfree(file_info);
|
||||||
|
myfree(tmp);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void MENU_ToolEnter(WIN_MenuStruct *menu)
|
static void MENU_ToolEnter(WIN_MenuStruct *menu)
|
||||||
{
|
{
|
||||||
// 选择了一个
|
// 选择了一个
|
||||||
char *path = mymalloc(256);
|
char *path = mymalloc(256);
|
||||||
sprintf(path,"%s/%s",TOOL_APP_PATH,MENU_GetSelectItem(menu));
|
char *tmp = mymalloc(256);
|
||||||
|
utf82gbk_str(MENU_GetSelectItem(menu), tmp);
|
||||||
|
sprintf(path, "%s/%s", TOOL_APP_PATH, tmp);
|
||||||
app_run_path(path);
|
app_run_path(path);
|
||||||
myfree(path);
|
myfree(path);
|
||||||
|
myfree(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void MENU_ToolDeleteFun(WIN_MenuStruct *menu)
|
static void MENU_ToolDeleteFun(WIN_MenuStruct *menu)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 消息处理函数
|
// 消息处理函数
|
||||||
void MENU_ToolMsgLoop(WIN_MenuStruct *menu, WIN_MsgStruct *msg)
|
void MENU_ToolMsgLoop(WIN_MenuStruct *menu, WIN_MsgStruct *msg)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user