From 3c2b7a8df74f924a96b892aa31ff44661cd95ae8 Mon Sep 17 00:00:00 2001 From: garak Date: Wed, 26 Jun 2019 16:14:09 -0400 Subject: [PATCH] fix copy from existing encounter group function --- include/core/wildmoninfo.h | 1 + src/core/wildmoninfo.cpp | 17 +++++++++++++++++ src/editor.cpp | 24 +++++++++++++++++++++++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/include/core/wildmoninfo.h b/include/core/wildmoninfo.h index 728fe689..95c25cf2 100644 --- a/include/core/wildmoninfo.h +++ b/include/core/wildmoninfo.h @@ -34,5 +34,6 @@ void clearTabWidget(QLayout *tab); //void populateWildMonTabWidget(MonTabWidget *tabWidget, Fields /* QVector>> */ fields); WildMonInfo getDefaultMonInfo(Field field); +WildMonInfo copyMonInfoFromTab(QTableWidget *table, Field field); #endif // GUARD_WILDMONINFO_H diff --git a/src/core/wildmoninfo.cpp b/src/core/wildmoninfo.cpp index a6dcb953..36c3ea75 100644 --- a/src/core/wildmoninfo.cpp +++ b/src/core/wildmoninfo.cpp @@ -31,4 +31,21 @@ WildMonInfo getDefaultMonInfo(Field field) { return newInfo; } +WildMonInfo copyMonInfoFromTab(QTableWidget *monTable, Field field) { + WildMonInfo newInfo; + QVector newWildMons; + + for (int row = 0; row < monTable->rowCount(); row++) { + WildPokemon newWildMon; + newWildMon.species = monTable->cellWidget(row, 1)->findChild()->currentText(); + newWildMon.minLevel = monTable->cellWidget(row, 2)->findChild()->value(); + newWildMon.maxLevel = monTable->cellWidget(row, 3)->findChild()->value(); + newWildMons.append(newWildMon); + } + newInfo.active = true; + newInfo.wildPokemon = newWildMons; + newInfo.encounterRate = monTable->findChild()->value(); + + return newInfo; +} diff --git a/src/editor.cpp b/src/editor.cpp index 4cf4bf41..f099549a 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -251,6 +251,8 @@ void Editor::addNewWildMonGroup() { QStackedWidget *stack = ui->stackedWidget_WildMons; QComboBox *labelCombo = ui->comboBox_EncounterGroupLabel; + int stackIndex = stack->currentIndex(); + QDialog dialog(nullptr, Qt::WindowTitleHint | Qt::WindowCloseButtonHint); dialog.setWindowTitle("New Wild Encounter Group Label"); dialog.setWindowModality(Qt::NonModal); @@ -309,6 +311,13 @@ void Editor::addNewWildMonGroup() { MonTabWidget *monWidget = static_cast(stack->widget(stack->currentIndex())); for (Field monField : project->wildMonFields) { fieldCheckboxes[fieldIndex]->setChecked(monWidget->isTabEnabled(fieldIndex));//header.wildMons.value(monField.first).active); + fieldCheckboxes[fieldIndex]->setEnabled(false); + fieldIndex++; + } + } else if (state == Qt::Unchecked) { + int fieldIndex = 0; + for (Field monField : project->wildMonFields) { + fieldCheckboxes[fieldIndex]->setEnabled(true); fieldIndex++; } } @@ -355,7 +364,16 @@ void Editor::addNewWildMonGroup() { tabWidget->clearTableAt(tabIndex); if (fieldCheckboxes[tabIndex]->isChecked()) {//(header.wildMons[fieldName].active) { qDebug() << "checked" << fieldName; - header.wildMons.insert(fieldName, getDefaultMonInfo(monField)); + if (copyCheckbox->isChecked()) { + qDebug() << "copying mons from current group"; + MonTabWidget *copyFrom = static_cast(stack->widget(stackIndex)); + if (copyFrom->isTabEnabled(tabIndex)) + header.wildMons.insert(fieldName, copyMonInfoFromTab(copyFrom->tableAt(tabIndex), monField)); + else + header.wildMons.insert(fieldName, getDefaultMonInfo(monField)); + } else { + header.wildMons.insert(fieldName, getDefaultMonInfo(monField)); + } tabWidget->populateTab(tabIndex, header.wildMons[fieldName], fieldName); } else { tabWidget->setTabActive(tabIndex, false); @@ -413,7 +431,10 @@ void Editor::saveEncounterTabData() { QVector newWildMons; + encounterHeader.wildMons[fieldName] = copyMonInfoFromTab(monTable, monField); + //for (auto *speciesCombo : monTable->findChildren()) { + /* for (int row = 0; row < monTable->rowCount(); row++) { // cellWidget(row, column) WildPokemon newWildMon; @@ -427,6 +448,7 @@ void Editor::saveEncounterTabData() { encounterHeader.wildMons[fieldName].wildPokemon = newWildMons; encounterHeader.wildMons[fieldName].encounterRate = monTable->findChild()->value(); //fieldIndex++; + */ } } }