QElectroTech  0.70
addelementtextcommand.h
Go to the documentation of this file.
1 /*
2  Copyright 2006-2019 The QElectroTech Team
3  This file is part of QElectroTech.
4 
5  QElectroTech is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 2 of the License, or
8  (at your option) any later version.
9 
10  QElectroTech is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef ADDELEMENTTEXTCOMMAND_H
19 #define ADDELEMENTTEXTCOMMAND_H
20 
21 #include <QUndoCommand>
22 #include <QPointer>
23 #include <QDomElement>
24 
25 class Element;
28 
33 class AddElementTextCommand : public QUndoCommand
34 {
35  public:
36  AddElementTextCommand(Element *element, DynamicElementTextItem *deti, QUndoCommand *parent = nullptr);
37  ~AddElementTextCommand() override;
38 
39  void undo() override;
40  void redo() override;
41 
42  private:
43  Element *m_element = nullptr;
45 };
46 
51 class AddTextsGroupCommand : public QUndoCommand
52 {
53  public:
54  AddTextsGroupCommand(Element *element, QString groupe_name, QUndoCommand *parent = nullptr);
55  AddTextsGroupCommand(Element *element, const QDomElement& dom_element, QUndoCommand *parent = nullptr);
56  AddTextsGroupCommand(Element *element, QString groupe_name, QList<DynamicElementTextItem *> texts_list, QUndoCommand *parent = nullptr);
57  ~AddTextsGroupCommand() override;
58 
59  void undo() override;
60  void redo() override;
61 
62  private:
63  QPointer<Element> m_element;
64  QPointer<ElementTextItemGroup> m_group;
65  QList <DynamicElementTextItem *> m_deti_list;
66  QDomElement m_dom_element;
67  QString m_name;
68  bool m_first_undo = true;
69 };
70 
75 class RemoveTextsGroupCommand : public QUndoCommand
76 {
77  public:
78  RemoveTextsGroupCommand(Element *element, ElementTextItemGroup *group, QUndoCommand *parent = nullptr);
79  ~RemoveTextsGroupCommand() override;
80 
81  void undo() override;
82  void redo() override;
83 
84  private:
85  QPointer<Element> m_element;
86  QPointer<ElementTextItemGroup> m_group;
87  QList<QPointer<DynamicElementTextItem>> m_text_list;
88 };
89 
90 class AddTextToGroupCommand : public QUndoCommand
91 {
92  public:
93  AddTextToGroupCommand(DynamicElementTextItem *text, ElementTextItemGroup *group, QUndoCommand *parent = nullptr);
94  ~AddTextToGroupCommand() override;
95 
96  void undo() override;
97  void redo() override;
98 
99  private:
100  QPointer<DynamicElementTextItem> m_text;
101  QPointer<ElementTextItemGroup> m_group;
102  QPointer<Element> m_element;
103 };
104 
105 class RemoveTextFromGroupCommand : public QUndoCommand
106 {
107  public:
108  RemoveTextFromGroupCommand(DynamicElementTextItem *text, ElementTextItemGroup *group, QUndoCommand *parent = nullptr);
109  ~RemoveTextFromGroupCommand() override;
110 
111  void undo() override;
112  void redo() override;
113 
114  private:
115  QPointer<DynamicElementTextItem> m_text;
116  QPointer<ElementTextItemGroup> m_group;
117  QPointer<Element> m_element;
118 };
119 
120 class AlignmentTextsGroupCommand : public QUndoCommand
121 {
122  public:
123  AlignmentTextsGroupCommand(ElementTextItemGroup *group, Qt::Alignment new_alignment, QUndoCommand *parent = nullptr);
124  ~AlignmentTextsGroupCommand() override;
125 
126  int id() const override{return 6;}
127  bool mergeWith(const QUndoCommand *other) override;
128  void undo() override;
129  void redo() override;
130 
131  private:
132  QPointer<ElementTextItemGroup> m_group;
133  Qt::Alignment m_previous_alignment,
135  QHash<DynamicElementTextItem *, QPointF> m_texts_pos;
136 };
137 
138 #endif // ADDELEMENTTEXTCOMMAND_H
QPointer< ElementTextItemGroup > m_group
The DynamicElementTextItem class This class provide a simple text field of element who can be added o...
QPointer< Element > m_element
QPointer< ElementTextItemGroup > m_group
AddElementTextCommand(Element *element, DynamicElementTextItem *deti, QUndoCommand *parent=nullptr)
QPointer< DynamicElementTextItem > m_text
~AddTextToGroupCommand() override
AddTextToGroupCommand::~AddTextToGroupCommand Destructor.
~AddTextsGroupCommand() override
AddTextsGroupCommand::~AddTextsGroupCommand Destructor.
QList< DynamicElementTextItem * > m_deti_list
QPointer< Element > m_element
QList< QPointer< DynamicElementTextItem > > m_text_list
QHash< DynamicElementTextItem *, QPointF > m_texts_pos
QPointer< Element > m_element
AlignmentTextsGroupCommand(ElementTextItemGroup *group, Qt::Alignment new_alignment, QUndoCommand *parent=nullptr)
AlignmentTextsGroupCommand::AlignmentTextsGroupCommand.
QPointer< ElementTextItemGroup > m_group
AddTextToGroupCommand(DynamicElementTextItem *text, ElementTextItemGroup *group, QUndoCommand *parent=nullptr)
AddTextToGroupCommand::AddTextToGroupCommand.
The ElementTextItemGroup class This class represent a group of element text Texts in the group can be...
QPointer< ElementTextItemGroup > m_group
AddTextsGroupCommand(Element *element, QString groupe_name, QUndoCommand *parent=nullptr)
AddTextsGroupCommand::AddTextsGroupCommand.
bool mergeWith(const QUndoCommand *other) override
AlignmentTextsGroupCommand::mergeWith Try to merge this command with other command.
RemoveTextFromGroupCommand(DynamicElementTextItem *text, ElementTextItemGroup *group, QUndoCommand *parent=nullptr)
RemoveTextFromGroupCommand::RemoveTextFromGroupCommand.
The RemoveTextsGroupCommand class Manage the removinf of a texts group.
RemoveTextsGroupCommand(Element *element, ElementTextItemGroup *group, QUndoCommand *parent=nullptr)
RemoveTextsGroupCommand::RemoveTextsGroupCommand.
QPointer< ElementTextItemGroup > m_group
The AddTextsGroupCommand class Manage the adding of a texts group.
void redo() override
AlignmentTextsGroupCommand::redo.
DynamicElementTextItem * m_text
The AddElementTextCommand class Manage the adding of element text.
~AlignmentTextsGroupCommand() override
AlignmentTextsGroupCommand::~AlignmentTextsGroupCommand Destructor.
QPointer< DynamicElementTextItem > m_text
~RemoveTextFromGroupCommand() override
RemoveTextFromGroupCommand::~RemoveTextFromGroupCommand Destructor.
void undo() override
AlignmentTextsGroupCommand::undo.