Fix model names on model select page with not yet converted models
Resolves #248
This commit is contained in:
@@ -108,15 +108,30 @@ class ModelButton : public Button
|
|||||||
if (strncmp(modelCell->modelFilename, g_eeGeneral.currModelFilename,
|
if (strncmp(modelCell->modelFilename, g_eeGeneral.currModelFilename,
|
||||||
LEN_MODEL_FILENAME) == 0) {
|
LEN_MODEL_FILENAME) == 0) {
|
||||||
memcpy(&partialModel.header, &g_model.header, sizeof(partialModel));
|
memcpy(&partialModel.header, &g_model.header, sizeof(partialModel));
|
||||||
|
version = EEPROM_VER;
|
||||||
} else {
|
} else {
|
||||||
error =
|
error =
|
||||||
readModel(modelCell->modelFilename, (uint8_t *)&partialModel.header,
|
readModel(modelCell->modelFilename, (uint8_t *)&partialModel.header,
|
||||||
sizeof(partialModel), &version);
|
sizeof(partialModel), &version);
|
||||||
if (!error) {
|
}
|
||||||
if (modelCell->modelName[0] == '\0' &&
|
|
||||||
partialModel.header.name[0] != '\0') {
|
if (!error) {
|
||||||
modelCell->setModelName(partialModel.header.name);
|
if (modelCell->modelName[0] == '\0' &&
|
||||||
|
partialModel.header.name[0] != '\0') {
|
||||||
|
|
||||||
|
if (version == 219) {
|
||||||
|
size_t len = sizeof(partialModel.header.name);
|
||||||
|
char* str = partialModel.header.name;
|
||||||
|
for (int i=0; i < len; i++) {
|
||||||
|
str[i] = zchar2char(str[i]);
|
||||||
|
}
|
||||||
|
// Trim string
|
||||||
|
while(len > 0 && str[len-1]) {
|
||||||
|
if (str[len - 1] != ' ' && str[len - 1] != '\0') break;
|
||||||
|
str[--len] = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
modelCell->setModelName(partialModel.header.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ void convertRadioData(int version)
|
|||||||
RAISE_ALERT(STR_STORAGE_WARNING, STR_SDCARD_CONVERSION_REQUIRE, NULL,
|
RAISE_ALERT(STR_STORAGE_WARNING, STR_SDCARD_CONVERSION_REQUIRE, NULL,
|
||||||
AU_NONE);
|
AU_NONE);
|
||||||
|
|
||||||
|
// Load models list before converting
|
||||||
|
modelslist.load();
|
||||||
|
|
||||||
unsigned converted = 0;
|
unsigned converted = 0;
|
||||||
auto to_convert = modelslist.getModelsCount() + 1;
|
auto to_convert = modelslist.getModelsCount() + 1;
|
||||||
|
|
||||||
@@ -76,9 +79,6 @@ void convertRadioData(int version)
|
|||||||
RTOS_WAIT_MS(200);
|
RTOS_WAIT_MS(200);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Load models list before converting
|
|
||||||
modelslist.load();
|
|
||||||
|
|
||||||
const char* error = nullptr;
|
const char* error = nullptr;
|
||||||
for (auto category_ptr : modelslist.getCategories()) {
|
for (auto category_ptr : modelslist.getCategories()) {
|
||||||
for (auto model_ptr : *category_ptr) {
|
for (auto model_ptr : *category_ptr) {
|
||||||
|
|||||||
@@ -48,7 +48,9 @@ ModelCell::~ModelCell()
|
|||||||
void ModelCell::setModelName(char * name)
|
void ModelCell::setModelName(char * name)
|
||||||
{
|
{
|
||||||
strncpy(modelName, name, LEN_MODEL_NAME);
|
strncpy(modelName, name, LEN_MODEL_NAME);
|
||||||
if (modelName[0] == 0) {
|
modelName[LEN_MODEL_NAME] = '\0';
|
||||||
|
|
||||||
|
if (modelName[0] == '\0') {
|
||||||
char * tmp;
|
char * tmp;
|
||||||
strncpy(modelName, modelFilename, LEN_MODEL_NAME);
|
strncpy(modelName, modelFilename, LEN_MODEL_NAME);
|
||||||
tmp = (char *) memchr(modelName, '.', LEN_MODEL_NAME);
|
tmp = (char *) memchr(modelName, '.', LEN_MODEL_NAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user