Better handling of characters, which are not printable on the Touchscreen.

This commit is contained in:
Knutwurst
2020-06-03 11:29:32 +02:00
parent 0b1d80d3d0
commit c88389506f

View File

@@ -598,55 +598,35 @@ void AnycubicTouchscreenClass::Ls()
{ {
card.selectFileByIndex(cnt - 1); card.selectFileByIndex(cnt - 1);
bool hasInvalidCharacter = false; int fileNameLen = strlen(card.longFilename);
char buffer[fileNameLen];
for (unsigned char currentChar = 0; currentChar < strlen(card.longFilename); currentChar++) for (unsigned char i = 0; i < fileNameLen; i++){
if (!isPrintable(card.longFilename[currentChar])) buffer[i] = card.longFilename[i];
{ if (!isPrintable(buffer[i]))
hasInvalidCharacter = true; {
break; buffer[i] = '_';
}
} }
buffer[fileNameLen] = '\0';
if (card.flag.filenameIsDir) if (card.flag.filenameIsDir)
{ {
if(hasInvalidCharacter) ANYCUBIC_SERIAL_PROTOCOLPGM("/");
{ ANYCUBIC_SERIAL_PROTOCOLLN(card.filename);
ANYCUBIC_SERIAL_PROTOCOLPGM("/"); ANYCUBIC_SERIAL_PROTOCOLPGM("/");
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); ANYCUBIC_SERIAL_PROTOCOLLN(buffer);
ANYCUBIC_SERIAL_PROTOCOLPGM("/"); SERIAL_ECHO(cnt);
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); SERIAL_ECHOPGM("/");
SERIAL_ECHO(cnt); SERIAL_ECHOLN(buffer);
SERIAL_ECHOPGM("/");
SERIAL_ECHOLN(card.filename);
}
else
{
ANYCUBIC_SERIAL_PROTOCOLPGM("/");
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename);
ANYCUBIC_SERIAL_PROTOCOLPGM("/");
ANYCUBIC_SERIAL_PROTOCOLLN(card.longFilename);
SERIAL_ECHO(cnt);
SERIAL_ECHOPGM("/");
SERIAL_ECHOLN(card.longFilename);
}
} }
else else
{ {
if(hasInvalidCharacter) ANYCUBIC_SERIAL_PROTOCOLLN(card.filename);
{ ANYCUBIC_SERIAL_PROTOCOLLN(buffer);
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); SERIAL_ECHO(cnt);
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); SERIAL_ECHOLN(buffer);
SERIAL_ECHO(cnt);
SERIAL_ECHOLN(card.filename);
}
else
{
ANYCUBIC_SERIAL_PROTOCOLLN(card.filename);
ANYCUBIC_SERIAL_PROTOCOLLN(card.longFilename);
SERIAL_ECHO(cnt);
SERIAL_ECHOLN(card.longFilename);
}
} }
} }
} }