fix(color): Limit label lengths, improve lbl display, prevent inv. char (#2287)
* (cpn) Add bullets & length warning * (fw) Show labels with bullet separators * (fw) Check all running twice. Remove from here * (fw) Correct buffer overflow when labels too long * (fw) Rem bullets in model label string * (fw, cpn) Labels length cpn,fw Limit label length cpn Check correct model on rename length cpn Focus issues cpn Add rename, move up/down.. still has an issue with selection. TODO... cpn Switch to utf8 encoding cpn Rename button ;) * (cpn) Move up down working re-Fix Checkbox, partially isn't what I thought (not greyed) * (fw) Add CSV string funcs Limit length of model edit shorter in portrait mode * (cpn) Correct Label option showing on B&W * (fw) Radio filename set but no file exists don't create * (cpn) Simplify wording * (fw) Correct debug values * (fw) Reduce truncation length * (both) Don't allow special chars in label name (cpn) Prevent move when at top and bottom (fw) Remove multiple label length defines (fw) Shorten truncate length even more * (fw) Close model_select on new model
This commit is contained in:
@@ -383,7 +383,6 @@ void ModelsPageBody::selectModel(ModelCell *model)
|
||||
storageCheck(true);
|
||||
|
||||
modelslist.setCurrentModel(model);
|
||||
checkAll();
|
||||
|
||||
// Exit to main view
|
||||
auto w = Layer::back();
|
||||
@@ -496,8 +495,8 @@ class LabelDialog : public Dialog
|
||||
Dialog(parent, STR_ENTER_LABEL, rect_t{}),
|
||||
saveHandler(std::move(_saveHandler))
|
||||
{
|
||||
strncpy(this->label, label, MAX_LABEL_SIZE);
|
||||
this->label[MAX_LABEL_SIZE] = '\0';
|
||||
strncpy(this->label, label, LABEL_LENGTH);
|
||||
this->label[LABEL_LENGTH] = '\0';
|
||||
|
||||
auto form = &content->form;
|
||||
form->padRow(lv_dpx(8));
|
||||
@@ -505,7 +504,7 @@ class LabelDialog : public Dialog
|
||||
auto form_obj = form->getLvObj();
|
||||
lv_obj_set_style_flex_cross_place(form_obj, LV_FLEX_ALIGN_CENTER, 0);
|
||||
|
||||
new TextEdit(form, rect_t{}, label, MAX_LABEL_SIZE);
|
||||
new TextEdit(form, rect_t{}, label, LABEL_LENGTH);
|
||||
|
||||
auto box = new FormGroup(form, rect_t{});
|
||||
box->setFlexLayout(LV_FLEX_FLOW_ROW);
|
||||
@@ -538,7 +537,7 @@ class LabelDialog : public Dialog
|
||||
|
||||
protected:
|
||||
std::function<void(std::string label)> saveHandler;
|
||||
char label[MAX_LABEL_SIZE + 1];
|
||||
char label[LABEL_LENGTH + 1];
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -625,11 +624,9 @@ void ModelLabelsWindow::newModel()
|
||||
// On complete update the current cell's data
|
||||
modelslist.updateCurrentModelCell();
|
||||
|
||||
auto labels = getLabels();
|
||||
lblselector->setNames(labels);
|
||||
lblselector->setSelected(modelslabels.getLabels().size());
|
||||
mdlselector->update(0);
|
||||
setTitle();
|
||||
// Close Window
|
||||
auto w = Layer::back();
|
||||
if (w) w->onCancel();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -778,8 +775,8 @@ void ModelLabelsWindow::buildBody(FormWindow *window)
|
||||
menu->setTitle(selectedLabel);
|
||||
menu->addLine(STR_RENAME_LABEL, [=]() {
|
||||
auto oldLabel = labels[selected];
|
||||
strncpy(tmpLabel, oldLabel.c_str(), MAX_LABEL_SIZE);
|
||||
tmpLabel[MAX_LABEL_SIZE] = '\0';
|
||||
strncpy(tmpLabel, oldLabel.c_str(), LABEL_LENGTH);
|
||||
tmpLabel[LABEL_LENGTH] = '\0';
|
||||
new LabelDialog(this, tmpLabel, [=](std::string newLabel) {
|
||||
auto rndialog =
|
||||
new ProgressDialog(this, STR_RENAME_LABEL, [=]() {});
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
#include "storage/modelslist.h"
|
||||
#include "tabsgroup.h"
|
||||
|
||||
constexpr int MAX_LABEL_SIZE = 20;
|
||||
|
||||
class ModelButton;
|
||||
|
||||
class ModelsPageBody : public FormWindow
|
||||
@@ -78,7 +76,7 @@ class ModelLabelsWindow : public Page
|
||||
|
||||
protected:
|
||||
ModelsSortBy sort = DEFAULT_MODEL_SORT;
|
||||
char tmpLabel[MAX_LABEL_SIZE + 1] = "\0";
|
||||
char tmpLabel[LABEL_LENGTH + 1] = "\0";
|
||||
ListBox *lblselector;
|
||||
ModelsPageBody *mdlselector;
|
||||
std::string currentLabel;
|
||||
|
||||
@@ -127,7 +127,7 @@ void SubScreenButton::event_cb(lv_event_t* e)
|
||||
auto btn = (SubScreenButton*)lv_obj_get_user_data(obj);
|
||||
if (!btn) return;
|
||||
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
if (code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||
|
||||
lv_obj_draw_part_dsc_t* dsc = lv_event_get_draw_part_dsc(e);
|
||||
@@ -142,7 +142,7 @@ void SubScreenButton::event_cb(lv_event_t* e)
|
||||
} else if (code == LV_EVENT_DRAW_PART_END) {
|
||||
|
||||
if (btn->text.empty()) return;
|
||||
|
||||
|
||||
lv_obj_draw_part_dsc_t* dsc = lv_event_get_draw_part_dsc(e);
|
||||
if (dsc->part != LV_PART_MAIN) return;
|
||||
|
||||
@@ -243,7 +243,7 @@ void ModelSetupPage::build(FormWindow * window)
|
||||
new StaticText(line, rect_t{}, STR_LABELS, 0, COLOR_THEME_PRIMARY1);
|
||||
auto curmod = modelslist.getCurrentModel();
|
||||
labelTextButton =
|
||||
new TextButton(line, rect_t{}, modelslabels.getLabelString(curmod ,STR_UNLABELEDMODEL), [=] () {
|
||||
new TextButton(line, rect_t{}, modelslabels.getBulletLabelString(curmod ,STR_UNLABELEDMODEL), [=] () {
|
||||
Menu *menu = new Menu(window, true);
|
||||
menu->setTitle(STR_LABELS);
|
||||
for (auto &label: modelslabels.getLabels()) {
|
||||
@@ -253,8 +253,9 @@ void ModelSetupPage::build(FormWindow * window)
|
||||
modelslabels.addLabelToModel(label, curmod);
|
||||
else
|
||||
modelslabels.removeLabelFromModel(label, curmod);
|
||||
labelTextButton->setText(modelslabels.getLabelString(curmod,STR_UNLABELEDMODEL));
|
||||
strcpy(g_model.header.labels, modelslabels.getLabelString(curmod,STR_UNLABELEDMODEL).c_str());
|
||||
labelTextButton->setText(modelslabels.getBulletLabelString(curmod,STR_UNLABELEDMODEL));
|
||||
strncpy(g_model.header.labels, ModelMap::toCSV(modelslabels.getLabelsByModel(curmod)).c_str(),sizeof(g_model.header.labels));
|
||||
g_model.header.labels[sizeof(g_model.header.labels)-1] = '\0';
|
||||
SET_DIRTY();
|
||||
}, [=] () {
|
||||
return modelslabels.isLabelSelected(label, curmod);
|
||||
@@ -285,7 +286,7 @@ void ModelSetupPage::build(FormWindow * window)
|
||||
form->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
|
||||
lv_obj_set_style_flex_main_place(form->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
|
||||
form->padAll(lv_dpx(8));
|
||||
|
||||
|
||||
Window* btn = new IntmoduleButton(form);
|
||||
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
|
||||
|
||||
@@ -342,11 +343,11 @@ TimerBtnMatrix::TimerBtnMatrix(Window* parent, const rect_t& r) :
|
||||
setText(1, TR_TIMER "2");
|
||||
setText(2, TR_TIMER "3");
|
||||
update();
|
||||
|
||||
|
||||
lv_btnmatrix_set_btn_width(lvobj, 3, 2);
|
||||
lv_obj_set_width(lvobj, lv_pct(100));
|
||||
lv_obj_set_height(lvobj, LV_DPI_DEF / 2);
|
||||
|
||||
|
||||
lv_obj_set_style_bg_opa(lvobj, LV_OPA_0, 0);
|
||||
lv_obj_set_style_pad_all(lvobj, lv_dpx(8), 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user