diff --git a/radio/src/storage/modelslist.h b/radio/src/storage/modelslist.h index 5b496bebd..2944c335c 100644 --- a/radio/src/storage/modelslist.h +++ b/radio/src/storage/modelslist.h @@ -53,7 +53,10 @@ class ModelCell void load() { - ModelHeader header; + PACK(struct { + ModelHeader header; + TimerData timers[MAX_TIMERS]; + }) partialmodel; const char * error = NULL; buffer = new BitmapBuffer(BMP_RGB565, MODELCELL_WIDTH, MODELCELL_HEIGHT); @@ -61,10 +64,12 @@ class ModelCell return; } - if (strncmp(modelFilename, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME) == 0) - header = g_model.header; - else - error = readModel(modelFilename, (uint8_t *)&header, sizeof(header)); + if (strncmp(modelFilename, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME) == 0) { + memcpy(&partialmodel.header, &g_model.header, sizeof(partialmodel)); + } + else { + error = readModel(modelFilename, (uint8_t *)&partialmodel.header, sizeof(partialmodel)); + } buffer->clear(TEXT_BGCOLOR); @@ -73,7 +78,7 @@ class ModelCell buffer->drawBitmapPattern(5, 23, LBM_LIBRARY_SLOT, TEXT_COLOR); } else { - zchar2str(modelName, header.name, LEN_MODEL_NAME); + zchar2str(modelName, partialmodel.header.name, LEN_MODEL_NAME); if (modelName[0] == 0) { char * tmp; strncpy(modelName, modelFilename, LEN_MODEL_NAME); @@ -84,11 +89,17 @@ class ModelCell char timer[LEN_TIMER_STRING]; buffer->drawSizedText(5, 2, modelName, LEN_MODEL_NAME, SMLSIZE|TEXT_COLOR); getTimerString(timer, 0); + for (uint8_t i = 0; i < MAX_TIMERS; i++) { + if (partialmodel.timers[i].mode > 0 && partialmodel.timers[i].persistent) { + getTimerString(timer, partialmodel.timers[i].value); + break; + } + } buffer->drawText(101, 40, timer, TEXT_COLOR); for (int i=0; i<4; i++) { buffer->drawBitmapPattern(104+i*11, 25, LBM_SCORE0, TITLE_BGCOLOR); } - GET_FILENAME(filename, BITMAPS_PATH, header.bitmap, ""); + GET_FILENAME(filename, BITMAPS_PATH, partialmodel.header.bitmap, ""); const BitmapBuffer * bitmap = BitmapBuffer::load(filename); if (bitmap) { buffer->drawScaledBitmap(bitmap, 5, 24, 56, 32);