Use QPropertyUndoCommand instead of ChangeSeveralConductorsPropertiesCommand and ChangeConductorsPropertiesCommand.

Remove class ChangeSeveralConductorsPropertiesCommand and ChangeConductorsPropertiesCommand.


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4092 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2015-08-09 12:06:31 +00:00
parent c801c3e0a5
commit ed75c57c1d
10 changed files with 87 additions and 288 deletions

View File

@@ -18,11 +18,10 @@
#include "conductorpropertiesdialog.h"
#include "ui_conductorpropertiesdialog.h"
#include "conductor.h"
#include "conductorpropertieswidget.h"
#include "diagramcommands.h"
#include "diagram.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h"
/**
* @brief ConductorPropertiesDialog::ConductorPropertiesDialog
@@ -58,36 +57,31 @@ ConductorPropertiesDialog::~ConductorPropertiesDialog()
* @param conductor, conductor to edit propertie
* @param parent, parent widget
*/
void ConductorPropertiesDialog::PropertiesDialog(Conductor *conductor, QWidget *parent) {
void ConductorPropertiesDialog::PropertiesDialog(Conductor *conductor, QWidget *parent)
{
ConductorPropertiesDialog cpd (conductor, parent);
if (cpd.exec() == QDialog::Accepted && cpd.properties() != conductor->properties()) {
if (cpd.exec() == QDialog::Accepted && cpd.properties() != conductor->properties())
{
QVariant old_value, new_value;
old_value.setValue(conductor->properties());
new_value.setValue(cpd.properties());
if (cpd.applyAll()) {
QList <Conductor *> conductorslist = conductor -> relatedPotentialConductors().toList();
conductorslist << conductor;
QList <ConductorProperties> old_properties_list;
QPropertyUndoCommand *undo = new QPropertyUndoCommand(conductor, "properties", old_value, new_value);
undo->setText(tr("Modifier les propriétés d'un conducteur", "undo caption"));
foreach (Conductor *c, conductorslist) {
if (c == conductor) {
old_properties_list << conductor -> properties();
} else {
old_properties_list << c -> properties();
c -> setProperties( cpd.properties() );
}
//Make undo for all related potiential conductors
if (cpd.applyAll() && !conductor->relatedPotentialConductors().isEmpty())
{
undo->setText(tr("Modifier les propriétés de plusieurs conducteurs", "undo caption"));
foreach (Conductor *cond, conductor->relatedPotentialConductors())
{
old_value.setValue(cond->properties());
new QPropertyUndoCommand (cond, "properties", old_value, new_value, undo);
}
//initialize the corresponding UndoCommand object
ChangeSeveralConductorsPropertiesCommand *cscpc = new ChangeSeveralConductorsPropertiesCommand(conductorslist);
cscpc -> setOldSettings(old_properties_list);
cscpc -> setNewSettings(cpd.properties());
conductor -> diagram() -> undoStack().push(cscpc);
} else {
// initialize the corresponding UndoCommand object
ChangeConductorPropertiesCommand *ccpc = new ChangeConductorPropertiesCommand(conductor);
ccpc -> setOldSettings(conductor -> properties());
ccpc -> setNewSettings(cpd.properties());
conductor -> diagram() -> undoStack().push(ccpc);
}
conductor->diagram()->undoStack().push(undo);
}
}