mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 13:30:34 +01:00
Improved the GenericPanel class: added generic updateItem() and fillItem() methods and a panelContentChanged() signal.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1495 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -222,7 +222,7 @@ QTreeWidgetItem *GenericPanel::updateProjectItem(QTreeWidgetItem *project_qtwi,
|
||||
);
|
||||
}
|
||||
project_qtwi -> setToolTip(0, final_tooltip);
|
||||
return(project_qtwi);
|
||||
return(updateItem(project_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -279,7 +279,7 @@ QTreeWidgetItem *GenericPanel::fillProjectItem(QTreeWidgetItem *project_qtwi, QE
|
||||
options
|
||||
);
|
||||
}
|
||||
return(project_qtwi);
|
||||
return(fillItem(project_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -361,7 +361,7 @@ QTreeWidgetItem *GenericPanel::updateDiagramItem(QTreeWidgetItem *diagram_qtwi,
|
||||
);
|
||||
}
|
||||
|
||||
return(diagram_qtwi);
|
||||
return(updateItem(diagram_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -371,7 +371,7 @@ QTreeWidgetItem *GenericPanel::fillDiagramItem(QTreeWidgetItem *diagram_qtwi, Di
|
||||
Q_UNUSED(diagram)
|
||||
Q_UNUSED(options)
|
||||
Q_UNUSED(freshly_created)
|
||||
return(diagram_qtwi);
|
||||
return(fillItem(diagram_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -429,7 +429,7 @@ QTreeWidgetItem *GenericPanel::updateTemplatesCollectionItem(QTreeWidgetItem *tb
|
||||
tb_templates_.insert(tbt_collection -> location(), tbt_collection_qtwi);
|
||||
}
|
||||
|
||||
return(tbt_collection_qtwi);
|
||||
return(updateItem(tbt_collection_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -462,7 +462,7 @@ QTreeWidgetItem *GenericPanel::fillTemplatesCollectionItem(QTreeWidgetItem *tbt_
|
||||
}
|
||||
}
|
||||
|
||||
return(tbt_collection_qtwi);
|
||||
return(fillItem(tbt_collection_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -526,7 +526,7 @@ QTreeWidgetItem *GenericPanel::updateTemplateItem(QTreeWidgetItem *tb_template_q
|
||||
tb_template_qtwi -> setData(0, GenericPanel::Item, qVariantFromValue(tb_template));
|
||||
tb_templates_.insert(tb_template, tb_template_qtwi);
|
||||
}
|
||||
return(tb_template_qtwi);
|
||||
return(updateItem(tb_template_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -536,7 +536,7 @@ QTreeWidgetItem *GenericPanel::fillTemplateItem(QTreeWidgetItem *tb_template_qtw
|
||||
Q_UNUSED(tb_template)
|
||||
Q_UNUSED(options)
|
||||
Q_UNUSED(freshly_created)
|
||||
return(tb_template_qtwi);
|
||||
return(fillItem(tb_template_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -606,7 +606,7 @@ QTreeWidgetItem *GenericPanel::updateElementsCollectionItem(QTreeWidgetItem *col
|
||||
);
|
||||
}
|
||||
|
||||
return(collection_qtwi);
|
||||
return(updateItem(collection_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -630,7 +630,7 @@ QTreeWidgetItem *GenericPanel::fillElementsCollectionItem(QTreeWidgetItem *colle
|
||||
if (restore_previous_cache) {
|
||||
setElementsCache(previous_cache);
|
||||
}
|
||||
return(collection_qtwi);
|
||||
return(fillItem(collection_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -698,7 +698,7 @@ QTreeWidgetItem *GenericPanel::updateElementsCategoryItem(QTreeWidgetItem *categ
|
||||
category_qtwi -> setData(0, GenericPanel::Item, qVariantFromValue(category -> location()));
|
||||
elements_.insert(category -> location(), category_qtwi);
|
||||
}
|
||||
return(category_qtwi);
|
||||
return(updateItem(category_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -738,7 +738,7 @@ QTreeWidgetItem *GenericPanel::fillElementsCategoryItem(QTreeWidgetItem *categor
|
||||
}
|
||||
}
|
||||
|
||||
return(category_qtwi);
|
||||
return(fillItem(category_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -787,11 +787,13 @@ QTreeWidgetItem *GenericPanel::getItemForElement(ElementDefinition *element, boo
|
||||
QTreeWidgetItem *GenericPanel::updateElementItem(QTreeWidgetItem *element_qtwi, ElementDefinition *element, PanelOptions options, bool freshly_created) {
|
||||
Q_UNUSED(options)
|
||||
Q_UNUSED(freshly_created)
|
||||
if (!element_qtwi || !element) return(element_qtwi);
|
||||
if (!element_qtwi || !element) {
|
||||
return(updateItem(element_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
ElementsCollectionCache *cache = getElementsCache();
|
||||
if (!cache -> fetchElement(element)) {
|
||||
return(element_qtwi);
|
||||
return(updateItem(element_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
ElementsLocation element_location = element -> location();
|
||||
@@ -814,7 +816,7 @@ QTreeWidgetItem *GenericPanel::updateElementItem(QTreeWidgetItem *element_qtwi,
|
||||
elements_.insert(element_location, element_qtwi);
|
||||
}
|
||||
|
||||
return(element_qtwi);
|
||||
return(updateItem(element_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -825,7 +827,31 @@ QTreeWidgetItem *GenericPanel::fillElementItem (QTreeWidgetItem *element_qtwi, E
|
||||
Q_UNUSED(element)
|
||||
Q_UNUSED(options)
|
||||
Q_UNUSED(freshly_created)
|
||||
return(element_qtwi);
|
||||
return(fillItem(element_qtwi, options, freshly_created));
|
||||
}
|
||||
|
||||
/**
|
||||
This generic method is called at the end of each update*Item method. Its
|
||||
only purpose is being reimplemented in a subclass. The default
|
||||
implementation does nothing.
|
||||
*/
|
||||
QTreeWidgetItem *GenericPanel::updateItem(QTreeWidgetItem *qtwi, PanelOptions options, bool freshly_created) {
|
||||
Q_UNUSED(qtwi);
|
||||
Q_UNUSED(options);
|
||||
Q_UNUSED(freshly_created);
|
||||
return(qtwi);
|
||||
}
|
||||
|
||||
/**
|
||||
This generic method is called at the end of each fill*Item method. Its
|
||||
only purpose is being reimplemented in a subclass. The default
|
||||
implementation does nothing.
|
||||
*/
|
||||
QTreeWidgetItem *GenericPanel::fillItem(QTreeWidgetItem *qtwi, PanelOptions options, bool freshly_created) {
|
||||
Q_UNUSED(qtwi);
|
||||
Q_UNUSED(options);
|
||||
Q_UNUSED(freshly_created);
|
||||
return(qtwi);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -833,6 +859,7 @@ QTreeWidgetItem *GenericPanel::fillElementItem (QTreeWidgetItem *element_qtwi, E
|
||||
*/
|
||||
void GenericPanel::projectInformationsChanged(QETProject *project) {
|
||||
addProject(project, 0, 0);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -841,6 +868,7 @@ void GenericPanel::projectInformationsChanged(QETProject *project) {
|
||||
void GenericPanel::diagramAdded(QETProject *project, Diagram *diagram) {
|
||||
Q_UNUSED(diagram)
|
||||
addProject(project, 0, GenericPanel::AddChildDiagrams);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -849,6 +877,7 @@ void GenericPanel::diagramAdded(QETProject *project, Diagram *diagram) {
|
||||
void GenericPanel::diagramRemoved(QETProject *project, Diagram *diagram) {
|
||||
Q_UNUSED(diagram)
|
||||
addProject(project, 0, GenericPanel::AddChildDiagrams);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -884,6 +913,7 @@ void GenericPanel::projectDiagramsOrderChanged(QETProject *project, int from, in
|
||||
if (was_selected) {
|
||||
setCurrentItem(moved_qtwi_diagram);
|
||||
}
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -892,6 +922,7 @@ void GenericPanel::projectDiagramsOrderChanged(QETProject *project, int from, in
|
||||
void GenericPanel::diagramTitleChanged(Diagram *diagram, const QString &title) {
|
||||
Q_UNUSED(title)
|
||||
GenericPanel::addDiagram(diagram);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -901,6 +932,7 @@ void GenericPanel::diagramTitleChanged(Diagram *diagram, const QString &title) {
|
||||
void GenericPanel::templatesCollectionChanged(TitleBlockTemplatesCollection*collection, const QString &template_name) {
|
||||
Q_UNUSED(template_name)
|
||||
addTemplatesCollection(collection);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -910,6 +942,7 @@ void GenericPanel::diagramUsedTemplate(TitleBlockTemplatesCollection *collection
|
||||
Q_UNUSED(collection)
|
||||
Q_UNUSED(name)
|
||||
addTemplatesCollection(collection);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -917,6 +950,7 @@ void GenericPanel::diagramUsedTemplate(TitleBlockTemplatesCollection *collection
|
||||
*/
|
||||
void GenericPanel::elementsCollectionChanged(ElementsCollection *collection) {
|
||||
addElementsCollection(collection, 0, 0);
|
||||
emit(panelContentChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -972,12 +1006,16 @@ QTreeWidgetItem *GenericPanel::makeItem(QET::ItemType type, QTreeWidgetItem *par
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Delete and item and its children.
|
||||
@param item item to delete
|
||||
@param deleted_on_cascade true if the item is not being directly deleted
|
||||
but is undergoing the deletion of its parent.
|
||||
*/
|
||||
void GenericPanel::deleteItem(QTreeWidgetItem *item) {
|
||||
void GenericPanel::deleteItem(QTreeWidgetItem *item, bool deleted_on_cascade) {
|
||||
Q_UNUSED(deleted_on_cascade)
|
||||
// recursively delete child items first
|
||||
for (int i = 0 ; i < item -> childCount() ; ++ i) {
|
||||
deleteItem(item -> child(i));
|
||||
deleteItem(item -> child(i), true);
|
||||
}
|
||||
|
||||
// delete the item itself
|
||||
@@ -1019,6 +1057,9 @@ void GenericPanel::reparent(QTreeWidgetItem *item, QTreeWidgetItem *parent) {
|
||||
|
||||
/**
|
||||
@return the child items of \a item of type \a type
|
||||
@param item Parent item that will be searched.
|
||||
@param type Type of items to look for.
|
||||
@param recursive Whether to search recursively.
|
||||
*/
|
||||
QList<QTreeWidgetItem *> GenericPanel::childItems(QTreeWidgetItem *item, QET::ItemType type, bool recursive) const {
|
||||
QList<QTreeWidgetItem *> items;
|
||||
@@ -1037,12 +1078,17 @@ QList<QTreeWidgetItem *> GenericPanel::childItems(QTreeWidgetItem *item, QET::It
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
This variant of childItems() removes any child considered obsolete, i.e.
|
||||
not found in \a expected_items.
|
||||
@param expected_items A list of non-obsolete values
|
||||
@param item Parent item that will be searched.
|
||||
@param type Type of items to look for.
|
||||
@param recursive Whether to search recursively.
|
||||
@see GenericPanel::childItems()
|
||||
*/
|
||||
template<typename T>
|
||||
void GenericPanel::removeObsoleteItems(const QList<T> &expected_items, QTreeWidgetItem *item, QET::ItemType type, bool recursive) {
|
||||
// remove items unknown to the project (presumably removed)
|
||||
|
||||
// remove items not found in expected_items
|
||||
foreach (QTreeWidgetItem *child_item, childItems(item, type, recursive)) {
|
||||
T child_value = valueForItem<T>(child_item);
|
||||
if (!expected_items.contains(child_value)) {
|
||||
@@ -1052,7 +1098,7 @@ void GenericPanel::removeObsoleteItems(const QList<T> &expected_items, QTreeWidg
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@return the value stored in \a item
|
||||
*/
|
||||
template<typename T>
|
||||
T GenericPanel::valueForItem(QTreeWidgetItem *item) const {
|
||||
|
||||
@@ -153,23 +153,28 @@ class GenericPanel : public QTreeWidget {
|
||||
virtual QTreeWidgetItem *updateElementItem(QTreeWidgetItem *, ElementDefinition *, PanelOptions = AddAllChild, bool = false);
|
||||
virtual QTreeWidgetItem *fillElementItem (QTreeWidgetItem *, ElementDefinition *, PanelOptions = AddAllChild, bool = false);
|
||||
|
||||
// generic methods
|
||||
protected:
|
||||
virtual QTreeWidgetItem *updateItem(QTreeWidgetItem *, PanelOptions = AddAllChild, bool = false);
|
||||
virtual QTreeWidgetItem *fillItem (QTreeWidgetItem *, PanelOptions = AddAllChild, bool = false);
|
||||
|
||||
// slots used to receive change notifications from added objects
|
||||
protected slots:
|
||||
void projectInformationsChanged(QETProject *);
|
||||
void diagramAdded(QETProject *, Diagram *);
|
||||
void diagramRemoved(QETProject *, Diagram *);
|
||||
void projectDiagramsOrderChanged(QETProject *, int, int);
|
||||
void diagramTitleChanged(Diagram *, const QString &);
|
||||
void templatesCollectionChanged(TitleBlockTemplatesCollection*, const QString &);
|
||||
void diagramUsedTemplate(TitleBlockTemplatesCollection *, const QString &);
|
||||
void elementsCollectionChanged(ElementsCollection *);
|
||||
virtual void projectInformationsChanged(QETProject *);
|
||||
virtual void diagramAdded(QETProject *, Diagram *);
|
||||
virtual void diagramRemoved(QETProject *, Diagram *);
|
||||
virtual void projectDiagramsOrderChanged(QETProject *, int, int);
|
||||
virtual void diagramTitleChanged(Diagram *, const QString &);
|
||||
virtual void templatesCollectionChanged(TitleBlockTemplatesCollection*, const QString &);
|
||||
virtual void diagramUsedTemplate(TitleBlockTemplatesCollection *, const QString &);
|
||||
virtual void elementsCollectionChanged(ElementsCollection *);
|
||||
|
||||
// various other methods
|
||||
protected:
|
||||
virtual QString defaultText(QET::ItemType);
|
||||
virtual QIcon defaultIcon(QET::ItemType);
|
||||
virtual QTreeWidgetItem *makeItem(QET::ItemType, QTreeWidgetItem * = 0, const QString & = QString(), const QIcon & = QIcon());
|
||||
virtual void deleteItem(QTreeWidgetItem *);
|
||||
virtual void deleteItem(QTreeWidgetItem *, bool = false);
|
||||
virtual void markItemAsContainer(QTreeWidgetItem *);
|
||||
virtual void markItemAsUnused(QTreeWidgetItem *);
|
||||
virtual void reparent(QTreeWidgetItem *, QTreeWidgetItem *);
|
||||
@@ -183,6 +188,7 @@ class GenericPanel : public QTreeWidget {
|
||||
|
||||
signals:
|
||||
bool firstActivated();
|
||||
void panelContentChanged();
|
||||
|
||||
private slots:
|
||||
void emitFirstActivated();
|
||||
|
||||
Reference in New Issue
Block a user