Revamp the class link and unlink element command

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4001 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2015-06-08 18:18:35 +00:00
parent 5a81f9859f
commit e195ab634e
8 changed files with 369 additions and 214 deletions

View File

@@ -1137,142 +1137,3 @@ void ChangeShapeStyleCommand::redo() {
diagram -> showMe();
QUndoCommand::redo();
}
/**
* @brief LinkElementsCommand::LinkElementsCommand
*Constructor
* @param elmt1 element to Link
* @param elmt2 element to link
* @param parent parent undo command
*/
LinkElementsCommand::LinkElementsCommand(Element *elmt1, Element *elmt2, QUndoCommand *parent) :
QUndoCommand(parent),
diagram_(elmt1->diagram()),
element_(elmt1),
first_redo(true)
{
elmt_list << elmt2;
if (elmt1->linkType() & Element::AllReport &&
elmt2->linkType() & Element::AllReport) {
setText(QObject::tr("Lier deux reports de folio",
"title for undo LinkElementsCommand if two elements are folio report"));
}
else if (element_->linkType() & (Element::Master|Element::Slave))
setText(QObject::tr("Editer les référence croisé", "edite the cross reference"));
else setText(QObject::tr("Lier deux éléments"));
previous_linked = elmt1->linkedElements();
}
LinkElementsCommand::LinkElementsCommand(Element *elmt1, QList<Element *> &elmtList, QUndoCommand *parent) :
QUndoCommand(parent),
diagram_(elmt1->diagram()),
element_(elmt1),
elmt_list(elmtList),
first_redo(true)
{
if (element_->linkType() & (Element::Master|Element::Slave))
setText(QObject::tr("Editer les référence croisé"));
else setText(QObject::tr("Lier deux éléments"));
previous_linked = elmt1->linkedElements();
}
/**
* @brief LinkElementsCommand::~LinkElementsCommand
*destructor
*/
LinkElementsCommand::~LinkElementsCommand(){}
/**
* @brief LinkElementsCommand::undo
*Undo command
*/
void LinkElementsCommand::undo() {
diagram_->showMe();
foreach (Element *elmt, elmt_list)
element_->unlinkElement(elmt);
foreach (Element *elmt, previous_linked)
element_->linkToElement(elmt);
QUndoCommand::undo();
}
/**
* @brief LinkElementsCommand::redo
*redo command
*/
void LinkElementsCommand::redo() {
diagram_->showMe();
foreach (Element *elmt, elmt_list)
element_->linkToElement(elmt);
//If element are report, check if text of this potential is identical.
if ((element_->linkType() &Element::AllReport) && first_redo) {
if(element_->conductors().count() && elmt_list.first()->conductors().count()) {
ConductorAutoNumerotation::checkPotential(element_->conductors().first());
}
first_redo = false;
}
QUndoCommand::redo();
}
/**
* @brief unlinkElementsCommand::unlinkElementsCommand
* Constructor, unlink elmt2 or all elements if elmt2 isn't specified
* @param elmt1 element to set undo command
* @param elmt2 element to be unlinked
* @param parent undo parent
*/
unlinkElementsCommand::unlinkElementsCommand(Element *elmt1, Element *elmt2, QUndoCommand *parent):
QUndoCommand(parent),
diagram_(elmt1->diagram()),
element_(elmt1)
{
if (elmt2) elmt_list << elmt2;
else elmt_list << elmt1->linkedElements();
setText(QObject::tr("Délier %n élément(s)", "", elmt_list.size()));
}
/**
* @brief unlinkElementsCommand::unlinkElementsCommand
* @param elmt1 Element to set the link
* @param elmtList list of all element to be linked to elmt1
* @param parent undo command
*/
unlinkElementsCommand::unlinkElementsCommand(Element *elmt1, QList<Element *> &elmtList, QUndoCommand *parent):
QUndoCommand(parent),
diagram_(elmt1->diagram()),
element_(elmt1),
elmt_list(elmtList)
{
setText(QObject::tr("Délier %n élément(s)", "", elmt_list.size()));
}
/**
* @brief unlinkElementsCommand::~unlinkElementsCommand
* destructor
*/
unlinkElementsCommand::~unlinkElementsCommand(){}
/**
* @brief unlinkElementsCommand::undo
*undo command
*/
void unlinkElementsCommand::undo() {
foreach (Element *elmt, elmt_list)
element_->linkToElement(elmt);
QUndoCommand::undo();
}
/**
* @brief unlinkElementsCommand::redo
*redo command
*/
void unlinkElementsCommand::redo() {
foreach (Element *elmt, elmt_list)
element_->unlinkElement(elmt);
QUndoCommand::redo();
}