--- a/brewco/setup.c Tue Dec 15 23:14:00 2015 +0100 +++ b/brewco/setup.c Wed Dec 16 22:06:11 2015 +0100 @@ -209,6 +209,69 @@ +void editName(char *name, char *text) +{ + char pmpt[81]; + int i, x = 0, key, val; + + if (debug) + fprintf(stdout, "editName(%s)\n", name); + + prompt(0, NULL); + prompt(131, NULL); /* " Change Name " */ + prompt(417, NULL); /* " up dwn next ok " */ + + for (;;) { + snprintf(pmpt, Config.lcd_cols + 1, " "); + prompt(200, pmpt); +#ifdef HAVE_WIRINGPI_H + lcdPosition(lcdHandle, x, 1); + lcdPutchar(lcdHandle, '*'); +#endif + slcdPosition(slcdHandle, x, 1); + slcdPutchar(slcdHandle, '*'); + snprintf(pmpt, Config.lcd_cols + 1, "%s", name); + prompt(300, pmpt); + + key = keywait(); + + if ((key == KEY_ENTER) || my_shutdown) { + if (debug) + fprintf(stdout, "End editName(%s)\n", name); + for (i = strlen(name) -1; i > 1; i--) { + if (name[i] != ' ') + break; + name[i] = '\0'; + } + if (debug) + fprintf(stdout, "End editName(%s)\n", name); + return; + } + if (key == KEY_RETURN) { + if (x < 19) + x++; + else + x = 0; + if (debug) + fprintf(stdout, "editName: strlen=%d x=%d\n", (int)strlen(name) - 1, x); + if (x > ((int)strlen(name) - 1)) { + name[x + 1] = '\0'; + name[x] = ' '; + } + } + if (key == KEY_UP || key == KEY_DOWN) { + val = name[x]; + if ((key == KEY_UP) && (val < 126)) + val++; + if ((key == KEY_DOWN) && (val > 32)) + val--; + name[x] = val; + } + } +} + + + void editPID(pid_var *pid) { int idx = 1, key, val; @@ -220,7 +283,7 @@ for (;;) { prompt(0, NULL); - prompt(135, NULL); + prompt(192, NULL); if (idx == 1) prompt(402, NULL); @@ -511,7 +574,7 @@ void editUnit(units_list *unit) { int idx = 1, key; - char pmpt[81], *uuid; + char pmpt[81], *uuid, *name; uLong ocrc, ncrc; if (debug) @@ -524,7 +587,7 @@ for (;;) { prompt(0, NULL); - prompt(131, NULL); + prompt(193, NULL); if (idx == 1) prompt(402, NULL); @@ -618,7 +681,13 @@ if (key == KEY_ENTER) { switch(idx) { - case 1: // name + case 1: name = calloc(sizeof(char), 21); + snprintf(name, 21, unit->name); + editName(name, (char *)"Unit name"); + if (unit->name) + free(unit->name); + unit->name = xstrcpy(name); + free(name); break; case 2: uuid = xstrcpy(unit->hlt_sensor.uuid); editSensor(uuid, (char *)"HLT sensor"); @@ -763,7 +832,7 @@ void editRecipe(a_recipe *recipe) { int idx = 1, key; - char pmpt[81]; + char pmpt[81], *name; uLong ocrc, ncrc; if (debug) @@ -776,7 +845,7 @@ for (;;) { prompt(0, NULL); - prompt(139, NULL); + prompt(191, NULL); if (idx == 1) prompt(402, NULL); @@ -818,9 +887,21 @@ if (key == KEY_ENTER) { switch(idx) { - case 1: // name + case 1: name = calloc(sizeof(char), 21); + snprintf(name, 21, recipe->name); + editName(name, (char *)"Recipe name"); + if (recipe->name) + free(recipe->name); + recipe->name = xstrcpy(name); + free(name); break; - case 2: // code + case 2: name = calloc(sizeof(char), 21); + snprintf(name, 21, recipe->code); + editName(name, (char *)"Recipe code"); + if (recipe->code) + free(recipe->code); + recipe->code = xstrcpy(name); + free(name); break; case 3: editInteger(&recipe->boiltime, 60, 240, 5, (char *)"Boil time:", (char *)"mins"); break; @@ -995,7 +1076,7 @@ prompt(102, NULL); /* " SETUP MENU " */ prompt(221, NULL); /* " Select Recipe " */ if (total) { - snprintf(pmpt, Config.lcd_cols + 1, "%s", recipe->name); + snprintf(pmpt, Config.lcd_cols + 1, "%s %s ", recipe->code, recipe->name); prompt(300, pmpt); } if (total == 0) @@ -1060,7 +1141,7 @@ } prompt(102, NULL); /* " SETUP MENU " */ prompt(222, NULL); /* " Select Brewsystem " */ - snprintf(pmpt, Config.lcd_cols + 1, "%s", unit->name); + snprintf(pmpt, Config.lcd_cols + 1, "%s ", unit->name); prompt(300, pmpt); if (total == 1) prompt(415, NULL); /* "add --- quit ok " */