mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
Continue revamp of elementprovider
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user