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
@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;
//serch in all diagram
@@ -97,31 +97,6 @@ QList <Element *> ElementProvider::fromUuids(QList<QUuid> uuid_list) const
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
* Search and return the element with the type given in parameter

View File

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

View File

@@ -235,11 +235,12 @@ void LinkSingleElementWidget::buildTree()
setUpHeaderLabels();
QSettings settings;
const QList <Element *> elmt_list = availableElements();
if (m_element->linkType() == Element::Slave)
const auto elmt_vector{availableElements()};
if (m_element->elementData().m_type == ElementData::Slave)
{
for(Element *elmt : elmt_list)
for(const auto &elmt : elmt_vector)
{
QStringList search_list;
QStringList str_list;
@@ -285,9 +286,9 @@ void LinkSingleElementWidget::buildTree()
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 str_list;
@@ -369,25 +370,25 @@ bool LinkSingleElementWidget::setLiveEdit(bool live_edit)
to be linked with the edited element.
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 (!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());
if (m_filter & ElementData::AllReport)
elmt_list = ep.freeElement(m_filter);
elmt_vector = ep.freeElement(m_filter);
else
elmt_list = ep.find(m_filter);
elmt_vector = ep.find(m_filter);
//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;
private :
QList <Element *> availableElements();
QVector <QPointer<Element>> availableElements();
void setUpCompleter();
void clearTreeWidget();
void setUpHeaderLabels();

View File

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