ModelEditor: Introduce factory for properties view class

The factory allows usage of inherited view class for easy properties
extensions.

Change-Id: I73303a9c6f96df48dea508eadb9e829af32cdbe5
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Jochen Becher
2016-02-14 11:02:49 +01:00
parent 9bfd78260e
commit bd319da256
3 changed files with 14 additions and 4 deletions

View File

@@ -43,6 +43,7 @@ PropertiesView::PropertiesView(QObject *parent)
m_diagramController(0),
m_stereotypeController(0),
m_styleController(0),
m_viewFactory([=](PropertiesView *propertiesView) { return new MView(propertiesView); }),
m_selectedDiagram(0),
m_widget(0)
{
@@ -149,6 +150,11 @@ void PropertiesView::setStyleController(StyleController *styleController)
m_styleController = styleController;
}
void PropertiesView::setMViewFactory(std::function<MView *(PropertiesView *)> factory)
{
m_viewFactory = factory;
}
void PropertiesView::setSelectedModelElements(const QList<MElement *> &modelElements)
{
QMT_CHECK(modelElements.size() > 0);
@@ -157,7 +163,7 @@ void PropertiesView::setSelectedModelElements(const QList<MElement *> &modelElem
m_selectedModelElements = modelElements;
m_selectedDiagramElements.clear();
m_selectedDiagram = 0;
m_mview.reset(new MView(this));
m_mview.reset(m_viewFactory(this));
m_mview->update(m_selectedModelElements);
m_widget = m_mview->topLevelWidget();
}
@@ -172,7 +178,7 @@ void PropertiesView::setSelectedDiagramElements(const QList<DElement *> &diagram
m_selectedDiagramElements = diagramElements;
m_selectedDiagram = diagram;
m_selectedModelElements.clear();
m_mview.reset(new MView(this));
m_mview.reset(m_viewFactory(this));
m_mview->update(m_selectedDiagramElements, m_selectedDiagram);
m_widget = m_mview->topLevelWidget();
}