feat(firmware): add confirmation popup when deleting input or mix lines (#7111)
This commit is contained in:
@@ -309,6 +309,19 @@ void InputMixGroupBase::refresh()
|
||||
lv_label_set_text(label, s);
|
||||
}
|
||||
|
||||
int InputMixGroupBase::getLineNumber(uint8_t index)
|
||||
{
|
||||
int n = 0;
|
||||
auto l = std::find_if(lines.begin(), lines.end(), [&](InputMixButtonBase* l) {
|
||||
n += 1;
|
||||
return l->getIndex() == index;
|
||||
});
|
||||
|
||||
if (l != lines.end()) return n;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
InputMixGroupBase* InputMixPageBase::getGroupBySrc(mixsrc_t src)
|
||||
{
|
||||
auto g = std::find_if(
|
||||
|
||||
@@ -111,6 +111,7 @@ class InputMixGroupBase : public Window
|
||||
|
||||
mixsrc_t getMixSrc() { return idx; }
|
||||
size_t getLineCount() { return lines.size(); }
|
||||
int getLineNumber(uint8_t idx);
|
||||
|
||||
virtual void adjustHeight();
|
||||
void addLine(InputMixButtonBase* line);
|
||||
|
||||
@@ -347,24 +347,36 @@ void ModelInputsPage::insertInput(uint8_t input, uint8_t index)
|
||||
|
||||
void ModelInputsPage::deleteInput(uint8_t index)
|
||||
{
|
||||
_copyMode = 0;
|
||||
|
||||
auto group = getGroupByIndex(index);
|
||||
if (!group) return;
|
||||
if (!group) return;
|
||||
|
||||
auto line = getLineByIndex(index);
|
||||
if (!line) return;
|
||||
|
||||
group->removeLine(line);
|
||||
if (group->getLineCount() == 0) {
|
||||
group->deleteLater();
|
||||
removeGroup(group);
|
||||
auto expo = expoAddress(index);
|
||||
std::string s(getSourceString(group->getMixSrc()));
|
||||
s += " - ";
|
||||
if (expo->name[0]) {
|
||||
s += expo->name;
|
||||
} else {
|
||||
line->deleteLater();
|
||||
s += "#";
|
||||
s += std::to_string(group->getLineNumber(index));
|
||||
}
|
||||
removeLine(line);
|
||||
|
||||
::deleteExpo(index);
|
||||
if (confirmationDialog(STR_DELETE_INPUT_LINE, s.c_str())) {
|
||||
_copyMode = 0;
|
||||
|
||||
group->removeLine(line);
|
||||
if (group->getLineCount() == 0) {
|
||||
group->deleteLater();
|
||||
removeGroup(group);
|
||||
} else {
|
||||
line->deleteLater();
|
||||
}
|
||||
removeLine(line);
|
||||
|
||||
::deleteExpo(index);
|
||||
}
|
||||
}
|
||||
|
||||
void ModelInputsPage::pasteInput(uint8_t dst_idx, uint8_t input)
|
||||
|
||||
@@ -372,24 +372,36 @@ void ModelMixesPage::insertMix(uint8_t channel, uint8_t index)
|
||||
|
||||
void ModelMixesPage::deleteMix(uint8_t index)
|
||||
{
|
||||
_copyMode = 0;
|
||||
|
||||
auto group = getGroupByIndex(index);
|
||||
if (!group) return;
|
||||
|
||||
auto line = getLineByIndex(index);
|
||||
if (!line) return;
|
||||
|
||||
::deleteMix(index);
|
||||
|
||||
group->removeLine(line);
|
||||
if (group->getLineCount() == 0) {
|
||||
group->deleteLater();
|
||||
removeGroup(group);
|
||||
auto mix = mixAddress(index);
|
||||
std::string s(getSourceString(group->getMixSrc()));
|
||||
s += " - ";
|
||||
if (mix->name[0]) {
|
||||
s += mix->name;
|
||||
} else {
|
||||
line->deleteLater();
|
||||
s += "#";
|
||||
s += std::to_string(group->getLineNumber(index));
|
||||
}
|
||||
|
||||
if (confirmationDialog(STR_DELETE_MIX_LINE, s.c_str())) {
|
||||
_copyMode = 0;
|
||||
|
||||
::deleteMix(index);
|
||||
|
||||
group->removeLine(line);
|
||||
if (group->getLineCount() == 0) {
|
||||
group->deleteLater();
|
||||
removeGroup(group);
|
||||
} else {
|
||||
line->deleteLater();
|
||||
}
|
||||
removeLine(line);
|
||||
}
|
||||
removeLine(line);
|
||||
}
|
||||
|
||||
void ModelMixesPage::pasteMix(uint8_t dst_idx, uint8_t channel)
|
||||
|
||||
@@ -141,6 +141,12 @@ void deleteExpo(uint8_t idx)
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
|
||||
void onDeleteExpoConfirm(const char * result)
|
||||
{
|
||||
if (result == STR_OK)
|
||||
deleteExpo(s_currIdx);
|
||||
}
|
||||
|
||||
void onExposMenu(const char * result)
|
||||
{
|
||||
uint8_t chn = expoAddress(s_currIdx)->chn + 1;
|
||||
@@ -163,7 +169,7 @@ void onExposMenu(const char * result)
|
||||
s_copySrcRow = menuVerticalPosition;
|
||||
}
|
||||
else if (result == STR_DELETE) {
|
||||
deleteExpo(s_currIdx);
|
||||
POPUP_CONFIRMATION(STR_DELETE_INPUT_LINE, onDeleteExpoConfirm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,12 @@ bool reachMixesLimit()
|
||||
return false;
|
||||
}
|
||||
|
||||
void onDeleteMixConfirm(const char * result)
|
||||
{
|
||||
if (result == STR_OK)
|
||||
deleteMix(s_currIdx);
|
||||
}
|
||||
|
||||
void onMixesMenu(const char * result)
|
||||
{
|
||||
uint8_t chn = mixAddress(s_currIdx)->destCh + 1;
|
||||
@@ -59,7 +65,7 @@ void onMixesMenu(const char * result)
|
||||
s_copySrcRow = menuVerticalPosition;
|
||||
}
|
||||
else if (result == STR_DELETE) {
|
||||
deleteMix(s_currIdx);
|
||||
POPUP_CONFIRMATION(STR_DELETE_MIX_LINE, onDeleteMixConfirm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -743,6 +743,8 @@
|
||||
#define TR_DELETE_MODEL "删除模型"
|
||||
#define TR_RESTORE_MODEL "恢复模型"
|
||||
#define TR_DELETE_ERROR "删除失败"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("存储卡错误", "存储卡错误")
|
||||
#define TR_SDCARD "存储卡"
|
||||
#define TR_NO_FILES_ON_SD "存储卡中没有文件!"
|
||||
|
||||
@@ -742,6 +742,8 @@
|
||||
#define TR_DELETE_MODEL "Smazat model"
|
||||
#define TR_RESTORE_MODEL "Obnov model z SD karty"
|
||||
#define TR_DELETE_ERROR "Nelze odstranit"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "Chyba SD karty"
|
||||
#define TR_SDCARD "SD karta"
|
||||
#define TR_NO_FILES_ON_SD "Žádné soubory na SD kartě!"
|
||||
|
||||
@@ -748,6 +748,8 @@
|
||||
#define TR_DELETE_MODEL "Slet model"
|
||||
#define TR_RESTORE_MODEL "Genskab model"
|
||||
#define TR_DELETE_ERROR "Slet fejl"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("SD fejl", "SD kort fejl")
|
||||
#define TR_SDCARD "SD kort"
|
||||
#define TR_NO_FILES_ON_SD "Ingen filer på SD!"
|
||||
|
||||
@@ -738,6 +738,8 @@
|
||||
#define TR_DELETE_MODEL "Lösche Modell" // TODO merged into DELETEMODEL?
|
||||
#define TR_RESTORE_MODEL TR("Modell wiederher.", "Modell wiederherstellen")
|
||||
#define TR_DELETE_ERROR "Fehler beim\nLöschen"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "SD-Kartenfehler"
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "Keine Dateien auf SD!"
|
||||
|
||||
@@ -744,6 +744,8 @@
|
||||
#define TR_DELETE_MODEL "Delete model"
|
||||
#define TR_RESTORE_MODEL "Restore model"
|
||||
#define TR_DELETE_ERROR "Delete error"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("SD error", "SD card error")
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "No files on SD!"
|
||||
|
||||
@@ -738,6 +738,8 @@
|
||||
#define TR_DELETE_MODEL "Borrar modelo"
|
||||
#define TR_RESTORE_MODEL "Restaurar modelo"
|
||||
#define TR_DELETE_ERROR "Error de borrado"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "Error SDCARD"
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "No files on SD!"
|
||||
|
||||
@@ -738,6 +738,8 @@
|
||||
#define TR_DELETE_MODEL "Delete Model"
|
||||
#define TR_RESTORE_MODEL "Restore Model"
|
||||
#define TR_DELETE_ERROR "Delete error"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "SDCARD Error"
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "No files on SD!"
|
||||
|
||||
@@ -742,6 +742,8 @@
|
||||
#define TR_DELETE_MODEL "Supprimer Modèle"
|
||||
#define TR_RESTORE_MODEL "Restaurer Modèle"
|
||||
#define TR_DELETE_ERROR "Effacement impossible"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "Erreur carte SD"
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "Pas de fichiers sur SD!"
|
||||
|
||||
@@ -746,6 +746,8 @@
|
||||
#define TR_DELETE_MODEL "מחיקת מודל"
|
||||
#define TR_RESTORE_MODEL "שיחזור מודל"
|
||||
#define TR_DELETE_ERROR "שיגאת מחיקה"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("SD תקלת", "תיקיות כרטיס SD")
|
||||
#define TR_SDCARD "SD כרטיס"
|
||||
#define TR_NO_FILES_ON_SD "!SD אין קצבים על"
|
||||
|
||||
@@ -743,6 +743,8 @@
|
||||
#define TR_DELETE_MODEL TR("Elim. Modello", "Elimina Modello")
|
||||
#define TR_RESTORE_MODEL TR("Ripr. Modello", "Ripristina Modello")
|
||||
#define TR_DELETE_ERROR "Errore cancell."
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("Errore SD", "Errore SDCard")
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "SD senza file!"
|
||||
|
||||
@@ -742,6 +742,8 @@
|
||||
#define TR_DELETE_MODEL "モデル削除"
|
||||
#define TR_RESTORE_MODEL "モデル復元"
|
||||
#define TR_DELETE_ERROR "削除エラー"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("SD error", "SDカードエラー")
|
||||
#define TR_SDCARD "SDカード"
|
||||
#define TR_NO_FILES_ON_SD "SDにファイルがありません!!"
|
||||
|
||||
@@ -772,7 +772,8 @@
|
||||
#define TR_DELETE_MODEL "모델 삭제"
|
||||
#define TR_RESTORE_MODEL "모델 복원"
|
||||
#define TR_DELETE_ERROR "삭제 오류"
|
||||
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("SD 오류", "SD카드 오류")
|
||||
#define TR_SDCARD "SD 카드"
|
||||
#define TR_NO_FILES_ON_SD "SD 카드에 파일 없음!"
|
||||
|
||||
@@ -740,6 +740,8 @@
|
||||
#define TR_DELETE_MODEL "Wis Model"
|
||||
#define TR_RESTORE_MODEL "Model Terugzetten"
|
||||
#define TR_DELETE_ERROR "Fout bij verwijderen"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "SD-Kaart fout"
|
||||
#define TR_SDCARD "SD Card"
|
||||
#define TR_NO_FILES_ON_SD "No files on SD!"
|
||||
|
||||
@@ -737,6 +737,8 @@
|
||||
#define TR_DELETE_MODEL "Skasuj model"
|
||||
#define TR_RESTORE_MODEL "Odtwórz model"
|
||||
#define TR_DELETE_ERROR "Błąd kasowania"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "Błąd karty SD"
|
||||
#define TR_SDCARD "Karta SD"
|
||||
#define TR_NO_FILES_ON_SD "Brak plików na SD!"
|
||||
|
||||
@@ -743,6 +743,8 @@
|
||||
#define TR_DELETE_MODEL "Apagar Modelo"
|
||||
#define TR_RESTORE_MODEL "Restaura Modelo"
|
||||
#define TR_DELETE_ERROR "Erro ao apagar"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("Erro SD", "Cartao SD erro")
|
||||
#define TR_SDCARD "Cartão SD"
|
||||
#define TR_NO_FILES_ON_SD "Sem aquiv. no SD!"
|
||||
|
||||
@@ -745,6 +745,8 @@
|
||||
#define TR_DELETE_MODEL "Удалить модель"
|
||||
#define TR_RESTORE_MODEL "Восстан модель"
|
||||
#define TR_DELETE_ERROR "Удалить ошибку"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("Ошибка SD карты", "Ошибка SD карты")
|
||||
#define TR_SDCARD "SD карта"
|
||||
#define TR_NO_FILES_ON_SD "Нет данных на SD карте!"
|
||||
|
||||
@@ -743,6 +743,8 @@
|
||||
#define TR_DELETE_MODEL "Radera modell"
|
||||
#define TR_RESTORE_MODEL "Återställ modell"
|
||||
#define TR_DELETE_ERROR "Raderingsfel"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR "SD-kortfel"
|
||||
#define TR_SDCARD "SD-kort"
|
||||
#define TR_NO_FILES_ON_SD "Inga filer på SD!"
|
||||
|
||||
@@ -740,6 +740,8 @@
|
||||
#define TR_DELETE_MODEL "刪除模型"
|
||||
#define TR_RESTORE_MODEL "恢復模型"
|
||||
#define TR_DELETE_ERROR "刪除失敗"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("存儲卡錯誤", "存儲卡錯誤")
|
||||
#define TR_SDCARD "存儲卡"
|
||||
#define TR_NO_FILES_ON_SD "存儲卡中沒有文件!"
|
||||
|
||||
@@ -744,6 +744,8 @@
|
||||
#define TR_DELETE_MODEL "Видалити модель"
|
||||
#define TR_RESTORE_MODEL "Відновити модель"
|
||||
#define TR_DELETE_ERROR "Видалити помилку"
|
||||
#define TR_DELETE_INPUT_LINE "Delete input line"
|
||||
#define TR_DELETE_MIX_LINE "Delete mix line"
|
||||
#define TR_SDCARD_ERROR TR("помилка SD", "помилка SD карти")
|
||||
#define TR_SDCARD "SD Карта"
|
||||
#define TR_NO_FILES_ON_SD "Немає файлів на SD!"
|
||||
|
||||
@@ -505,6 +505,8 @@
|
||||
#define STR_DELETE_ERROR currentLangStrings->STR_DELETE_ERROR
|
||||
#define STR_DELETE_FILE currentLangStrings->STR_DELETE_FILE
|
||||
#define STR_DELETE_MODEL currentLangStrings->STR_DELETE_MODEL
|
||||
#define STR_DELETE_INPUT_LINE currentLangStrings->STR_DELETE_INPUT_LINE
|
||||
#define STR_DELETE_MIX_LINE currentLangStrings->STR_DELETE_MIX_LINE
|
||||
#define STR_DELETE currentLangStrings->STR_DELETE
|
||||
#define STR_DELETEMODEL currentLangStrings->STR_DELETEMODEL
|
||||
#define STR_DEVICE_DATA_REFUSED currentLangStrings->STR_DEVICE_DATA_REFUSED
|
||||
|
||||
@@ -504,6 +504,8 @@ STR(DELETE_ALL_SENSORS)
|
||||
STR(DELETE_ERROR)
|
||||
STR(DELETE_FILE)
|
||||
STR(DELETE_MODEL)
|
||||
STR(DELETE_INPUT_LINE)
|
||||
STR(DELETE_MIX_LINE)
|
||||
STR(DELETE)
|
||||
STR(DELETEMODEL)
|
||||
STR(DEVICE_DATA_REFUSED)
|
||||
|
||||
Reference in New Issue
Block a user