diff --git a/sources/elementprovider.cpp b/sources/elementprovider.cpp index e456b0beb..d4e3762a8 100644 --- a/sources/elementprovider.cpp +++ b/sources/elementprovider.cpp @@ -51,25 +51,32 @@ ElementProvider::ElementProvider(Diagram *diag) { ie element aren't connected with another element @param filter the filter for search element - (You can find all filter with the define in Element.h) @return */ -QList ElementProvider::freeElement(const int filter) const{ - QList free_elmt; +QList ElementProvider::freeElement(ElementData::Types filter) const +{ + QList free_elmt; + QList elmt_list; - //serch in all diagram - foreach (Diagram *d, m_diagram_list) { - //get all element in diagram d - QList elmt_list; - elmt_list = d->elements(); - foreach (Element *elmt, elmt_list) { - if (filter & elmt->linkType()) - if (elmt->isFree()) free_elmt << elmt; + //serch in all diagram + for (const auto &diagram_ : qAsConst(m_diagram_list)) + { + //get all element in diagram d + elmt_list = diagram_->elements(); + for (const auto &elmt_ : qAsConst(elmt_list)) + { + if (filter & elmt_->elementData().m_type && + elmt_->isFree()) + { + free_elmt << elmt_; + } } + //Clear for next loop + elmt_list.clear(); } - return (free_elmt); -} + return free_elmt; +} /** @brief ElementProvider::fromUuids @param uuid_list list of uuid must be found diff --git a/sources/elementprovider.h b/sources/elementprovider.h index 7dbcdad88..fc65d2348 100644 --- a/sources/elementprovider.h +++ b/sources/elementprovider.h @@ -41,7 +41,7 @@ class ElementProvider public: ElementProvider(QETProject *prj, Diagram *diagram=nullptr); ElementProvider(Diagram *diag); - QList freeElement(const int filter) const; + QList freeElement(ElementData::Types filter) const; QList fromUuids(QList ) const; QList find(const int filter) const; QVector > find(ElementData::Types elmt_type) const; diff --git a/sources/ui/linksingleelementwidget.cpp b/sources/ui/linksingleelementwidget.cpp index 12751de3c..9d8f765a1 100644 --- a/sources/ui/linksingleelementwidget.cpp +++ b/sources/ui/linksingleelementwidget.cpp @@ -17,13 +17,15 @@ */ #include "linksingleelementwidget.h" +#include "../qetgraphicsitem/conductor.h" #include "../diagram.h" #include "../diagramposition.h" +#include "../qetgraphicsitem/element.h" #include "../elementprovider.h" -#include "../qetgraphicsitem/conductor.h" -#include "../ui_linksingleelementwidget.h" #include "../undocommand/linkelementcommand.h" +#include "../ui_linksingleelementwidget.h" + #include /** @@ -138,14 +140,15 @@ void LinkSingleElementWidget::setElement(Element *element) //Setup the new element, connection and ui m_element = element; - if (m_element->linkType() & Element::Slave) - m_filter = Element::Master; - else if (m_element->linkType() & Element::AllReport) - m_filter = m_element->linkType() == Element::NextReport - ? Element::PreviousReport - : Element::NextReport; + const auto elmt_type{m_element->elementData().m_type}; + if (elmt_type == ElementData::Slave) + m_filter = ElementData::Master; + else if (elmt_type & ElementData::AllReport) + m_filter = elmt_type == ElementData::NextReport + ? ElementData::PreviousReport + : ElementData::NextReport; else - m_filter = Element::Simple; + m_filter = ElementData::Simple; connect(m_element->diagram()->project(), &QETProject::diagramRemoved, this, &LinkSingleElementWidget::diagramWasRemovedFromProject); @@ -376,7 +379,7 @@ QList LinkSingleElementWidget::availableElements() if (!m_element->diagram() || !m_element->diagram()->project()) return elmt_list; ElementProvider ep(m_element->diagram()->project()); - if (m_filter & Element::AllReport) + if (m_filter & ElementData::AllReport) elmt_list = ep.freeElement(m_filter); else elmt_list = ep.find(m_filter); diff --git a/sources/ui/linksingleelementwidget.h b/sources/ui/linksingleelementwidget.h index 8cd01fc5b..3e388e434 100644 --- a/sources/ui/linksingleelementwidget.h +++ b/sources/ui/linksingleelementwidget.h @@ -18,12 +18,14 @@ #ifndef LINKSINGLEELEMENTWIDGET_H #define LINKSINGLEELEMENTWIDGET_H -#include "../qetgraphicsitem/element.h" +#include "../properties/elementdata.h" #include "abstractelementpropertieseditorwidget.h" #include class QTreeWidgetItem; +class Element; +class QMenu; namespace Ui { class LinkSingleElementWidget; @@ -88,7 +90,7 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget Ui::LinkSingleElementWidget *ui; bool m_unlink = false; - Element::kind m_filter; + ElementData::Type m_filter; QHash m_qtwi_elmt_hash; QHash m_qtwi_strl_hash; @@ -99,11 +101,11 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget Element *m_showed_element = nullptr, *m_element_to_link = nullptr; - QMenu *m_context_menu; - QAction *m_link_action, - *m_show_qtwi, - *m_show_element, - *m_save_header_state; + QMenu *m_context_menu{nullptr}; + QAction *m_link_action{nullptr}, + *m_show_qtwi{nullptr}, + *m_show_element{nullptr}, + *m_save_header_state{nullptr}; }; #endif // LINKSINGLEELEMENTWIDGET_H diff --git a/sources/ui/masterpropertieswidget.cpp b/sources/ui/masterpropertieswidget.cpp index 1b5a54f85..e25445b98 100644 --- a/sources/ui/masterpropertieswidget.cpp +++ b/sources/ui/masterpropertieswidget.cpp @@ -258,7 +258,7 @@ void MasterPropertiesWidget::updateUi() //Build the list of free available element QList items_list; - const QList free_list = elmt_prov.freeElement(Element::Slave); + const QList free_list = elmt_prov.freeElement(ElementData::Slave); for(Element *elmt : free_list) { QTreeWidgetItem *qtwi = new QTreeWidgetItem(ui->m_free_tree_widget);