Continue revamp of elementprovider

This commit is contained in:
joshua
2022-06-13 20:46:22 +02:00
parent c83d4e5aea
commit 3e6e38e566
5 changed files with 19 additions and 45 deletions

View File

@@ -53,9 +53,9 @@ ElementProvider::ElementProvider(Diagram *diag) {
the filter for search element the filter for search element
@return @return
*/ */
QList <Element *> ElementProvider::freeElement(ElementData::Types filter) const QVector <QPointer<Element>> ElementProvider::freeElement(ElementData::Types filter) const
{ {
QList<Element *> free_elmt; QVector<QPointer<Element>> free_elmt;
QList<Element *> elmt_list; QList<Element *> elmt_list;
//serch in all diagram //serch in all diagram
@@ -97,31 +97,6 @@ QList <Element *> ElementProvider::fromUuids(QList<QUuid> uuid_list) const
return found_element; return found_element;
} }
/**
@brief ElementProvider::find
Search and return the asked element corresponding with the given filter
@param filter
the filter for search element
(You can find all filter with the define in Element.h)
@obsolete use instead QVector<_Tp1> ElementProvider::find(ElementData::Type elmt_type) const
*/
QList <Element *> ElementProvider::find(const int filter) const
{
QList <Element *> elmt_;
//serch in all diagram
foreach (Diagram *d, m_diagram_list) {
//get all element in diagram d
QList <Element *> elmt_list;
elmt_list = d->elements();
foreach (Element *elmt, elmt_list) {
if (filter & elmt->linkType())
elmt_ << elmt;
}
}
return (elmt_);
}
/** /**
* @brief ElementProvider::find * @brief ElementProvider::find
* Search and return the element with the type given in parameter * Search and return the element with the type given in parameter

View File

@@ -41,9 +41,8 @@ class ElementProvider
public: public:
ElementProvider(QETProject *prj, Diagram *diagram=nullptr); ElementProvider(QETProject *prj, Diagram *diagram=nullptr);
ElementProvider(Diagram *diag); ElementProvider(Diagram *diag);
QList <Element *> freeElement(ElementData::Types filter) const; QVector <QPointer<Element>> freeElement(ElementData::Types filter) const;
QList <Element *> fromUuids(QList <QUuid>) const; QList <Element *> fromUuids(QList <QUuid>) const;
QList <Element *> find(const int filter) const;
QVector<QPointer<Element> > find(ElementData::Types elmt_type) const; QVector<QPointer<Element> > find(ElementData::Types elmt_type) const;
QVector <QetGraphicsTableItem *> table(QetGraphicsTableItem *table = nullptr, QAbstractItemModel *model = nullptr); QVector <QetGraphicsTableItem *> table(QetGraphicsTableItem *table = nullptr, QAbstractItemModel *model = nullptr);
QetGraphicsTableItem *tableFromUuid(const QUuid &uuid); QetGraphicsTableItem *tableFromUuid(const QUuid &uuid);

View File

@@ -235,11 +235,12 @@ void LinkSingleElementWidget::buildTree()
setUpHeaderLabels(); setUpHeaderLabels();
QSettings settings; QSettings settings;
const QList <Element *> elmt_list = availableElements(); const auto elmt_vector{availableElements()};
if (m_element->linkType() == Element::Slave)
if (m_element->elementData().m_type == ElementData::Slave)
{ {
for(Element *elmt : elmt_list) for(const auto &elmt : elmt_vector)
{ {
QStringList search_list; QStringList search_list;
QStringList str_list; QStringList str_list;
@@ -285,9 +286,9 @@ void LinkSingleElementWidget::buildTree()
ui->m_tree_widget->header()->restoreState(v.toByteArray()); ui->m_tree_widget->header()->restoreState(v.toByteArray());
} }
else if (m_element->linkType() & Element::AllReport) else if (m_element->elementData().m_type & ElementData::AllReport)
{ {
for(Element *elmt : elmt_list) for(const auto &elmt : elmt_vector)
{ {
QStringList search_list; QStringList search_list;
QStringList str_list; QStringList str_list;
@@ -369,25 +370,25 @@ bool LinkSingleElementWidget::setLiveEdit(bool live_edit)
to be linked with the edited element. to be linked with the edited element.
This methode take care of the combo box "find in diagram" This methode take care of the combo box "find in diagram"
*/ */
QList <Element *> LinkSingleElementWidget::availableElements() QVector <QPointer<Element>> LinkSingleElementWidget::availableElements()
{ {
QList <Element *> elmt_list; QVector <QPointer<Element>> elmt_vector;
//if element isn't free and unlink isn't pressed, return an empty list //if element isn't free and unlink isn't pressed, return an empty list
if (!m_element->isFree() && !m_unlink) if (!m_element->isFree() && !m_unlink)
return elmt_list; return elmt_vector;
if (!m_element->diagram() || !m_element->diagram()->project()) return elmt_list; if (!m_element->diagram() || !m_element->diagram()->project()) return elmt_vector;
ElementProvider ep(m_element->diagram()->project()); ElementProvider ep(m_element->diagram()->project());
if (m_filter & ElementData::AllReport) if (m_filter & ElementData::AllReport)
elmt_list = ep.freeElement(m_filter); elmt_vector = ep.freeElement(m_filter);
else else
elmt_list = ep.find(m_filter); elmt_vector = ep.find(m_filter);
//If element is linked, remove is parent from the list //If element is linked, remove is parent from the list
if(!m_element->isFree()) elmt_list.removeAll(m_element->linkedElements().first()); if(!m_element->isFree()) elmt_vector.removeAll(m_element->linkedElements().first());
return elmt_list; return elmt_vector;
} }
/** /**

View File

@@ -65,7 +65,7 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget
bool setLiveEdit(bool live_edit) override; bool setLiveEdit(bool live_edit) override;
private : private :
QList <Element *> availableElements(); QVector <QPointer<Element>> availableElements();
void setUpCompleter(); void setUpCompleter();
void clearTreeWidget(); void clearTreeWidget();
void setUpHeaderLabels(); void setUpHeaderLabels();

View File

@@ -258,8 +258,7 @@ void MasterPropertiesWidget::updateUi()
//Build the list of free available element //Build the list of free available element
QList <QTreeWidgetItem *> items_list; QList <QTreeWidgetItem *> items_list;
const QList<Element *> free_list = elmt_prov.freeElement(ElementData::Slave); for(const auto &elmt : elmt_prov.freeElement(ElementData::Slave))
for(Element *elmt : free_list)
{ {
QTreeWidgetItem *qtwi = new QTreeWidgetItem(ui->m_free_tree_widget); QTreeWidgetItem *qtwi = new QTreeWidgetItem(ui->m_free_tree_widget);
qtwi->setIcon(0, elmt->pixmap()); qtwi->setIcon(0, elmt->pixmap());