QElectroTech  0.70
Public Types | Signals | Public Member Functions | Protected Slots | Protected Member Functions | Private Slots | Private Attributes | List of all members
GenericPanel Class Reference

#include <genericpanel.h>

Public Types

enum  PanelOption {
  AddChildDiagrams = 1, AddChildTemplatesCollection = 2, AddChildTemplates = 4, AddAllChildTemplates = 6,
  AddAllChild = 63, All = 127
}
 
enum  MetaData { Item = Qt::UserRole + 1, AliasItem, Parent, PanelFlags }
 

Signals

bool firstActivated ()
 
void panelContentChanged ()
 

Public Member Functions

 GenericPanel (QWidget *=nullptr)
 
 ~GenericPanel () override
 
virtual int currentItemType ()
 
virtual QETProjectprojectForItem (QTreeWidgetItem *) const
 
virtual DiagramdiagramForItem (QTreeWidgetItem *) const
 
virtual TitleBlockTemplateLocation templateLocationForItem (QTreeWidgetItem *) const
 
virtual QETProjectselectedProject () const
 
virtual DiagramselectedDiagram () const
 
virtual TitleBlockTemplateLocation selectedTemplateLocation () const
 
virtual QTreeWidgetItem * addProject (QETProject *, QTreeWidgetItem *=nullptr, PanelOptions=AddAllChild)
 
virtual QTreeWidgetItem * itemForProject (QETProject *)
 
virtual QTreeWidgetItem * addDiagram (Diagram *, QTreeWidgetItem *=nullptr, PanelOptions=AddAllChild)
 
virtual QTreeWidgetItem * addTemplatesCollection (TitleBlockTemplatesCollection *, QTreeWidgetItem *=nullptr, PanelOptions=AddAllChild)
 
virtual QTreeWidgetItem * itemForTemplatesCollection (TitleBlockTemplatesCollection *)
 
virtual QTreeWidgetItem * addTemplate (const TitleBlockTemplateLocation &, QTreeWidgetItem *=nullptr, PanelOptions=AddAllChild)
 

Protected Slots

virtual void projectInformationsChanged (QETProject *)
 
virtual void diagramAdded (QETProject *, Diagram *)
 
virtual void diagramRemoved (QETProject *, Diagram *)
 
virtual void projectDiagramsOrderChanged (QETProject *, int, int)
 GenericPanel::projectDiagramsOrderChanged. More...
 
virtual void diagramTitleChanged (Diagram *, const QString &)
 
virtual void templatesCollectionChanged (TitleBlockTemplatesCollection *, const QString &)
 
virtual void diagramUsedTemplate (TitleBlockTemplatesCollection *, const QString &)
 

Protected Member Functions

virtual QTreeWidgetItem * getItemForProject (QETProject *, bool *=nullptr)
 
virtual QTreeWidgetItem * updateProjectItem (QTreeWidgetItem *, QETProject *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * fillProjectItem (QTreeWidgetItem *, QETProject *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * getItemForDiagram (Diagram *, bool *=nullptr)
 
virtual QTreeWidgetItem * updateDiagramItem (QTreeWidgetItem *, Diagram *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * fillDiagramItem (QTreeWidgetItem *, Diagram *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * getItemForTemplatesCollection (TitleBlockTemplatesCollection *, bool *=nullptr)
 
virtual QTreeWidgetItem * updateTemplatesCollectionItem (QTreeWidgetItem *, TitleBlockTemplatesCollection *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * fillTemplatesCollectionItem (QTreeWidgetItem *, TitleBlockTemplatesCollection *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * getItemForTemplate (const TitleBlockTemplateLocation &, bool *=nullptr)
 
virtual QTreeWidgetItem * updateTemplateItem (QTreeWidgetItem *, const TitleBlockTemplateLocation &, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * fillTemplateItem (QTreeWidgetItem *, const TitleBlockTemplateLocation &, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * updateItem (QTreeWidgetItem *, PanelOptions=AddAllChild, bool=false)
 
virtual QTreeWidgetItem * fillItem (QTreeWidgetItem *, PanelOptions=AddAllChild, bool=false)
 
virtual QString defaultText (QET::ItemType)
 
virtual QIcon defaultIcon (QET::ItemType)
 
virtual QTreeWidgetItem * makeItem (QET::ItemType, QTreeWidgetItem *=nullptr, const QString &=QString(), const QIcon &=QIcon())
 
virtual void deleteItem (QTreeWidgetItem *, bool=false)
 
virtual void markItemAsUnused (QTreeWidgetItem *)
 
virtual void reparent (QTreeWidgetItem *, QTreeWidgetItem *)
 
QList< QTreeWidgetItem * > childItems (QTreeWidgetItem *, QET::ItemType, bool=false) const
 
template<typename T >
void removeObsoleteItems (const QList< T > &, QTreeWidgetItem *, QET::ItemType, bool)
 
template<typename T >
valueForItem (QTreeWidgetItem *) const
 
void unregisterItem (QTreeWidgetItem *)
 
bool event (QEvent *) override
 

Private Slots

void emitFirstActivated ()
 

Private Attributes

bool first_activation_
 boolean used to track the first time this widget is activated/shown More...
 
QHash< QETProject *, QTreeWidgetItem * > projects_
 Allow quick retrieval of the item representing a given project. More...
 
QHash< Diagram *, QTreeWidgetItem * > diagrams_
 Allow quick retrieval of the item representing a given diagram. More...
 
QHash< TitleBlockTemplateLocation, QTreeWidgetItem * > tb_templates_
 Allow quick retrieval of the item representing a title block template. More...
 

Detailed Description

The generic panel is a QTreeWidget subclass providing extra methods allowing developers to easily add objects (projects, diagrams, title block templates, elements, ...) to it; it also ensures the displayed information remains up to date.

Definition at line 35 of file genericpanel.h.

Member Enumeration Documentation

◆ MetaData

Enumerator
Item 
AliasItem 
Parent 
PanelFlags 

Definition at line 49 of file genericpanel.h.

◆ PanelOption

Enumerator
AddChildDiagrams 
AddChildTemplatesCollection 
AddChildTemplates 
AddAllChildTemplates 
AddAllChild 
All 

Definition at line 39 of file genericpanel.h.

Constructor & Destructor Documentation

◆ GenericPanel()

GenericPanel::GenericPanel ( QWidget *  parent = nullptr)

Constructor

Parameters
parentParent QWidget

Definition at line 31 of file genericpanel.cpp.

References header.

◆ ~GenericPanel()

GenericPanel::~GenericPanel ( )
override

Destructor

Definition at line 42 of file genericpanel.cpp.

Member Function Documentation

◆ addDiagram()

QTreeWidgetItem * GenericPanel::addDiagram ( Diagram diagram,
QTreeWidgetItem *  parent_item = nullptr,
PanelOptions  options = AddAllChild 
)
virtual

◆ addProject()

QTreeWidgetItem * GenericPanel::addProject ( QETProject project,
QTreeWidgetItem *  parent_item = nullptr,
PanelOptions  options = AddAllChild 
)
virtual

◆ addTemplate()

QTreeWidgetItem * GenericPanel::addTemplate ( const TitleBlockTemplateLocation tb_template,
QTreeWidgetItem *  parent_item = nullptr,
PanelOptions  options = AddAllChild 
)
virtual

◆ addTemplatesCollection()

QTreeWidgetItem * GenericPanel::addTemplatesCollection ( TitleBlockTemplatesCollection tbt_collection,
QTreeWidgetItem *  parent_item = nullptr,
PanelOptions  options = AddAllChild 
)
virtual

◆ childItems()

QList< QTreeWidgetItem * > GenericPanel::childItems ( QTreeWidgetItem *  item,
QET::ItemType  type,
bool  recursive = false 
) const
protected
Returns
the child items of item of type type
Parameters
itemParent item that will be searched.
typeType of items to look for.
recursiveWhether to search recursively.

Definition at line 719 of file genericpanel.cpp.

Referenced by removeObsoleteItems().

◆ currentItemType()

int GenericPanel::currentItemType ( )
virtual
Returns
the type of the current item

Definition at line 48 of file genericpanel.cpp.

◆ defaultIcon()

QIcon GenericPanel::defaultIcon ( QET::ItemType  type)
protectedvirtual
Parameters
typeItem type we want the default icon for
Returns
the default icon for type

Definition at line 646 of file genericpanel.cpp.

References QET::Icons::Diagram, QET::Diagram, QET::ElementsContainer, QET::Icons::Folder, QET::Project, QET::Icons::ProjectFileGP, QET::Icons::TitleBlock, and QET::TitleBlockTemplatesCollectionItem.

Referenced by makeItem().

◆ defaultText()

QString GenericPanel::defaultText ( QET::ItemType  type)
protectedvirtual

◆ deleteItem()

void GenericPanel::deleteItem ( QTreeWidgetItem *  item,
bool  deleted_on_cascade = false 
)
protectedvirtual

Delete and item and its children.

Parameters
itemitem to delete
deleted_on_cascadetrue if the item is not being directly deleted but is undergoing the deletion of its parent.

Definition at line 680 of file genericpanel.cpp.

References unregisterItem().

Referenced by ElementsPanel::projectWasClosed(), and removeObsoleteItems().

◆ diagramAdded

void GenericPanel::diagramAdded ( QETProject project,
Diagram diagram 
)
protectedvirtualslot

Definition at line 540 of file genericpanel.cpp.

References AddChildDiagrams, addProject(), and panelContentChanged().

Referenced by fillProjectItem().

◆ diagramForItem()

Diagram * GenericPanel::diagramForItem ( QTreeWidgetItem *  item) const
virtual

Definition at line 65 of file genericpanel.cpp.

References QET::Diagram.

Referenced by selectedDiagram().

◆ diagramRemoved

void GenericPanel::diagramRemoved ( QETProject project,
Diagram diagram 
)
protectedvirtualslot

Definition at line 549 of file genericpanel.cpp.

References AddChildDiagrams, addProject(), and panelContentChanged().

Referenced by fillProjectItem().

◆ diagramTitleChanged

void GenericPanel::diagramTitleChanged ( Diagram diagram,
const QString &  title 
)
protectedvirtualslot

Inform this panel the diagram diagram has changed its title to title.

Definition at line 596 of file genericpanel.cpp.

References addDiagram(), and panelContentChanged().

Referenced by updateDiagramItem().

◆ diagramUsedTemplate

void GenericPanel::diagramUsedTemplate ( TitleBlockTemplatesCollection collection,
const QString &  name 
)
protectedvirtualslot

◆ emitFirstActivated

void GenericPanel::emitFirstActivated ( )
privateslot

Emit the signal firstActivated().

Definition at line 803 of file genericpanel.cpp.

References firstActivated().

Referenced by event().

◆ event()

bool GenericPanel::event ( QEvent *  event)
overrideprotected

Handle various events; reimplemented here to emit the signal firstActivated().

Definition at line 790 of file genericpanel.cpp.

References emitFirstActivated(), and first_activation_.

◆ fillDiagramItem()

QTreeWidgetItem * GenericPanel::fillDiagramItem ( QTreeWidgetItem *  diagram_qtwi,
Diagram diagram,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

Definition at line 334 of file genericpanel.cpp.

References fillItem().

Referenced by addDiagram().

◆ fillItem()

QTreeWidgetItem * GenericPanel::fillItem ( QTreeWidgetItem *  qtwi,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

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.

Definition at line 522 of file genericpanel.cpp.

Referenced by fillDiagramItem(), fillProjectItem(), fillTemplateItem(), and fillTemplatesCollectionItem().

◆ fillProjectItem()

QTreeWidgetItem * GenericPanel::fillProjectItem ( QTreeWidgetItem *  project_qtwi,
QETProject project,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

◆ fillTemplateItem()

QTreeWidgetItem * GenericPanel::fillTemplateItem ( QTreeWidgetItem *  tb_template_qtwi,
const TitleBlockTemplateLocation tb_template,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

Definition at line 497 of file genericpanel.cpp.

References fillItem().

Referenced by addTemplate().

◆ fillTemplatesCollectionItem()

QTreeWidgetItem * GenericPanel::fillTemplatesCollectionItem ( QTreeWidgetItem *  tbt_collection_qtwi,
TitleBlockTemplatesCollection tbt_collection,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

◆ firstActivated

bool GenericPanel::firstActivated ( )
signal

◆ getItemForDiagram()

QTreeWidgetItem * GenericPanel::getItemForDiagram ( Diagram diagram,
bool *  created = nullptr 
)
protectedvirtual

Definition at line 257 of file genericpanel.cpp.

References QET::Diagram, diagrams_, and makeItem().

Referenced by addDiagram().

◆ getItemForProject()

QTreeWidgetItem * GenericPanel::getItemForProject ( QETProject project,
bool *  created = nullptr 
)
protectedvirtual
Parameters
projectA standard project.
createdif provided with a pointer to a boolean, this method will update it to reflect whether the returned item has been freshly created or not.
Returns
the tree item representing the provided project. If it does not appear within this panel, it is created.

Definition at line 136 of file genericpanel.cpp.

References makeItem(), QET::Project, and projects_.

Referenced by addProject().

◆ getItemForTemplate()

QTreeWidgetItem * GenericPanel::getItemForTemplate ( const TitleBlockTemplateLocation tb_template,
bool *  created = nullptr 
)
protectedvirtual

◆ getItemForTemplatesCollection()

QTreeWidgetItem * GenericPanel::getItemForTemplatesCollection ( TitleBlockTemplatesCollection tbt_collection,
bool *  created = nullptr 
)
protectedvirtual

Definition at line 367 of file genericpanel.cpp.

References makeItem(), tb_templates_, and QET::TitleBlockTemplatesCollection.

Referenced by addTemplatesCollection().

◆ itemForProject()

QTreeWidgetItem * GenericPanel::itemForProject ( QETProject project)
virtual
Parameters
projectA standard project.
Returns
the tree item representing the provided project or 0 if this project does not appear within this panel.

Definition at line 123 of file genericpanel.cpp.

References projects_.

Referenced by projectDiagramsOrderChanged(), and ElementsPanel::projectWasClosed().

◆ itemForTemplatesCollection()

QTreeWidgetItem * GenericPanel::itemForTemplatesCollection ( TitleBlockTemplatesCollection tbt_collection)
virtual

Definition at line 359 of file genericpanel.cpp.

References tb_templates_.

Referenced by ElementsPanel::addProject().

◆ makeItem()

QTreeWidgetItem * GenericPanel::makeItem ( QET::ItemType  type,
QTreeWidgetItem *  parent = nullptr,
const QString &  label = QString(),
const QIcon &  icon = QIcon() 
)
protectedvirtual

Create a QTreeWidgetItem

Parameters
parentParent for the created item
typeItem type (e.g QET::Diagram, QET::Project, ...)
labelLabel for the created item
iconIcon for the created item
Returns
the create QTreeWidgetItem

Definition at line 667 of file genericpanel.cpp.

References defaultIcon(), and defaultText().

Referenced by getItemForDiagram(), getItemForProject(), getItemForTemplate(), and getItemForTemplatesCollection().

◆ markItemAsUnused()

void GenericPanel::markItemAsUnused ( QTreeWidgetItem *  qtwi)
protectedvirtual

Mark the provided QTreeWidgetItem as unused in its parent project.

Parameters
qtwiA QTreeWidgetItem

Definition at line 696 of file genericpanel.cpp.

References QET::Icons::tr.

Referenced by updateTemplateItem().

◆ panelContentChanged

void GenericPanel::panelContentChanged ( )
signal

◆ projectDiagramsOrderChanged

void GenericPanel::projectDiagramsOrderChanged ( QETProject project,
int  from,
int  to 
)
protectedvirtualslot

GenericPanel::projectDiagramsOrderChanged.

Parameters
projectproject where diagram moved
fromIndex of diagram before move
toIndex of diagram after move

Definition at line 561 of file genericpanel.cpp.

References itemForProject(), panelContentChanged(), and updateDiagramItem().

Referenced by fillProjectItem().

◆ projectForItem()

QETProject * GenericPanel::projectForItem ( QTreeWidgetItem *  item) const
virtual

Definition at line 54 of file genericpanel.cpp.

References QET::Project.

Referenced by ElementsPanel::filePathForItem(), and selectedProject().

◆ projectInformationsChanged

void GenericPanel::projectInformationsChanged ( QETProject project)
protectedvirtualslot

Definition at line 532 of file genericpanel.cpp.

References addProject(), and panelContentChanged().

Referenced by updateProjectItem().

◆ removeObsoleteItems()

template<typename T >
void GenericPanel::removeObsoleteItems ( const QList< T > &  expected_items,
QTreeWidgetItem *  item,
QET::ItemType  type,
bool  recursive 
)
protected

This variant of childItems() removes any child considered obsolete, i.e. not found in expected_items.

Parameters
expected_itemsA list of non-obsolete values
itemParent item that will be searched.
typeType of items to look for.
recursiveWhether to search recursively.
See also
GenericPanel::childItems()

Definition at line 745 of file genericpanel.cpp.

References childItems(), and deleteItem().

Referenced by fillProjectItem(), and fillTemplatesCollectionItem().

◆ reparent()

void GenericPanel::reparent ( QTreeWidgetItem *  item,
QTreeWidgetItem *  parent 
)
protectedvirtual

Definition at line 707 of file genericpanel.cpp.

Referenced by addDiagram(), addProject(), addTemplate(), and addTemplatesCollection().

◆ selectedDiagram()

Diagram * GenericPanel::selectedDiagram ( ) const
virtual

Definition at line 92 of file genericpanel.cpp.

References diagramForItem().

◆ selectedProject()

QETProject * GenericPanel::selectedProject ( ) const
virtual

Definition at line 85 of file genericpanel.cpp.

References projectForItem().

◆ selectedTemplateLocation()

TitleBlockTemplateLocation GenericPanel::selectedTemplateLocation ( ) const
virtual

Definition at line 99 of file genericpanel.cpp.

References templateLocationForItem().

Referenced by ElementsPanel::startDrag().

◆ templateLocationForItem()

TitleBlockTemplateLocation GenericPanel::templateLocationForItem ( QTreeWidgetItem *  item) const
virtual

◆ templatesCollectionChanged

void GenericPanel::templatesCollectionChanged ( TitleBlockTemplatesCollection collection,
const QString &  template_name 
)
protectedvirtualslot
Parameters
collectionTitle block templates collection that changed and should be updated
template_nameName of the changed template (unused)

Definition at line 606 of file genericpanel.cpp.

References addTemplatesCollection(), and panelContentChanged().

Referenced by fillTemplatesCollectionItem().

◆ unregisterItem()

void GenericPanel::unregisterItem ( QTreeWidgetItem *  item)
protected

◆ updateDiagramItem()

QTreeWidgetItem * GenericPanel::updateDiagramItem ( QTreeWidgetItem *  diagram_qtwi,
Diagram diagram,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

◆ updateItem()

QTreeWidgetItem * GenericPanel::updateItem ( QTreeWidgetItem *  qtwi,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

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.

Definition at line 509 of file genericpanel.cpp.

Referenced by updateDiagramItem(), updateProjectItem(), updateTemplateItem(), and updateTemplatesCollectionItem().

◆ updateProjectItem()

QTreeWidgetItem * GenericPanel::updateProjectItem ( QTreeWidgetItem *  project_qtwi,
QETProject project,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

Definition at line 153 of file genericpanel.cpp.

References Item, projectInformationsChanged(), projects_, QET::Icons::tr, and updateItem().

Referenced by addProject().

◆ updateTemplateItem()

QTreeWidgetItem * GenericPanel::updateTemplateItem ( QTreeWidgetItem *  tb_template_qtwi,
const TitleBlockTemplateLocation tb_template,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

◆ updateTemplatesCollectionItem()

QTreeWidgetItem * GenericPanel::updateTemplatesCollectionItem ( QTreeWidgetItem *  tbt_collection_qtwi,
TitleBlockTemplatesCollection tbt_collection,
PanelOptions  options = AddAllChild,
bool  freshly_created = false 
)
protectedvirtual

◆ valueForItem()

template<typename T >
template Diagram * GenericPanel::valueForItem ( QTreeWidgetItem *  ) const
protected
Returns
the value stored in item

Definition at line 759 of file genericpanel.cpp.

References Item.

Member Data Documentation

◆ diagrams_

QHash<Diagram *, QTreeWidgetItem *> GenericPanel::diagrams_
private

Allow quick retrieval of the item representing a given diagram.

Definition at line 147 of file genericpanel.h.

Referenced by getItemForDiagram(), unregisterItem(), and updateDiagramItem().

◆ first_activation_

bool GenericPanel::first_activation_
private

boolean used to track the first time this widget is activated/shown

Definition at line 145 of file genericpanel.h.

Referenced by event().

◆ projects_

QHash<QETProject *, QTreeWidgetItem *> GenericPanel::projects_
private

Allow quick retrieval of the item representing a given project.

Definition at line 146 of file genericpanel.h.

Referenced by getItemForProject(), itemForProject(), unregisterItem(), and updateProjectItem().

◆ tb_templates_

QHash<TitleBlockTemplateLocation, QTreeWidgetItem *> GenericPanel::tb_templates_
private

Allow quick retrieval of the item representing a title block template.

Definition at line 148 of file genericpanel.h.

Referenced by getItemForTemplate(), getItemForTemplatesCollection(), itemForTemplatesCollection(), unregisterItem(), updateTemplateItem(), and updateTemplatesCollectionItem().


The documentation for this class was generated from the following files: