Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,072 changes: 549 additions & 523 deletions qtfred/src/mission/dialogs/ShipEditor/ShipEditorDialogModel.cpp

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions qtfred/src/mission/dialogs/ShipEditor/ShipEditorDialogModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ class ShipEditorDialogModel : public AbstractDialogModel {

void set_modified();

bool update_ship(int ship);
bool update_data();

void ship_alt_name_close(int base_ship);
void ship_callsign_close(int base_ship);

Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/FictionViewerDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ void FictionViewerDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void FictionViewerDialog::reject()
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/MissionSpecs/CustomDataDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ void CustomDataDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void CustomDataDialog::reject()
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/MissionSpecs/CustomStringsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ void CustomStringsDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void CustomStringsDialog::reject()
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/ReinforcementsEditorDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ void ReinforcementsDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ReinforcementsDialog::reject()
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/ShieldSystemDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void ShieldSystemDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ShieldSystemDialog::reject()
Expand Down
51 changes: 27 additions & 24 deletions qtfred/src/ui/dialogs/ShipEditor/ShipAltShipClass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ void ShipAltShipClass::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ShipAltShipClass::reject()
Expand Down Expand Up @@ -210,7 +210,6 @@ void ShipAltShipClass::initUI()
void ShipAltShipClass::updateUI()
{
util::SignalBlockers blockers(this); // block signals while we set up the UI
QModelIndexList* list;
auto current = ui->classList->currentIndex();
auto ship_class = -1;
auto variable = -1;
Expand All @@ -223,32 +222,36 @@ void ShipAltShipClass::updateUI()
if (ui->variableCombo->model()->rowCount() <= 1) {
dynamic_cast<InverseSortFilterProxyModel*>(ui->shipCombo->model())->setFilterFixedString("Set From Variable");
}
list = new QModelIndexList(
ui->shipCombo->model()->match(ui->shipCombo->model()->index(0, 0), Qt::UserRole, ship_class));
if (!list->empty()) {
ui->shipCombo->setCurrentIndex(list->first().row());
} else {
if (ui->classList->model()->rowCount() != 0 && ship_class != -1) {
_viewport->dialogProvider->showButtonDialog(DialogType::Error,
"Error",
"Illegal ship class.\n Resetting to -1",
{DialogButton::Ok});
{
QModelIndexList shipMatches =
ui->shipCombo->model()->match(ui->shipCombo->model()->index(0, 0), Qt::UserRole, ship_class);
if (!shipMatches.empty()) {
ui->shipCombo->setCurrentIndex(shipMatches.first().row());
} else {
if (ui->classList->model()->rowCount() != 0 && ship_class != -1) {
_viewport->dialogProvider->showButtonDialog(DialogType::Error,
"Error",
"Illegal ship class.\n Resetting to -1",
{DialogButton::Ok});
}
ui->shipCombo->setCurrentIndex(0);
}
ui->shipCombo->setCurrentIndex(0);
}

auto varlist = new QModelIndexList(
ui->variableCombo->model()->match(ui->variableCombo->model()->index(0, 0), Qt::UserRole, variable));
if (!varlist->empty()) {
ui->variableCombo->setCurrentIndex(varlist->first().row());
} else {
if (ui->classList->model()->rowCount() != 0) {
_viewport->dialogProvider->showButtonDialog(DialogType::Error,
"Error",
"Illegal variable index.\n Resetting to -1",
{DialogButton::Ok});
{
QModelIndexList varMatches =
ui->variableCombo->model()->match(ui->variableCombo->model()->index(0, 0), Qt::UserRole, variable);
if (!varMatches.empty()) {
ui->variableCombo->setCurrentIndex(varMatches.first().row());
} else {
if (ui->classList->model()->rowCount() != 0) {
_viewport->dialogProvider->showButtonDialog(DialogType::Error,
"Error",
"Illegal variable index.\n Resetting to -1",
{DialogButton::Ok});
}
ui->variableCombo->setCurrentIndex(0);
}
ui->variableCombo->setCurrentIndex(0);
}

if (ui->variableCombo->model()->rowCount() <= 1) {
Expand Down
33 changes: 9 additions & 24 deletions qtfred/src/ui/dialogs/ShipEditor/ShipCustomWarpDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,24 +80,14 @@ void ShipCustomWarpDialog::on_comboBoxType_currentIndexChanged(int index)
_model->setType(index);
}
void ShipCustomWarpDialog::on_lineEditStartSound_editingFinished()
{ // String wrangling reqired in order to avoid crashes when directly converting from Qstring to std::string on some
// enviroments
QString temp(ui->lineEditStartSound->text());
if (!temp.isEmpty()) {
_model->setStartSound(temp.toLatin1().constData());
} else {
_model->setStartSound("");
}
{
SCP_string startSound = ui->lineEditStartSound->text().toUtf8().constData();
_model->setStartSound(startSound);
}
void ShipCustomWarpDialog::on_lineEditEndSound_editingFinished()
{ // String wrangling reqired in order to avoid crashes when directly converting from Qstring to std::string on some
// enviroments
QString temp(ui->lineEditEndSound->text());
if (!temp.isEmpty()) {
_model->setEndSound(temp.toLatin1().constData());
} else {
_model->setEndSound("");
}
{
SCP_string endSound = ui->lineEditEndSound->text().toUtf8().constData();
_model->setEndSound(endSound);
}
void ShipCustomWarpDialog::on_doubleSpinBoxEngage_valueChanged(double value)
{
Expand All @@ -120,14 +110,9 @@ void ShipCustomWarpDialog::on_doubleSpinBoxRadius_valueChanged(double value)
_model->setRadius(value);
}
void ShipCustomWarpDialog::on_lineEditAnim_editingFinished()
{ // String wrangling reqired in order to avoid crashes when directly converting from Qstring to std::string on some
// enviroments
QString temp(ui->lineEditAnim->text());
if (!temp.isEmpty()) {
_model->setAnim(temp.toLatin1().constData());
} else {
_model->setAnim("");
}
{
SCP_string anim = ui->lineEditAnim->text().toUtf8().constData();
_model->setAnim(anim);
}
void ShipCustomWarpDialog::on_checkBoxSupercap_toggled(bool state)
{
Expand Down
37 changes: 16 additions & 21 deletions qtfred/src/ui/dialogs/ShipEditor/ShipEditorDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ ShipEditorDialog::ShipEditorDialog(FredView* parent, EditorViewport* viewport)
ui->callsignCombo->lineEdit()->setMaxLength(CALLSIGN_LEN);

connect(_model.get(), &AbstractDialogModel::modelChanged, this, [this] { updateUI(false); });
connect(this, &QDialog::accepted, _model.get(), &ShipEditorDialogModel::apply);
connect(viewport->editor, &Editor::currentObjectChanged, this, &ShipEditorDialog::update);
connect(viewport->editor, &Editor::objectMarkingChanged, this, &ShipEditorDialog::update);

Expand Down Expand Up @@ -69,8 +68,6 @@ bool ShipEditorDialog::getIfMultipleShips() const

void ShipEditorDialog::closeEvent(QCloseEvent* e)
{
util::SignalBlockers blockers(this);
_model->apply();
_viewport->editor->autosave("ship editor");
QDialog::closeEvent(e);
}
Expand Down Expand Up @@ -118,9 +115,6 @@ void ShipEditorDialog::on_tblInfoButton_clicked()
void ShipEditorDialog::update()
{
if (this->isVisible()) {
if (_model->getNumSelectedObjects() && _model->query_modified()) {
_model->apply();
}
_model->initializeData();
updateUI(true);
}
Expand Down Expand Up @@ -206,10 +200,11 @@ void ShipEditorDialog::updateColumnOne(bool overwrite)
for (auto j = 0; j < Mission_alt_type_count; j++) {
ui->altNameCombo->addItem(Mission_alt_types[j]);
}
if (ui->altNameCombo->findText(QString(altname.c_str()))) {
ui->altNameCombo->setCurrentIndex(ui->altNameCombo->findText(QString(altname.c_str())));
int altNameIdx = ui->altNameCombo->findText(QString(altname.c_str()));
if (altNameIdx >= 0) {
ui->altNameCombo->setCurrentIndex(altNameIdx);
} else {
ui->altNameCombo->setCurrentIndex(ui->altNameCombo->findText("<none>"));
ui->altNameCombo->setEditText("<none>");
}
}
}
Expand All @@ -218,19 +213,19 @@ void ShipEditorDialog::updateColumnOne(bool overwrite)
if (_model->getIfMultipleShips()) {
ui->callsignCombo->setEnabled(false);
} else {
ui->callsignCombo->clear();
auto callsign = _model->getCallsign();
ui->callsignCombo->setEnabled(true);
if (overwrite) {
ui->callsignCombo->clear();
ui->callsignCombo->addItem("<none>");
for (auto j = 0; j < Mission_callsign_count; j++) {
ui->callsignCombo->addItem(Mission_callsigns[j], QVariant(Mission_callsigns[j]));
}

if (ui->callsignCombo->findText(QString(callsign.c_str()))) {
ui->callsignCombo->setCurrentIndex(ui->callsignCombo->findText(QString(callsign.c_str())));
int callsignIdx = ui->callsignCombo->findText(QString(callsign.c_str()));
if (callsignIdx >= 0) {
ui->callsignCombo->setCurrentIndex(callsignIdx);
} else {
ui->altNameCombo->setCurrentIndex(ui->callsignCombo->findText("<none>"));
ui->callsignCombo->setEditText("<none>");
}
}
}
Expand Down Expand Up @@ -863,32 +858,32 @@ void ShipEditorDialog::on_departureLocationCombo_currentIndexChanged(int index)
auto depLocationIdx = ui->departureLocationCombo->itemData(index).toInt();
_model->setDepartureLocationIndex(depLocationIdx);
}
void fred::dialogs::ShipEditorDialog::on_departureTargetCombo_currentIndexChanged(int index)
void ShipEditorDialog::on_departureTargetCombo_currentIndexChanged(int index)
{
auto depLocationIdx = ui->departureTargetCombo->itemData(index).toInt();
_model->setDepartureTarget(depLocationIdx);
}
void fred::dialogs::ShipEditorDialog::on_departureDelaySpinBox_valueChanged(int value)
void ShipEditorDialog::on_departureDelaySpinBox_valueChanged(int value)
{
_model->setDepartureDelay(value);
}
void fred::dialogs::ShipEditorDialog::on_updateDepartureCueCheckBox_toggled(bool value)
void ShipEditorDialog::on_updateDepartureCueCheckBox_toggled(bool value)
{
_model->setDepartureCue(value);
}
void fred::dialogs::ShipEditorDialog::on_departureTree_rootNodeFormulaChanged(int old, int node)
void ShipEditorDialog::on_departureTree_rootNodeFormulaChanged(int old, int node)
{
_model->setDepartureFormula(old, node);
}
void fred::dialogs::ShipEditorDialog::on_departureTree_helpChanged(const QString& help)
void ShipEditorDialog::on_departureTree_helpChanged(const QString& help)
{
ui->helpText->setPlainText(help);
}
void fred::dialogs::ShipEditorDialog::on_departureTree_miniHelpChanged(const QString& help)
void ShipEditorDialog::on_departureTree_miniHelpChanged(const QString& help)
{
ui->HelpTitle->setText(help);
}
void fred::dialogs::ShipEditorDialog::on_noDepartureWarpCheckBox_toggled(bool value)
void ShipEditorDialog::on_noDepartureWarpCheckBox_toggled(bool value)
{
_model->setNoDepartureWarp(value);
}
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/ShipEditor/ShipFlagsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ void ShipFlagsDialog::accept() {
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ShipFlagsDialog::reject() {
Expand Down
15 changes: 9 additions & 6 deletions qtfred/src/ui/dialogs/ShipEditor/ShipGoalsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void ShipGoalsDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ShipGoalsDialog::reject()
Expand Down Expand Up @@ -316,11 +316,14 @@ void ShipGoalsDialog::updateUI()
_model->setDock(i, -1);
ship_subsys* cur_subsys;
auto subsysvalue = _model->getSubsys(i);
cur_subsys = GET_FIRST(&Ships[i].subsys_list);
while (cur_subsys != END_OF_LIST(&Ships[i].subsys_list)) {
subsys[i]->addItem(cur_subsys->system_info->subobj_name,
QVariant(QString(cur_subsys->system_info->subobj_name)));
cur_subsys = GET_NEXT(cur_subsys);
int target_ship_idx = _model->getObject(i) & DATA_MASK;
if (target_ship_idx >= 0 && target_ship_idx < MAX_SHIPS) {
cur_subsys = GET_FIRST(&Ships[target_ship_idx].subsys_list);
while (cur_subsys != END_OF_LIST(&Ships[target_ship_idx].subsys_list)) {
subsys[i]->addItem(cur_subsys->system_info->subobj_name,
QVariant(QString(cur_subsys->system_info->subobj_name)));
cur_subsys = GET_NEXT(cur_subsys);
}
}
if (subsysvalue.empty()) {
subsys[i]->setCurrentIndex(0);
Expand Down
16 changes: 7 additions & 9 deletions qtfred/src/ui/dialogs/ShipEditor/ShipInitialStatusDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,15 +127,13 @@ void ShipInitialStatusDialog::on_subIntegritySpinBox_valueChanged(int value)
}
void ShipInitialStatusDialog::on_cargoEdit_editingFinished()
{
auto cargo = ui->cargoEdit->text();
auto cargofixed = cargo.toUtf8();
_model->setCargo(cargofixed.toStdString());
SCP_string cargo = ui->cargoEdit->text().toUtf8().constData();
_model->setCargo(cargo);
}
void ShipInitialStatusDialog::on_colourComboBox_currentIndexChanged(int index)
{
auto string = ui->colourComboBox->itemText(index);
auto stringfixed = string.toUtf8();
_model->setColour(stringfixed.toStdString());
SCP_string colour = ui->colourComboBox->itemText(index).toUtf8().constData();
_model->setColour(colour);
}
void ShipInitialStatusDialog::on_okPushButton_clicked()
{
Expand Down Expand Up @@ -327,9 +325,6 @@ void ShipInitialStatusDialog::list_dockees(int dock_types)
}
void ShipInitialStatusDialog::list_dockee_points(int shipnum)
{
ship* shipp = &Ships[_model->getShip()];
ship* other_shipp = &Ships[shipnum];

// enable/disable dropdown
ui->dockeePointComboBox->setEnabled((shipnum >= 0));

Expand All @@ -341,6 +336,9 @@ void ShipInitialStatusDialog::list_dockee_points(int shipnum)
return;
}

ship* shipp = &Ships[_model->getShip()];
ship* other_shipp = &Ships[shipnum];

// get the required dock type(s)
int dock_type = model_get_dock_index_type(Ship_info[shipp->ship_info_index].model_num, cur_docker_point);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ void ShipSpecialStatsDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void ShipSpecialStatsDialog::reject()
Expand Down
2 changes: 1 addition & 1 deletion qtfred/src/ui/dialogs/VariableDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ void VariableDialog::accept()
if (_model->apply()) {
QDialog::accept();
}
// else: validation failed, dont close
// else: validation failed, don't close
}

void VariableDialog::reject()
Expand Down
Loading
Loading