| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | #include "mywin_inc.h"
 | 
					
						
							|  |  |  |  | #include "mywin_user_menu.h"
 | 
					
						
							|  |  |  |  | #include "system_file.h"
 | 
					
						
							|  |  |  |  | #include "mywin_user_tool.h"
 | 
					
						
							|  |  |  |  | #include "ff.h"
 | 
					
						
							|  |  |  |  | #include "elf.h"
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | #include "char_encode.h"
 | 
					
						
							|  |  |  |  | #include "string.h"
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | void MENU_ToolScanFile(WIN_MenuStruct *menu); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | WIN_MenuStruct *MENU_Tool(WIN_WindowStruct *base, WIN_PicStruct *pic) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WIN_MenuStruct *menu = WIN_CreatMenu(base, (void (*)(WIN_WindowStruct *, WIN_MsgStruct *))MENU_ToolMsgLoop, | 
					
						
							|  |  |  |  | 																			 0, 0, base->x_size, base->y_size); | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | 	((WIN_WindowStruct *)menu)->intercept = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	WIN_SetBackPicPath((WIN_WindowStruct *)menu, base->pic_path); | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | 	MENU_SetTitle(menu, 0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	MENU_SetMaxItem(menu, TOOL_APP_MAXNUM); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	MENU_ToolScanFile(menu); | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	WIN_ShowWindow((WIN_WindowStruct *)menu); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	return menu; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | void MENU_ToolScanFile(WIN_MenuStruct *menu) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	FRESULT ret = FR_OK; | 
					
						
							|  |  |  |  | 	DIR dir = {0}; | 
					
						
							|  |  |  |  | 	FILINFO *file_info = 0; | 
					
						
							|  |  |  |  | 	file_info = mymalloc(sizeof(FILINFO)); | 
					
						
							|  |  |  |  | 	ret = f_findfirst(&dir, file_info, TOOL_APP_PATH, "*.axf"); | 
					
						
							|  |  |  |  | 	while ((ret == FR_OK) && (file_info->fname[0] != 0)) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 		if (AM_DIR & file_info->fattrib) | 
					
						
							|  |  |  |  | 			continue; | 
					
						
							|  |  |  |  | 		if (MENU_GetAllItemNum(menu) < TOOL_APP_MAXNUM) | 
					
						
							| 
									
										
										
										
											2025-07-05 23:48:54 +08:00
										 |  |  |  | 			MENU_AddItem(menu, 0, file_info->fname); | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 		else | 
					
						
							|  |  |  |  | 			break; | 
					
						
							|  |  |  |  | 		ret = f_findnext(&dir, file_info); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	myfree(file_info); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | static void MENU_ToolEnter(WIN_MenuStruct *menu) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | 	// ѡ<><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	char *path = mymalloc(256); | 
					
						
							| 
									
										
										
										
											2025-07-05 19:05:35 +08:00
										 |  |  |  | 	sprintf(path, "%s/%s", TOOL_APP_PATH, MENU_GetSelectItem(menu)); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	app_run_path(path); | 
					
						
							|  |  |  |  | 	myfree(path); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void MENU_ToolDeleteFun(WIN_MenuStruct *menu) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | void MENU_ToolMsgLoop(WIN_MenuStruct *menu, WIN_MsgStruct *msg) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	WIN_MoveStruct *m = 0; | 
					
						
							|  |  |  |  | 	WIN_TouchStruct *t = 0; | 
					
						
							|  |  |  |  | 	WIN_KeyStruct *k = 0; | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	switch (msg->msg) | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	case WIN_MSG_KEY: | 
					
						
							|  |  |  |  | 		k = msg->data.p; | 
					
						
							|  |  |  |  | 		if (k->shortPress & KEY_VALUE_ENTER) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			MENU_ToolEnter(menu); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			MENU_DefaultMsgLoop(menu, msg); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		break; // case WIN_MSG_KEY:
 | 
					
						
							|  |  |  |  | 	case WIN_MSG_MOVE: | 
					
						
							|  |  |  |  | 		m = msg->data.p; | 
					
						
							|  |  |  |  | 		switch (m->moveType) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 		case MOVE_DATA_SHORT: | 
					
						
							|  |  |  |  | 			// if (m->y_move>((WIN_WindowStruct *)menu)->y_size/2-20&&m->y_move<((WIN_WindowStruct *)menu)->y_size/2+20)
 | 
					
						
							|  |  |  |  | 			// {
 | 
					
						
							|  |  |  |  | 			// 	MENU_ToolEnter(menu);
 | 
					
						
							|  |  |  |  | 			// }
 | 
					
						
							|  |  |  |  | 			break; | 
					
						
							|  |  |  |  | 		default: | 
					
						
							|  |  |  |  | 			MENU_DefaultMsgLoop(menu, msg); | 
					
						
							|  |  |  |  | 			break; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		break; | 
					
						
							|  |  |  |  | 	case WIN_MSG_CHID: | 
					
						
							|  |  |  |  | 		switch (msg->data.v) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 		case CHID_DELETE: | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 		case CHID_USER: | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (msg->srcWin == menu->bar) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 			{ | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 				if (msg->data2.v == SCROLLBAR_PRESSED) | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 				{ | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 					MENU_ToolEnter(menu); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 				} | 
					
						
							|  |  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 			else | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				MENU_DefaultMsgLoop(menu, msg); | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 		default: | 
					
						
							| 
									
										
										
										
											2025-07-01 00:09:47 +08:00
										 |  |  |  | 			break; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		break; | 
					
						
							|  |  |  |  | 	default: | 
					
						
							|  |  |  |  | 		MENU_DefaultMsgLoop(menu, msg); | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 		break; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } |