1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 17:25:13 +03:00

[Horus] Move models from one category to another

This commit is contained in:
Bertrand Songis 2016-06-28 22:06:21 +02:00
parent ce63768df3
commit 93f21bc18f
2 changed files with 75 additions and 57 deletions

View file

@ -203,6 +203,11 @@ bool menuModelSelect(evt_t event)
initModelsList(); initModelsList();
break; break;
case EVT_KEY_BREAK(KEY_ENTER):
if (selectMode == MODE_MOVE_MODEL)
selectMode = MODE_SELECT_MODEL;
break;
case EVT_KEY_FIRST(KEY_EXIT): case EVT_KEY_FIRST(KEY_EXIT):
switch (selectMode) { switch (selectMode) {
case MODE_MOVE_MODEL: case MODE_MOVE_MODEL:
@ -215,34 +220,40 @@ bool menuModelSelect(evt_t event)
break; break;
case EVT_KEY_FIRST(KEY_PGUP): case EVT_KEY_FIRST(KEY_PGUP):
if (categoriesVerticalPosition == 0) if (selectMode == MODE_SELECT_MODEL) {
categoriesVerticalPosition = modelslist.categories.size() - 1; if (categoriesVerticalPosition == 0)
else categoriesVerticalPosition = modelslist.categories.size() - 1;
else
categoriesVerticalPosition -= 1;
setCurrentCategory(categoriesVerticalPosition);
}
else if (selectMode == MODE_MOVE_MODEL && categoriesVerticalPosition > 0) {
ModelsCategory * previous_category = currentCategory;
ModelCell * model = currentModel;
categoriesVerticalPosition -= 1; categoriesVerticalPosition -= 1;
setCurrentCategory(categoriesVerticalPosition); setCurrentCategory(categoriesVerticalPosition);
putEvent(EVT_REFRESH); modelslist.moveModel(model, previous_category, currentCategory);
setCurrentModel(currentCategory->size()-1);
}
break; break;
case EVT_KEY_FIRST(KEY_PGDN): case EVT_KEY_FIRST(KEY_PGDN):
categoriesVerticalPosition += 1; if (selectMode == MODE_SELECT_MODEL) {
if (categoriesVerticalPosition >= modelslist.categories.size()) categoriesVerticalPosition += 1;
categoriesVerticalPosition = 0; if (categoriesVerticalPosition >= modelslist.categories.size())
setCurrentCategory(categoriesVerticalPosition); categoriesVerticalPosition = 0;
putEvent(EVT_REFRESH); setCurrentCategory(categoriesVerticalPosition);
}
else if (selectMode == MODE_MOVE_MODEL && categoriesVerticalPosition < modelslist.categories.size()-1) {
ModelsCategory * previous_category = currentCategory;
ModelCell * model = currentModel;
categoriesVerticalPosition += 1;
setCurrentCategory(categoriesVerticalPosition);
modelslist.moveModel(model, previous_category, currentCategory);
setCurrentModel(currentCategory->size()-1);
}
break; break;
/*if (selectMode == MODE_SELECT_CATEGORY) {
menuVerticalPosition = categoriesVerticalPosition;
menuVerticalOffset = categoriesVerticalOffset;
if (navigate(event, modelslist.categories.size(), 10)) {
categoriesVerticalPosition = menuVerticalPosition;
categoriesVerticalOffset = menuVerticalOffset;
putEvent(EVT_REFRESH);
setCurrentCategory(categoriesVerticalPosition);
}
}*/
case EVT_KEY_LONG(KEY_ENTER): case EVT_KEY_LONG(KEY_ENTER):
if (selectMode == MODE_SELECT_MODEL) { if (selectMode == MODE_SELECT_MODEL) {
killEvents(event); killEvents(event);

View file

@ -239,46 +239,53 @@ class ModelsList
} }
} }
ModelsCategory * createCategory() ModelsCategory * createCategory()
{ {
ModelsCategory * result = new ModelsCategory("Category"); ModelsCategory * result = new ModelsCategory("Category");
categories.push_back(result); categories.push_back(result);
save(); save();
return result; return result;
} }
ModelCell * addModel(ModelsCategory * category, const char * name) ModelCell * addModel(ModelsCategory * category, const char * name)
{ {
ModelCell * result = category->addModel(name); ModelCell * result = category->addModel(name);
modelsCount++; modelsCount++;
save(); save();
return result; return result;
} }
void removeCategory(ModelsCategory * category) void removeCategory(ModelsCategory * category)
{ {
modelsCount -= category->size(); modelsCount -= category->size();
delete category; delete category;
categories.remove(category); categories.remove(category);
} }
void removeModel(ModelsCategory * category, ModelCell * model) void removeModel(ModelsCategory * category, ModelCell * model)
{ {
category->removeModel(model); category->removeModel(model);
modelsCount--; modelsCount--;
save(); save();
} }
void moveModel(ModelsCategory * category, ModelCell * model, int8_t step) void moveModel(ModelsCategory * category, ModelCell * model, int8_t step)
{ {
category->moveModel(model, step); category->moveModel(model, step);
save(); save();
} }
std::list<ModelsCategory *> categories; void moveModel(ModelCell * model, ModelsCategory * previous_category, ModelsCategory * new_category)
ModelsCategory * currentCategory; {
ModelCell * currentModel; previous_category->remove(model);
unsigned int modelsCount; new_category->push_back(model);
save();
}
std::list<ModelsCategory *> categories;
ModelsCategory * currentCategory;
ModelCell * currentModel;
unsigned int modelsCount;
protected: protected:
FIL file; FIL file;