QmlDesigner: adding interface to customize toolbar buttons

WidgetInfo contains now a factory for the toolbar buttons.
The ownership of the factory is taken by the SideBarItem.

Change-Id: Iffa32359cd3f0cb5b378abc5371d810aee31649c
Reviewed-by: Marco Bubke <marco.bubke@digia.com>
This commit is contained in:
Thomas Hartmann
2013-03-21 12:51:39 +01:00
parent c9879b8f78
commit e367a39c71
9 changed files with 72 additions and 18 deletions

View File

@@ -149,25 +149,35 @@ QList<QToolButton *> ItemLibrarySideBarItem::createToolBarWidgets()
return qobject_cast<ItemLibraryWidget*>(widget())->createToolBarWidgets();
}
class NavigatorSideBarItem : public Core::SideBarItem
class DesignerSideBarItem : public Core::SideBarItem
{
public:
explicit NavigatorSideBarItem(QWidget *widget, const QString &id);
virtual ~NavigatorSideBarItem();
explicit DesignerSideBarItem(QWidget *widget, WidgetInfo::ToolBarWidgetFactoryInterface *createToolBarWidgets, const QString &id);
virtual ~DesignerSideBarItem();
virtual QList<QToolButton *> createToolBarWidgets();
private:
WidgetInfo::ToolBarWidgetFactoryInterface *m_toolBarWidgetFactory;
};
NavigatorSideBarItem::NavigatorSideBarItem(QWidget *widget, const QString &id) : Core::SideBarItem(widget, id) {}
NavigatorSideBarItem::~NavigatorSideBarItem()
DesignerSideBarItem::DesignerSideBarItem(QWidget *widget, WidgetInfo::ToolBarWidgetFactoryInterface *toolBarWidgetFactory, const QString &id)
: Core::SideBarItem(widget, id) , m_toolBarWidgetFactory(toolBarWidgetFactory)
{
}
QList<QToolButton *> NavigatorSideBarItem::createToolBarWidgets()
DesignerSideBarItem::~DesignerSideBarItem()
{
return qobject_cast<NavigatorWidget*>(widget())->createToolBarWidgets();
delete m_toolBarWidgetFactory;
}
QList<QToolButton *> DesignerSideBarItem::createToolBarWidgets()
{
if (m_toolBarWidgetFactory)
return m_toolBarWidgetFactory->createToolBarWidgets();
return QList<QToolButton *>();
}
void DocumentWarningWidget::goToError()
@@ -357,13 +367,13 @@ void DesignModeWidget::setup()
foreach (const WidgetInfo &widgetInfo, viewManager().widgetInfos()) {
if (widgetInfo.placementHint == widgetInfo.LeftPane) {
Core::SideBarItem *sideBarItem = new NavigatorSideBarItem(widgetInfo.widget, widgetInfo.uniqueId);
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
sideBarItems.append(sideBarItem);
leftSideBarItems.append(sideBarItem);
}
if (widgetInfo.placementHint == widgetInfo.RightPane) {
Core::SideBarItem *sideBarItem = new NavigatorSideBarItem(widgetInfo.widget, widgetInfo.uniqueId);
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
sideBarItems.append(sideBarItem);
rightSideBarItems.append(sideBarItem);
}