Several fixes and improvements for name editing.

pull/32/head
Holger Wirtz 4 years ago
parent 315cb548c6
commit ccc37a34c5
  1. 93
      UI.hpp

@ -3637,9 +3637,9 @@ void UI_func_voice_select(uint8_t param)
char voice_name[VOICE_NAME_LEN];
if (!get_bank_name(configuration.performance.bank[selected_instance_id], bank_name, sizeof(bank_name)))
strncpy(bank_name, "*ERROR*", sizeof(bank_name));
strcpy(bank_name, "*ERROR*");
if (!get_voice_by_bank_name(configuration.performance.bank[selected_instance_id], bank_name, configuration.performance.voice[selected_instance_id], voice_name, sizeof(voice_name)))
strncpy(voice_name, "*ERROR*", sizeof(voice_name));
strcpy(voice_name, "*ERROR*");
lcd.setCursor(14, 0);
lcd.write(0);
@ -3756,22 +3756,22 @@ void UI_func_voice_select(uint8_t param)
if (strlen(g_bank_name[selected_instance_id]) > 0)
{
strncpy(bank_name, g_bank_name[selected_instance_id], sizeof(bank_name));
strcpy(bank_name, g_bank_name[selected_instance_id]);
}
else
{
if (!get_bank_name(configuration.performance.bank[selected_instance_id], bank_name, sizeof(bank_name)))
strncpy(bank_name, "*ERROR*", sizeof(bank_name));
strcpy(bank_name, "*ERROR*");
}
if (strlen(g_voice_name[selected_instance_id]) > 0)
{
strncpy(voice_name, g_voice_name[selected_instance_id], sizeof(voice_name));
strcpy(voice_name, g_voice_name[selected_instance_id]);
}
else
{
if (!get_voice_by_bank_name(configuration.performance.bank[selected_instance_id], bank_name, configuration.performance.voice[selected_instance_id], voice_name, sizeof(voice_name)))
strncpy(voice_name, "*ERROR*", sizeof(voice_name));
strcpy(voice_name, "*ERROR*");
}
lcd.show(0, 0, 2, configuration.performance.bank[selected_instance_id]);
@ -4520,7 +4520,7 @@ void UI_func_save_voice(uint8_t param)
char bank_name[BANK_NAME_LEN];
if (!get_bank_name(configuration.performance.bank[selected_instance_id], bank_name, sizeof(bank_name)))
strncpy(bank_name, "*ERROR*", sizeof(bank_name));
strcpy(bank_name, "*ERROR*");
lcd.setCursor(0, 0);
lcd.print(F("Save to Bank"));
@ -4565,7 +4565,7 @@ void UI_func_save_voice(uint8_t param)
configuration.performance.bank[selected_instance_id] = constrain(configuration.performance.bank[selected_instance_id] - ENCODER[ENC_R].speed(), 0, MAX_BANKS - 1);
if (!get_bank_name(configuration.performance.bank[selected_instance_id], bank_name, sizeof(bank_name)))
strncpy(bank_name, "*ERROR*", sizeof(bank_name));
strcpy(bank_name, "*ERROR*");
lcd.show(1, 0, 2, configuration.performance.bank[selected_instance_id]);
lcd.show(1, 4, 10, bank_name);
@ -4702,7 +4702,7 @@ void UI_func_sysex_receive_bank(uint8_t param)
lcd.setCursor(0, 1);
lcd.print(F("[ ]"));
if (!get_bank_name(configuration.performance.bank[selected_instance_id], receive_bank_filename, sizeof(receive_bank_filename)))
strncpy(receive_bank_filename, "*ERROR*", 7);
strcpy(receive_bank_filename, "*ERROR*");
lcd.show(1, 1, 2, bank_number);
lcd.show(1, 5, 10, receive_bank_filename);
}
@ -4718,7 +4718,7 @@ void UI_func_sysex_receive_bank(uint8_t param)
case 0:
bank_number = constrain(bank_number + ENCODER[ENC_R].speed(), 0, MAX_BANKS - 1);
if (!get_bank_name(bank_number, receive_bank_filename, sizeof(receive_bank_filename)))
strncpy(receive_bank_filename, "*ERROR*", 7);
strcpy(receive_bank_filename, "*ERROR*");
lcd.show(1, 1, 2, bank_number);
lcd.show(1, 5, 10, receive_bank_filename);
break;
@ -4741,7 +4741,7 @@ void UI_func_sysex_receive_bank(uint8_t param)
case 0:
bank_number = constrain(bank_number - ENCODER[ENC_R].speed(), 0, MAX_BANKS - 1);
if (!get_bank_name(bank_number, receive_bank_filename, sizeof(receive_bank_filename)))
strncpy(receive_bank_filename, "*ERROR*", sizeof(receive_bank_filename));
strcpy(receive_bank_filename, "*ERROR*");
lcd.show(1, 1, 2, bank_number);
lcd.show(1, 5, 10, receive_bank_filename);
break;
@ -4762,11 +4762,14 @@ void UI_func_sysex_receive_bank(uint8_t param)
{
if (mode == 0)
{
if (!strncmp(receive_bank_filename, "*ERROR*", sizeof(receive_bank_filename)))
if (!strcmp(receive_bank_filename, "*ERROR*"))
{
yesno = true;
strncpy(receive_bank_filename, "NONAME", 6);
mode += 2;
strcpy(receive_bank_filename, "NONAME");
mode = 2;
lcd.setCursor(0, 1);
lcd.print(F("[ ] "));
ui_select_name_state = UI_select_name(1, 1, receive_bank_filename, BANK_NAME_LEN - 1, true);
lcd.blink();
}
else
@ -4781,8 +4784,8 @@ void UI_func_sysex_receive_bank(uint8_t param)
mode = 2;
lcd.setCursor(0, 1);
lcd.print(F("[ ] "));
lcd.blink();
ui_select_name_state = UI_select_name(1, 1, receive_bank_filename, BANK_NAME_LEN - 1, true);
lcd.blink();
}
else if (mode == 2)
{
@ -4797,7 +4800,7 @@ void UI_func_sysex_receive_bank(uint8_t param)
Serial.println(F("]"));
#endif
char tmp[FILENAME_LEN];
strncpy(tmp, receive_bank_filename, strlen(receive_bank_filename));
strcpy(tmp, receive_bank_filename);
sprintf(receive_bank_filename, "/%d/%s.syx", bank_number, tmp);
#ifdef DEBUG
Serial.print(F("Receiving into bank "));
@ -5083,15 +5086,21 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
static int8_t edit_pos;
static bool edit_mode;
static uint8_t edit_value;
static uint8_t last_char_pos;
if (init == true)
{
lcd.setCursor(x, y);
lcd.print(edit_string);
edit_mode = false;
edit_pos = 0;
edit_value = search_accepted_char(edit_string[edit_pos]);
last_char_pos = strlen(edit_string);
string_trim(edit_string); // just to be sure
lcd.setCursor(x, y);
lcd.print(edit_string);
lcd.setCursor(x, y);
return (false);
}
@ -5105,6 +5114,9 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
if (edit_value < sizeof(accepted_chars) - 2)
edit_value++;
if (edit_value == 0 && edit_string[constrain(edit_pos + 1, 0, len)] > 0)
edit_value = 1;
edit_string[edit_pos] = accepted_chars[edit_value];
lcd.setCursor(x + edit_pos, y);
@ -5112,7 +5124,13 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
}
else
{
edit_pos = constrain(edit_pos + 1, 0, len);
if (edit_string[edit_pos] != 0 && edit_string[edit_pos] != 32)
edit_pos = constrain(edit_pos + 1, 0, len);
else
{
if (edit_pos + 1 > last_char_pos)
edit_pos = len;
}
if (edit_pos == len)
{
@ -5134,6 +5152,8 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
if (edit_value >= 1)
edit_value--;
if (edit_value == 0 && edit_string[constrain(edit_pos + 1, 0, len)] > 0)
edit_value = 1;
edit_string[edit_pos] = accepted_chars[edit_value];
lcd.setCursor(x + edit_pos, y);
@ -5141,9 +5161,12 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
}
else
{
edit_pos = constrain(edit_pos - 1, 0, len - 1);
if (edit_pos - 1 > last_char_pos)
edit_pos = last_char_pos;
else
edit_pos = constrain(edit_pos - 1, 0, len - 1);
if (edit_pos == len - 1)
if (edit_pos == last_char_pos)
{
lcd.setCursor(x - 1, y);
lcd.print(F("["));
@ -5158,18 +5181,33 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
}
else if (LCDML.BT_checkEnter())
{
last_char_pos = strlen(edit_string);
if (edit_pos >= len)
{
edit_pos = 0;
edit_mode = false;
string_trim(edit_string);
//string_trim(edit_string);
return (true);
}
else
{
last_char_pos = strlen(edit_string);
edit_mode = !edit_mode;
}
if (edit_mode == false && edit_pos < len && edit_string[edit_pos] != 0 && edit_string[edit_pos] != 32)
edit_pos++;
if (edit_mode == true)
{
lcd.setCursor(x + len + 1, y);
lcd.print(F("*"));
}
else
{
lcd.setCursor(x + len + 1, y);
lcd.print(F(" "));
}
}
lcd.setCursor(x + edit_pos, y);
encoderDir[ENC_R].reset();
@ -5179,11 +5217,16 @@ bool UI_select_name(uint8_t y, uint8_t x, char* edit_string, uint8_t len, bool i
uint8_t search_accepted_char(uint8_t c)
{
if (c == 0)
c = 32;
//if (c == 0)
// c = 32;
for (uint8_t i = 0; i < sizeof(accepted_chars); i++)
for (uint8_t i = 0; i < sizeof(accepted_chars) - 1; i++)
{
Serial.print(i, DEC);
Serial.print(":");
Serial.print(c);
Serial.print("==");
Serial.println(accepted_chars[i], DEC);
if (c == accepted_chars[i])
return (i);
}

Loading…
Cancel
Save