diff --git a/radio/src/gui/colorlcd/model_select.cpp b/radio/src/gui/colorlcd/model_select.cpp index 78daedb6d..24829f792 100644 --- a/radio/src/gui/colorlcd/model_select.cpp +++ b/radio/src/gui/colorlcd/model_select.cpp @@ -554,7 +554,7 @@ class ModelCategoryPageBody : public FormWindow void createModel() { storageCheck(true); - auto model = modelslist.addModel(category, ::createModel(), false); + auto model = modelslist.addModel(category, ::createModel(), nullptr, false); modelslist.setCurrentModel(model); new SelectTemplateFolder([=]() { model->setModelName(g_model.header.name); @@ -572,7 +572,7 @@ class ModelCategoryPageBody : public FormWindow MODELS_PATH)) { sdCopyFile(model->modelFilename, MODELS_PATH, duplicatedFilename, MODELS_PATH); - auto new_model = modelslist.addModel(category, duplicatedFilename); + auto new_model = modelslist.addModel(category, duplicatedFilename, model->modelName); addModelButton(new_model); } else { POPUP_WARNING("Invalid File"); // TODO: translation diff --git a/radio/src/storage/modelslist.cpp b/radio/src/storage/modelslist.cpp index 1d07a779d..09b7e9f6b 100644 --- a/radio/src/storage/modelslist.cpp +++ b/radio/src/storage/modelslist.cpp @@ -208,11 +208,13 @@ ModelsCategory::~ModelsCategory() } } -ModelCell * ModelsCategory::addModel(const char * name) +ModelCell * ModelsCategory::addModel(const char * fileName, const char* modelName) { if (!name) return NULL; - ModelCell * result = new ModelCell(name); + ModelCell * result = new ModelCell(fileName); + if(modelName) + strncpy(result->modelName, modelName, LEN_MODEL_NAME); push_back(result); return result; } @@ -508,9 +510,10 @@ ModelsCategory * ModelsList::createCategory(const char* name, bool save) return result; } -ModelCell * ModelsList::addModel(ModelsCategory * category, const char * name, bool save) +ModelCell * ModelsList::addModel(ModelsCategory * category, const char * fileName, const char* modelName, bool save) { - ModelCell * result = category->addModel(name); + ModelCell * result = category->addModel(fileName, modelName); + TRACE("modelName is %s", result->modelName); modelsCount++; if (save) this->save(); return result; diff --git a/radio/src/storage/modelslist.h b/radio/src/storage/modelslist.h index 7eb323ea8..6efe21ab0 100644 --- a/radio/src/storage/modelslist.h +++ b/radio/src/storage/modelslist.h @@ -82,7 +82,7 @@ public: explicit ModelsCategory(const char * name, uint8_t len); ~ModelsCategory(); - ModelCell * addModel(const char * name); + ModelCell* addModel(const char* fileName, const char* modelName = nullptr); void removeModel(ModelCell * model); void moveModel(ModelCell * model, int8_t step); @@ -161,7 +161,7 @@ public: ModelsCategory * createCategory(const char * name, bool save=true); void removeCategory(ModelsCategory * category); - ModelCell * addModel(ModelsCategory * category, const char * name, bool save=true); + ModelCell * addModel(ModelsCategory * category, const char * name, const char* modelName = nullptr, bool save=true); void removeModel(ModelsCategory * category, ModelCell * model); void moveModel(ModelsCategory * category, ModelCell * model, int8_t step); void moveModel(ModelCell * model, ModelsCategory * previous_category, ModelsCategory * new_category); diff --git a/radio/src/storage/sdcard_yaml.cpp b/radio/src/storage/sdcard_yaml.cpp index a23d99731..6dc48c86f 100644 --- a/radio/src/storage/sdcard_yaml.cpp +++ b/radio/src/storage/sdcard_yaml.cpp @@ -79,9 +79,9 @@ void storageCreateModelsList() ModelsCategory* cat = modelslist.createCategory(DEFAULT_CATEGORY, false); ModelCell* model = nullptr; if (g_eeGeneral.currModelFilename[0] != '\0') { - model = modelslist.addModel(cat, g_eeGeneral.currModelFilename, false); + model = modelslist.addModel(cat, g_eeGeneral.currModelFilename, nullptr, false); } else { - model = modelslist.addModel(cat, DEFAULT_MODEL_FILENAME, false); + model = modelslist.addModel(cat, DEFAULT_MODEL_FILENAME, nullptr, false); } model->setModelName(g_model.header.name); modelslist.save();