1
0
mirror of https://github.com/mist-devel/mist-firmware.git synced 2026-02-04 07:13:07 +00:00

Fixed file selector bug

This commit is contained in:
harbaum
2014-07-10 19:33:53 +00:00
parent 94feb612a8
commit a8a0b4e071

31
menu.c
View File

@@ -115,16 +115,17 @@ unsigned char fs_Options;
unsigned char fs_MenuSelect;
unsigned char fs_MenuCancel;
void SelectFile(char* pFileExt, unsigned char Options, unsigned char MenuSelect, unsigned char MenuCancel)
void SelectFile(char* pFileExt, unsigned char Options, unsigned char MenuSelect, unsigned char MenuCancel, char chdir)
{
// this function displays file selection menu
if (strncmp(pFileExt, fs_pFileExt, 3) != 0) // check desired file extension
{ // if different from the current one go to the root directory and init entry buffer
ChangeDirectory(DIRECTORY_ROOT);
// for 8 bit cores try to
if(user_io_core_type() == CORE_TYPE_8BIT) {
if((user_io_core_type() == CORE_TYPE_8BIT) && chdir) {
user_io_create_config_name(s);
// try to change into subdir named after the core
strcpy(s+8, " ");
@@ -432,10 +433,10 @@ void HandleUI(void)
// entry 0 = file selector
if(!menusub) {
// use a local copy of "p" since SelectFile will destroy the buffer behind it
char ext[4];
static char ext[4];
strncpy(ext, p, 4);
while(strlen(ext) < 3) strcat(ext, " ");
SelectFile(ext, SCAN_DIR | SCAN_LFN, MENU_8BIT_MAIN_FILE_SELECTED, MENU_8BIT_MAIN1);
SelectFile(ext, SCAN_DIR | SCAN_LFN, MENU_8BIT_MAIN_FILE_SELECTED, MENU_8BIT_MAIN1, 1);
} else {
// determine which status bit is affected
unsigned char mask = 1<<(p[1]-'0');
@@ -556,7 +557,7 @@ void HandleUI(void)
tos_insert_disk(0, NULL);
menustate = MENU_MIST_MAIN1;
} else
SelectFile("ST ", SCAN_DIR | SCAN_LFN, MENU_MIST_MAIN_FILE_SELECTED, MENU_MIST_MAIN1);
SelectFile("ST ", SCAN_DIR | SCAN_LFN, MENU_MIST_MAIN_FILE_SELECTED, MENU_MIST_MAIN1, 0);
break;
case 1:
@@ -650,7 +651,7 @@ void HandleUI(void)
tos_insert_disk(menusub, NULL);
menustate = MENU_MIST_STORAGE1;
} else
SelectFile("ST ", SCAN_DIR | SCAN_LFN, MENU_MIST_STORAGE_FILE_SELECTED, MENU_MIST_STORAGE1);
SelectFile("ST ", SCAN_DIR | SCAN_LFN, MENU_MIST_STORAGE_FILE_SELECTED, MENU_MIST_STORAGE1, 0);
}
else if(menusub == 2) {
@@ -664,7 +665,7 @@ void HandleUI(void)
tos_insert_disk(menusub-1, NULL);
menustate = MENU_MIST_STORAGE1;
} else
SelectFile("HD ", SCAN_LFN, MENU_MIST_STORAGE_FILE_SELECTED, MENU_MIST_STORAGE1);
SelectFile("HD ", SCAN_LFN, MENU_MIST_STORAGE_FILE_SELECTED, MENU_MIST_STORAGE1, 0);
} else if (menusub == 5) {
menustate = MENU_MIST_MAIN1;
menusub = 2;
@@ -742,7 +743,7 @@ void HandleUI(void)
} break;
case 2: // TOS
SelectFile("IMG", SCAN_LFN, MENU_MIST_SYSTEM_FILE_SELECTED, MENU_MIST_SYSTEM1);
SelectFile("IMG", SCAN_LFN, MENU_MIST_SYSTEM_FILE_SELECTED, MENU_MIST_SYSTEM1, 0);
break;
case 3: // Cart
@@ -751,7 +752,7 @@ void HandleUI(void)
tos_load_cartridge("");
menustate = MENU_MIST_SYSTEM1;
} else
SelectFile("IMG", SCAN_LFN, MENU_MIST_SYSTEM_FILE_SELECTED, MENU_MIST_SYSTEM1);
SelectFile("IMG", SCAN_LFN, MENU_MIST_SYSTEM_FILE_SELECTED, MENU_MIST_SYSTEM1, 0);
break;
case 4:
@@ -1042,7 +1043,7 @@ void HandleUI(void)
else
{
df[menusub].status = 0;
SelectFile("ADF", SCAN_DIR | SCAN_LFN, MENU_FILE_SELECTED, MENU_MAIN1);
SelectFile("ADF", SCAN_DIR | SCAN_LFN, MENU_FILE_SELECTED, MENU_MAIN1, 0);
}
}
else if (menusub == 4) // Toggle floppy turbo
@@ -1799,7 +1800,7 @@ void HandleUI(void)
}
else if (menusub == 3)
{
SelectFile("ROM", SCAN_LFN, MENU_ROMFILE_SELECTED, MENU_SETTINGS_MEMORY1);
SelectFile("ROM", SCAN_LFN, MENU_ROMFILE_SELECTED, MENU_SETTINGS_MEMORY1, 0);
}
else if (menusub == 4)
{
@@ -1934,7 +1935,7 @@ void HandleUI(void)
}
else if (menusub == 2)
{
SelectFile("HDF", SCAN_LFN, MENU_HARDFILE_SELECTED, MENU_SETTINGS_HARDFILE1);
SelectFile("HDF", SCAN_LFN, MENU_HARDFILE_SELECTED, MENU_SETTINGS_HARDFILE1, 0);
}
else if (menusub == 3)
{
@@ -1956,7 +1957,7 @@ void HandleUI(void)
}
else if (menusub == 4)
{
SelectFile("HDF", SCAN_LFN, MENU_HARDFILE_SELECTED, MENU_SETTINGS_HARDFILE1);
SelectFile("HDF", SCAN_LFN, MENU_HARDFILE_SELECTED, MENU_SETTINGS_HARDFILE1, 0);
}
else if (menusub == 5) // return to previous menu
{
@@ -2368,7 +2369,7 @@ void HandleUI(void)
OsdClear();
}
else if (menusub == fat_uses_mmc()?1:0) {
SelectFile("RBF", SCAN_LFN, MENU_FIRMWARE_CORE_FILE_SELECTED, MENU_FIRMWARE1);
SelectFile("RBF", SCAN_LFN, MENU_FIRMWARE_CORE_FILE_SELECTED, MENU_FIRMWARE1, 0);
}
else if (menusub == fat_uses_mmc()?2:1) {
switch(user_io_core_type()) {