diff --git a/sources/TerminalStrip/ui/freeterminaleditor.cpp b/sources/TerminalStrip/ui/freeterminaleditor.cpp index eced54d6f..b4a07122f 100644 --- a/sources/TerminalStrip/ui/freeterminaleditor.cpp +++ b/sources/TerminalStrip/ui/freeterminaleditor.cpp @@ -17,9 +17,11 @@ */ #include "freeterminaleditor.h" #include "ui_freeterminaleditor.h" + +#include "../undocommand/changeelementdatacommand.h" +#include "../../diagram.h" #include "../../elementprovider.h" #include "freeterminalmodel.h" -#include "../../diagram.h" /** * @brief FreeTerminalEditor::FreeTerminalEditor @@ -79,3 +81,36 @@ FreeTerminalEditor::~FreeTerminalEditor() void FreeTerminalEditor::reload() { m_model->clear(); } + +/** + * @brief FreeTerminalEditor::apply + * Applu current edited values + */ +void FreeTerminalEditor::apply() +{ + const auto modified_data = m_model->modifiedModelRealTerminalData(); + if (modified_data.size()) + { + m_project->undoStack()->beginMacro(tr("Modifier des propriétés de borniers")); + + for (const auto &data_ : modified_data) + { + if (auto element_ = data_.element_) + { + auto current_data = element_->elementData(); + current_data.setTerminalType(data_.type_); + current_data.setTerminalFunction(data_.function_); + current_data.setTerminalLED(data_.led_); + current_data.m_informations.addValue(QStringLiteral("label"), data_.label_); + + if (element_->elementData() != current_data) { + m_project->undoStack()->push(new ChangeElementDataCommand(element_, current_data)); + } + } + } + + m_project->undoStack()->endMacro(); + } + + reload(); +} diff --git a/sources/TerminalStrip/ui/freeterminaleditor.h b/sources/TerminalStrip/ui/freeterminaleditor.h index 41978f94f..aeeafc450 100644 --- a/sources/TerminalStrip/ui/freeterminaleditor.h +++ b/sources/TerminalStrip/ui/freeterminaleditor.h @@ -38,6 +38,7 @@ class FreeTerminalEditor : public QWidget ~FreeTerminalEditor(); void reload(); + void apply(); private: void selectionChanged(); diff --git a/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp b/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp index f6437d8a1..425eef77b 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp @@ -162,6 +162,7 @@ void TerminalStripEditorWindow::on_m_button_box_clicked(QAbstractButton *button) { switch (ui->m_stacked_widget->currentIndex()) { case FREE_TERMINAL_PAGE: + m_free_terminal_editor->apply(); break; case TERMINAL_STRIP_PAGE: m_terminal_strip_editor->apply();