51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef DECLARATIVECONTAINERWIDGETEXTENSION_P_H
+#define DECLARATIVECONTAINERWIDGETEXTENSION_P_H
#include "declarativewidgetextension.h"
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+template <class T>
+class DeclarativeContainerWidgetExtension : public DeclarativeWidgetExtension
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
-
- QMenu *extendedMenu() const;
-
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ explicit DeclarativeContainerWidgetExtension(QObject *parent = 0)
+ : DeclarativeWidgetExtension(new T(parent), parent)
+ {}
};
-#endif
+#endif // DECLARATIVECONTAINERWIDGETEXTENSION_P_H
#include "declarativeformlayout_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QDeclarativeInfo>
#include <QWidget>
return 0;
}
+class FormLayoutContainer : public LayoutContainerInterface
+{
+ public:
+ explicit FormLayoutContainer(QFormLayout *layout)
+ : m_layout(layout)
+ {
+ Q_ASSERT(m_layout);
+ }
+
+ void addLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QFormLayout *m_layout;
+};
+
DeclarativeFormLayoutExtension::DeclarativeFormLayoutExtension(QObject *parent)
- : DeclarativeLayoutExtension(parent)
+ : DeclarativeLayoutExtension(new FormLayoutContainer(qobject_cast<QFormLayout*>(parent)), parent)
{
}
-void DeclarativeFormLayoutExtension::addWidget(QWidget *widget)
+void FormLayoutContainer::addWidget(QWidget *widget)
{
- QFormLayout *formLayout = qobject_cast<QFormLayout*>(extendedLayout());
- Q_ASSERT(formLayout);
-
QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeFormLayout>(widget, false);
DeclarativeFormLayoutAttached *properties = qobject_cast<DeclarativeFormLayoutAttached*>(attachedProperties);
if (properties) {
if (!properties->label().isEmpty()) {
- formLayout->addRow(properties->label(), widget);
+ m_layout->addRow(properties->label(), widget);
return;
}
}
- formLayout->addRow(widget);
+ m_layout->addRow(widget);
}
-void DeclarativeFormLayoutExtension::addLayout(QLayout *layout)
+void FormLayoutContainer::addLayout(QLayout *layout)
{
- QFormLayout *formLayout = qobject_cast<QFormLayout*>(extendedLayout());
- Q_ASSERT(formLayout);
-
QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeFormLayout>(layout, false);
DeclarativeFormLayoutAttached *properties = qobject_cast<DeclarativeFormLayoutAttached*>(attachedProperties);
if (properties) {
if (!properties->label().isEmpty()) {
- formLayout->addRow(properties->label(), layout);
+ m_layout->addRow(properties->label(), layout);
return;
}
}
- formLayout->addRow(layout);
+ m_layout->addRow(layout);
}
public:
explicit DeclarativeFormLayoutExtension(QObject *parent = 0);
-
- protected:
- void addWidget(QWidget *widget);
- void addLayout(QLayout *layout);
};
#endif
#include "declarativegridlayout_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QDeclarativeInfo>
#include <QPointer>
#include <QWidget>
return 0;
}
+class GridLayoutContainer : public LayoutContainerInterface
+{
+ public:
+ explicit GridLayoutContainer(QGridLayout *layout)
+ : m_layout(layout)
+ {
+ Q_ASSERT(m_layout);
+ }
+
+ void addLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QGridLayout *m_layout;
+};
+
DeclarativeGridLayoutExtension::DeclarativeGridLayoutExtension(QObject *parent)
- : DeclarativeLayoutExtension(parent)
+ : DeclarativeLayoutExtension(new GridLayoutContainer(qobject_cast<QGridLayout*>(parent)), parent)
{
}
-void DeclarativeGridLayoutExtension::addWidget(QWidget *widget)
+void GridLayoutContainer::addWidget(QWidget *widget)
{
- QGridLayout *gridLayout = qobject_cast<QGridLayout*>(extendedLayout());
- Q_ASSERT(gridLayout);
-
int row = 0;
int column = 0;
int rowSpan = 1;
columnSpan = properties->columnSpan();
alignment = properties->alignment();
- properties->setParentLayout(gridLayout);
+ properties->setParentLayout(m_layout);
}
- gridLayout->addWidget(widget, row, column, rowSpan, columnSpan, alignment);
+ m_layout->addWidget(widget, row, column, rowSpan, columnSpan, alignment);
}
-void DeclarativeGridLayoutExtension::addLayout(QLayout *layout)
+void GridLayoutContainer::addLayout(QLayout *layout)
{
- QGridLayout *gridLayout = qobject_cast<QGridLayout*>(extendedLayout());
- Q_ASSERT(gridLayout);
-
int row = 0;
int column = 0;
int rowSpan = 1;
columnSpan = properties->columnSpan();
alignment = properties->alignment();
- properties->setParentLayout(gridLayout);
+ properties->setParentLayout(m_layout);
}
- gridLayout->addLayout(layout, row, column, rowSpan, columnSpan, alignment);
+ m_layout->addLayout(layout, row, column, rowSpan, columnSpan, alignment);
}
public:
explicit DeclarativeGridLayoutExtension(QObject *parent = 0);
-
- protected:
- void addWidget(QWidget *widget);
- void addLayout(QLayout *layout);
};
#endif
#include "declarativehboxlayout_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QDeclarativeInfo>
#include <QWidget>
return 0;
}
+class HBoxLayoutContainer : public LayoutContainerInterface
+{
+ public:
+ explicit HBoxLayoutContainer(QHBoxLayout *layout)
+ : m_layout(layout)
+ {
+ Q_ASSERT(m_layout);
+ }
+
+ void addLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QHBoxLayout *m_layout;
+};
+
DeclarativeHBoxLayoutExtension::DeclarativeHBoxLayoutExtension(QObject *parent)
- : DeclarativeLayoutExtension(parent)
+ : DeclarativeLayoutExtension(new HBoxLayoutContainer(qobject_cast<QHBoxLayout*>(parent)), parent)
{
}
-void DeclarativeHBoxLayoutExtension::addWidget(QWidget *widget)
+void HBoxLayoutContainer::addWidget(QWidget *widget)
{
- QHBoxLayout *hboxLayout = qobject_cast<QHBoxLayout*>(extendedLayout());
- Q_ASSERT(hboxLayout);
-
int stretch = 0;
Qt::Alignment alignment = 0;
stretch = properties->stretch();
alignment = properties->alignment();
- properties->setParentLayout(hboxLayout);
+ properties->setParentLayout(m_layout);
}
- hboxLayout->addWidget(widget, stretch, alignment);
+ m_layout->addWidget(widget, stretch, alignment);
}
-void DeclarativeHBoxLayoutExtension::addLayout(QLayout *layout)
+void HBoxLayoutContainer::addLayout(QLayout *layout)
{
- QHBoxLayout *hboxLayout = qobject_cast<QHBoxLayout*>(extendedLayout());
- Q_ASSERT(hboxLayout);
-
int stretch = 0;
Qt::Alignment alignment = 0;
stretch = properties->stretch();
alignment = properties->alignment();
- properties->setParentLayout(hboxLayout);
+ properties->setParentLayout(m_layout);
}
- hboxLayout->addLayout(layout, stretch);
- hboxLayout->setAlignment(layout, alignment);
+ m_layout->addLayout(layout, stretch);
+ m_layout->setAlignment(layout, alignment);
}
public:
explicit DeclarativeHBoxLayoutExtension(QObject *parent = 0);
-
- protected:
- void addWidget(QWidget *widget);
- void addLayout(QLayout *layout);
};
#endif
#include "declarativelayoutextension.h"
+#include "defaultobjectcontainer_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QLayout>
#include <QWidget>
-DeclarativeLayoutExtension::DeclarativeLayoutExtension(QObject *parent)
- : DeclarativeObjectExtension(parent)
+class LayoutContainerDelegate : public DefaultObjectContainer
{
- parent->setParent(0); // otherwise first call to parentWidget() will complain about wrong parent class
-}
+ public:
+ explicit LayoutContainerDelegate(LayoutContainerInterface *layoutContainer)
+ : m_layoutContainer(layoutContainer)
+ {
+ }
+
+ ~LayoutContainerDelegate()
+ {
+ delete m_layoutContainer;
+ }
+
+ void dataAppend(QObject *object)
+ {
+ DefaultObjectContainer::dataAppend(object);
+ QWidget *widget = qobject_cast<QWidget*>(object);
+ if (widget) {
+ m_layoutContainer->addWidget(widget);
+ return;
+ }
+
+ QLayout *layout = qobject_cast<QLayout*>(object);
+ if (layout) {
+ m_layoutContainer->addLayout(layout);
+ return;
+ }
+ }
+
+ private:
+ LayoutContainerInterface *m_layoutContainer;
+};
QLayout *DeclarativeLayoutExtension::extendedLayout() const
{
return parentLayout;
}
-void DeclarativeLayoutExtension::dataAppend(QObject *object)
+DeclarativeLayoutExtension::DeclarativeLayoutExtension(LayoutContainerInterface *layoutContainer, QObject *parent)
+ : DeclarativeObjectExtension(new LayoutContainerDelegate(layoutContainer), parent)
{
- DeclarativeObjectExtension::dataAppend(object);
-
- QWidget *widget = qobject_cast<QWidget*>(object);
- if (widget) {
- addWidget(widget);
- return;
- }
-
- QLayout *layout = qobject_cast<QLayout*>(object);
- if (layout) {
- addLayout(layout);
- return;
- }
+ parent->setParent(0); // otherwise first call to parentWidget() will complain about wrong parent class
}
#include "declarativeobjectextension.h"
+class LayoutContainerInterface;
+
class QLayout;
class QWidget;
Q_CLASSINFO("DefaultProperty", "data")
public:
- DeclarativeLayoutExtension(QObject *parent);
-
QLayout *extendedLayout() const;
protected:
- void dataAppend(QObject *object);
-
- virtual void addLayout(QLayout *layout) = 0;
- virtual void addWidget(QWidget *widget) = 0;
+ explicit DeclarativeLayoutExtension(LayoutContainerInterface *layoutContainer, QObject *parent = 0);
};
#endif // DECLARATIVELAYOUTEXTENSION_H
*/
#include "declarativeobjectextension.h"
+#include "defaultobjectcontainer_p.h"
DeclarativeObjectExtension::DeclarativeObjectExtension(QObject *parent)
: QObject(parent)
+ , m_objectContainer(new DefaultObjectContainer)
{
}
DeclarativeObjectExtension::~DeclarativeObjectExtension()
{
+ delete m_objectContainer;
+}
+
+DeclarativeObjectExtension::DeclarativeObjectExtension(ObjectContainerInterface *objectContainer, QObject *parent)
+ : QObject(parent)
+ , m_objectContainer(objectContainer)
+{
}
QDeclarativeListProperty<QObject> DeclarativeObjectExtension::data()
DeclarativeObjectExtension::data_clear);
}
-void DeclarativeObjectExtension::dataAppend(QObject *object)
-{
- m_children.append(object);
-}
-
-int DeclarativeObjectExtension::dataCount() const
-{
- return m_children.count();
-}
-
-QObject* DeclarativeObjectExtension::dataAt(int index) const
-{
- return m_children.at(index);
-}
-
-void DeclarativeObjectExtension::dataClear()
-{
- m_children.clear();
-}
-
void DeclarativeObjectExtension::data_append(QDeclarativeListProperty<QObject> *property, QObject *object)
{
if (!object)
return;
DeclarativeObjectExtension *that = qobject_cast<DeclarativeObjectExtension*>(property->object);
- if (that)
- that->dataAppend(object);
+ if (that && that->m_objectContainer)
+ that->m_objectContainer->dataAppend(object);
else
qWarning("cast went wrong in data_append");
}
int DeclarativeObjectExtension::data_count(QDeclarativeListProperty<QObject> *property)
{
DeclarativeObjectExtension *that = qobject_cast<DeclarativeObjectExtension*>(property->object);
- if (that)
- return that->dataCount();
+ if (that && that->m_objectContainer)
+ return that->m_objectContainer->dataCount();
else {
qWarning("cast went wrong in data_count");
return 0;
QObject* DeclarativeObjectExtension::data_at(QDeclarativeListProperty<QObject> *property, int index)
{
DeclarativeObjectExtension *that = qobject_cast<DeclarativeObjectExtension*>(property->object);
- if (that)
- return that->dataAt(index);
+ if (that && that->m_objectContainer)
+ return that->m_objectContainer->dataAt(index);
else {
qWarning("cast went wrong in data_at");
return 0;
void DeclarativeObjectExtension::data_clear(QDeclarativeListProperty<QObject> *property)
{
DeclarativeObjectExtension *that = qobject_cast<DeclarativeObjectExtension*>(property->object);
- if (that)
- that->dataClear();
+ if (that && that->m_objectContainer)
+ that->m_objectContainer->dataClear();
else
qWarning("cast went wrong in data_clear");
}
#include <QDeclarativeListProperty>
#include <QObject>
+class ObjectContainerInterface;
+
class DeclarativeObjectExtension : public QObject
{
Q_OBJECT
QObject *extendedObject() const { return parent(); }
protected:
- QObjectList m_children;
+ ObjectContainerInterface *m_objectContainer;
- virtual void dataAppend(QObject *object);
- virtual int dataCount() const;
- virtual QObject *dataAt(int index) const;
- virtual void dataClear();
+ explicit DeclarativeObjectExtension(ObjectContainerInterface *objectContainer, QObject *parent = 0);
QDeclarativeListProperty<QObject> data();
#include "declarativestackedlayout_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QDeclarativeInfo>
#include <QWidget>
setParent(qobject_cast<QWidget*>(parent));
}
+class StackedLayoutContainer : public LayoutContainerInterface
+{
+ public:
+ explicit StackedLayoutContainer(QStackedLayout *layout)
+ : m_layout(layout)
+ {
+ Q_ASSERT(m_layout);
+ }
+
+ void addLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QStackedLayout *m_layout;
+};
+
DeclarativeStackedLayoutExtension::DeclarativeStackedLayoutExtension(QObject *parent)
- : DeclarativeLayoutExtension(parent)
+ : DeclarativeLayoutExtension(new StackedLayoutContainer(qobject_cast<QStackedLayout*>(parent)), parent)
{
}
return stackedLayout->count();
}
-void DeclarativeStackedLayoutExtension::addWidget(QWidget *widget)
+void StackedLayoutContainer::addWidget(QWidget *widget)
{
- extendedLayout()->addWidget(widget);
+ m_layout->addWidget(widget);
}
-void DeclarativeStackedLayoutExtension::addLayout(QLayout*)
+void StackedLayoutContainer::addLayout(QLayout*)
{
- qmlInfo(extendedLayout()) << "StackedLayout does not support child layouts";
+ qmlInfo(m_layout) << "StackedLayout does not support child layouts";
}
explicit DeclarativeStackedLayoutExtension(QObject *parent = 0);
int count() const;
-
- protected:
- void addWidget(QWidget *widget);
- void addLayout(QLayout *layout);
};
#endif
return new DeclarativeStatusBarAttached(object);
}
-DeclarativeStatusBarExtension::DeclarativeStatusBarExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+StatusBarWidgetContainer::StatusBarWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QStatusBar*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QStatusBar *DeclarativeStatusBarExtension::extendedStatusBar() const
-{
- QStatusBar *statusBar = qobject_cast<QStatusBar*>(extendedWidget());
- Q_ASSERT(statusBar);
-
- return statusBar;
-}
-
-void DeclarativeStatusBarExtension::addWidget(QWidget *widget)
+void StatusBarWidgetContainer::addWidget(QWidget *widget)
{
// TODO: error when layout is set
extendedStatusBar()->addPermanentWidget(widget, stretch);
}
-void DeclarativeStatusBarExtension::setLayout(QLayout *layout)
+void StatusBarWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedStatusBar()) << "Can not add Layout to StatusBar";
+ qmlInfo(m_widget) << "Can not add Layout to StatusBar";
+}
+
+QStatusBar *StatusBarWidgetContainer::extendedStatusBar() const
+{
+ return static_cast<QStatusBar*>(m_widget);
}
#ifndef DECLARATIVESTATUSBAR_P_H
#define DECLARATIVESTATUSBAR_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
#include <qdeclarative.h>
#include <QStatusBar>
QML_DECLARE_TYPEINFO(DeclarativeStatusBar, QML_HAS_ATTACHED_PROPERTIES)
-class DeclarativeStatusBarExtension : public DeclarativeWidgetExtension
+class StatusBarWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeStatusBarExtension(QObject *parent = 0);
-
- QStatusBar *extendedStatusBar() const;
+ explicit StatusBarWidgetContainer(QObject *parent = 0);
- protected:
- void addWidget(QWidget *widget);
void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QStatusBar *extendedStatusBar() const;
};
#endif
return new DeclarativeTabWidgetAttached(object);
}
-DeclarativeTabWidgetExtension::DeclarativeTabWidgetExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+TabWidgetWidgetContainer::TabWidgetWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QTabWidget*>(parent))
{
+ Q_ASSERT(m_widget);
}
-void DeclarativeTabWidgetExtension::addWidget(QWidget *widget)
+void TabWidgetWidgetContainer::addWidget(QWidget *widget)
{
- QTabWidget *tabWidget = qobject_cast<QTabWidget*>(extendedWidget());
- Q_ASSERT(tabWidget);
+ QTabWidget *tabWidget = extendedTabWidget();
// TODO: error when layout is set
tabHeader->setAssociation(tabWidget, index);
}
-void DeclarativeTabWidgetExtension::setLayout(QLayout *layout)
+void TabWidgetWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedWidget()) << "Can not add QLayout to QTabWidget";
+ qmlInfo(m_widget) << "Can not add QLayout to QTabWidget";
+}
+
+QTabWidget *TabWidgetWidgetContainer::extendedTabWidget() const
+{
+ return static_cast<QTabWidget*>(m_widget);
}
#ifndef DECLARATIVETABWIDGET_P_H
#define DECLARATIVETABWIDGET_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
#include <qdeclarative.h>
#include <QTabWidget>
QML_DECLARE_TYPEINFO(DeclarativeTabWidget, QML_HAS_ATTACHED_PROPERTIES)
-class DeclarativeTabWidgetExtension : public DeclarativeWidgetExtension
+class TabWidgetWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeTabWidgetExtension(QObject *parent = 0);
-
- protected:
- void addWidget(QWidget *widget);
+ explicit TabWidgetWidgetContainer(QObject *parent = 0);
void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QTabWidget *extendedTabWidget() const;
};
#endif
#include "declarativevboxlayout_p.h"
+#include "layoutcontainerinterface_p.h"
+
#include <QDeclarativeInfo>
#include <QWidget>
return 0;
}
+class VBoxLayoutContainer : public LayoutContainerInterface
+{
+ public:
+ explicit VBoxLayoutContainer(QVBoxLayout *layout)
+ : m_layout(layout)
+ {
+ Q_ASSERT(m_layout);
+ }
+
+ void addLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QVBoxLayout *m_layout;
+};
+
+
DeclarativeVBoxLayoutExtension::DeclarativeVBoxLayoutExtension(QObject *parent)
- : DeclarativeLayoutExtension(parent)
+ : DeclarativeLayoutExtension(new VBoxLayoutContainer(qobject_cast<QVBoxLayout*>(parent)), parent)
{
}
-void DeclarativeVBoxLayoutExtension::addWidget(QWidget *widget)
+void VBoxLayoutContainer::addWidget(QWidget *widget)
{
- QVBoxLayout *vboxLayout = qobject_cast<QVBoxLayout*>(extendedLayout());
- Q_ASSERT(vboxLayout);
-
int stretch = 0;
Qt::Alignment alignment = 0;
stretch = properties->stretch();
alignment = properties->alignment();
- properties->setParentLayout(vboxLayout);
+ properties->setParentLayout(m_layout);
}
- vboxLayout->addWidget(widget, stretch, alignment);
+ m_layout->addWidget(widget, stretch, alignment);
}
-void DeclarativeVBoxLayoutExtension::addLayout(QLayout *layout)
+void VBoxLayoutContainer::addLayout(QLayout *layout)
{
- QVBoxLayout *vboxLayout = qobject_cast<QVBoxLayout*>(extendedLayout());
- Q_ASSERT(vboxLayout);
-
int stretch = 0;
Qt::Alignment alignment = 0;
stretch = properties->stretch();
alignment = properties->alignment();
- properties->setParentLayout(vboxLayout);
+ properties->setParentLayout(m_layout);
}
- vboxLayout->addLayout(layout, stretch);
- vboxLayout->setAlignment(layout, alignment);
+ m_layout->addLayout(layout, stretch);
+ m_layout->setAlignment(layout, alignment);
}
public:
explicit DeclarativeVBoxLayoutExtension(QObject *parent = 0);
-
- protected:
- void addWidget(QWidget *widget);
- void addLayout(QLayout *layout);
};
#endif
#include "declarativewidgetextension.h"
#include "declarativeactionitem_p.h"
+#include "defaultobjectcontainer_p.h"
+#include "defaultwidgetcontainer.h"
#include "objectadaptors_p.h"
+#include "widgetcontainerinterface_p.h"
#include <QAction>
#include <QDeclarativeInfo>
#include <QLayout>
#include <QWidget>
+class WidgetContainerDelegate : public DefaultObjectContainer
+{
+ public:
+ explicit WidgetContainerDelegate(WidgetContainerInterface *widgetContainer)
+ : m_widgetContainer(widgetContainer)
+ {
+ }
+
+ ~WidgetContainerDelegate()
+ {
+ delete m_widgetContainer;
+ }
+
+ void dataAppend(QObject *object)
+ {
+ DefaultObjectContainer::dataAppend(object);
+
+ QWidget *widget = qobject_cast<QWidget*>(object);
+ if (widget) {
+
+ // restore widget flags for dialogs, menus
+ const QVariant originalWindowFlags = widget->property("originalWindowFlags");
+ if (originalWindowFlags.isValid() && originalWindowFlags.canConvert<Qt::WindowFlags>()) {
+ widget->setParent(widget->parentWidget(), originalWindowFlags.value<Qt::WindowFlags>());
+ }
+
+ m_widgetContainer->addWidget(widget);
+ return;
+ }
+
+ QLayout *layout = qobject_cast<QLayout*>(object);
+ if (layout) {
+ m_widgetContainer->setLayout(layout);
+ return;
+ }
+
+ QAction *action = qobject_cast<QAction*>(object);
+ if (action) {
+ m_widgetContainer->addAction(action);
+ return;
+ }
+
+ DeclarativeActionItem *actionItem = qobject_cast<DeclarativeActionItem*>(object);
+ if (actionItem) {
+ m_widgetContainer->addAction(actionItem->action());
+ return;
+ }
+ }
+
+ private:
+ WidgetContainerInterface *m_widgetContainer;
+};
+
DeclarativeWidgetExtension::DeclarativeWidgetExtension(QObject *parent)
- : DeclarativeObjectExtension(parent)
+ : DeclarativeObjectExtension(new WidgetContainerDelegate(new DefaultWidgetContainer(qobject_cast<QWidget*>(parent))), parent)
{
parent->installEventFilter(this);
}
return false;
}
-void DeclarativeWidgetExtension::dataAppend(QObject *object)
-{
- DeclarativeObjectExtension::dataAppend(object);
-
- QWidget *widget = qobject_cast<QWidget*>(object);
- if (widget) {
-
- // restore widget flags for dialogs, menus
- const QVariant originalWindowFlags = widget->property("originalWindowFlags");
- if (originalWindowFlags.isValid() && originalWindowFlags.canConvert<Qt::WindowFlags>()) {
- widget->setParent(widget->parentWidget(), originalWindowFlags.value<Qt::WindowFlags>());
- }
-
- addWidget(widget);
- return;
- }
-
- QLayout *layout = qobject_cast<QLayout*>(object);
- if (layout) {
- setLayout(layout);
- return;
- }
-
- QAction *action = qobject_cast<QAction*>(object);
- if (action) {
- addAction(action);
- return;
- }
-
- DeclarativeActionItem *actionItem = qobject_cast<DeclarativeActionItem*>(object);
- if (actionItem) {
- addAction(actionItem->action());
- return;
- }
-}
-
-void DeclarativeWidgetExtension::addAction(QAction *action)
-{
- extendedWidget()->addAction(action);
-}
-
-void DeclarativeWidgetExtension::setLayout(QLayout *layout)
+DeclarativeWidgetExtension::DeclarativeWidgetExtension(WidgetContainerInterface *widgetContainer, QObject *parent)
+ : DeclarativeObjectExtension(new WidgetContainerDelegate(widgetContainer), parent)
{
- if (extendedWidget()->layout()){
- qmlInfo(this) << "Cannot add a second layout";
- return;
- }
-
- extendedWidget()->setLayout(layout);
-}
-
-void DeclarativeWidgetExtension::addWidget(QWidget *widget)
-{
- widget->setParent(extendedWidget());
+ parent->installEventFilter(this);
}
#include <QRect>
+class WidgetContainerInterface;
+
class QAction;
class QLayout;
class QWidget;
Q_CLASSINFO("DefaultProperty", "data")
public:
- DeclarativeWidgetExtension(QObject *parent);
+ explicit DeclarativeWidgetExtension(QObject *parent = 0);
QWidget *extendedWidget() const;
bool eventFilter(QObject *watched, QEvent *event);
+ protected:
+ explicit DeclarativeWidgetExtension(WidgetContainerInterface *widgetContainer, QObject *parent = 0);
+
Q_SIGNALS:
void posChanged();
void sizeChanged();
void geometryChanged();
-
- protected:
- void dataAppend(QObject *object);
-
- virtual void addAction(QAction *action);
- virtual void setLayout(QLayout *layout);
- virtual void addWidget(QWidget *widget);
};
#endif // DECLARATIVEWIDGETEXTENSION_H
#include "declarativebuttongroupextension_p.h"
#include "declarativecolordialog_p.h"
#include "declarativecomboboxextension_p.h"
+#include "declarativecontainerwidgetextension_p.h"
#include "declarativedeclarativecontext_p.h"
#include "declarativedeclarativeviewextension_p.h"
#include "declarativefiledialog_p.h"
#include "declarativehboxlayout_p.h"
#include "declarativeinputdialog_p.h"
#include "declarativeitemviewextension_p.h"
-#include "declarativemainwindowextension_p.h"
-#include "declarativemenubarextension_p.h"
-#include "declarativemenuextension_p.h"
#include "declarativemessagebox_p.h"
-#include "declarativescrollareaextension_p.h"
#include "declarativeseparator_p.h"
#include "declarativestackedlayout_p.h"
-#include "declarativestackedwidgetextension_p.h"
#include "declarativestatusbar_p.h"
#include "declarativestringlistmodelextension_p.h"
#include "declarativetabwidget_p.h"
#include "declarativetexteditextension_p.h"
-#include "declarativetoolbarextension_p.h"
#include "declarativevboxlayout_p.h"
#include "declarativewidgetextension.h"
+#include "mainwindowwidgetcontainer_p.h"
+#include "menubarwidgetcontainer_p.h"
+#include "menuwidgetcontainer_p.h"
+#include "scrollareawidgetcontainer_p.h"
+#include "stackedwidgetwidgetcontainer_p.h"
+#include "toolbarwidgetcontainer_p.h"
#include <QButtonGroup>
#include <QCalendarWidget>
qmlRegisterExtendedType<QLineEdit, DeclarativeWidgetExtension>("QtGui", 1, 0, "LineEdit");
qmlRegisterExtendedType<QLCDNumber, DeclarativeWidgetExtension>("QtGui", 1, 0, "LCDNumber");
qmlRegisterExtendedType<QListView, DeclarativeItemViewExtension>("QtGui", 1, 0, "ListView");
- qmlRegisterExtendedType<QMainWindow, DeclarativeMainWindowExtension>("QtGui", 1, 0, "MainWindow");
- qmlRegisterExtendedType<Menu, DeclarativeMenuExtension>("QtGui", 1, 0, "Menu");
- qmlRegisterExtendedType<QMenuBar, DeclarativeMenuBarExtension>("QtGui", 1, 0, "MenuBar");
+ qmlRegisterExtendedType<QMainWindow, DeclarativeContainerWidgetExtension<MainWindowWidgetContainer> >("QtGui", 1, 0, "MainWindow");
+ qmlRegisterExtendedType<Menu, DeclarativeContainerWidgetExtension<MenuWidgetContainer> >("QtGui", 1, 0, "Menu");
+ qmlRegisterExtendedType<QMenuBar, DeclarativeContainerWidgetExtension<MenuBarWidgetContainer> >("QtGui", 1, 0, "MenuBar");
qmlRegisterExtendedType<DeclarativeMessageBox, DeclarativeWidgetExtension>("QtGui", 1, 0, "MessageBox");
qmlRegisterExtendedType<QPlainTextEdit, DeclarativeWidgetExtension>("QtGui", 1, 0, "PlainTextEdit");
qmlRegisterExtendedType<QProgressBar, DeclarativeWidgetExtension>("QtGui", 1, 0, "ProgressBar");
qmlRegisterExtendedType<QPushButton, DeclarativeWidgetExtension>("QtGui", 1, 0, "PushButton");
qmlRegisterExtendedType<QRadioButton, DeclarativeWidgetExtension>("QtGui", 1, 0, "RadioButton");
- qmlRegisterExtendedType<QScrollArea, DeclarativeScrollAreaExtension>("QtGui", 1, 0, "ScrollArea");
+ qmlRegisterExtendedType<QScrollArea, DeclarativeContainerWidgetExtension<ScrollAreaWidgetContainer> >("QtGui", 1, 0, "ScrollArea");
qmlRegisterExtendedType<QScrollBar, DeclarativeWidgetExtension>("QtGui", 1, 0, "ScrollBar");
qmlRegisterExtendedType<QSlider, DeclarativeWidgetExtension>("QtGui", 1, 0, "Slider");
- qmlRegisterExtendedType<QStackedWidget, DeclarativeStackedWidgetExtension>("QtGui", 1, 0, "StackedWidget");
+ qmlRegisterExtendedType<QStackedWidget, DeclarativeContainerWidgetExtension<StackedWidgetWidgetContainer> >("QtGui", 1, 0, "StackedWidget");
qmlRegisterExtendedType<QSpinBox, DeclarativeWidgetExtension>("QtGui", 1, 0, "SpinBox");
- qmlRegisterExtendedType<DeclarativeStatusBar, DeclarativeStatusBarExtension>("QtGui", 1, 0, "StatusBar");
+ qmlRegisterExtendedType<DeclarativeStatusBar, DeclarativeContainerWidgetExtension<StatusBarWidgetContainer> >("QtGui", 1, 0, "StatusBar");
qmlRegisterExtendedType<QTableView, DeclarativeItemViewExtension>("QtGui", 1, 0, "TableView");
- qmlRegisterExtendedType<DeclarativeTabWidget, DeclarativeTabWidgetExtension>("QtGui", 1, 0, "TabWidget");
+ qmlRegisterExtendedType<DeclarativeTabWidget, DeclarativeContainerWidgetExtension<TabWidgetWidgetContainer> >("QtGui", 1, 0, "TabWidget");
qmlRegisterExtendedType<QTextBrowser, DeclarativeTextEditExtension>("QtGui", 1, 0, "TextBrowser");
qmlRegisterExtendedType<QTextEdit, DeclarativeTextEditExtension>("QtGui", 1, 0, "TextEdit");
qmlRegisterExtendedType<QTimeEdit, DeclarativeWidgetExtension>("QtGui", 1, 0, "TimeEdit");
- qmlRegisterExtendedType<QToolBar, DeclarativeToolBarExtension>("QtGui", 1, 0, "ToolBar");
+ qmlRegisterExtendedType<QToolBar, DeclarativeContainerWidgetExtension<ToolBarWidgetContainer> >("QtGui", 1, 0, "ToolBar");
qmlRegisterExtendedType<QToolButton, DeclarativeWidgetExtension>("QtGui", 1, 0, "ToolButton");
qmlRegisterExtendedType<QTreeView, DeclarativeItemViewExtension>("QtGui", 1, 0, "TreeView");
qmlRegisterExtendedType<QWebView, DeclarativeWidgetExtension>("QtGui", 1, 0, "WebView");
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#include "defaultobjectcontainer_p.h"
-#include "declarativewidgetextension.h"
-
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+DefaultObjectContainer::DefaultObjectContainer()
{
- Q_OBJECT
+}
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
+DefaultObjectContainer::~DefaultObjectContainer()
+{
+}
- Q_CLASSINFO("DefaultProperty", "data")
+void DefaultObjectContainer::dataAppend(QObject *object)
+{
+ m_children.append(object);
+}
- public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
+int DefaultObjectContainer::dataCount() const
+{
+ return m_children.count();
+}
- QMenu *extendedMenu() const;
+QObject* DefaultObjectContainer::dataAt(int index) const
+{
+ return m_children.at(index);
+}
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
-};
+void DefaultObjectContainer::dataClear()
+{
+ m_children.clear();
+}
-#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef DEFAULTOBJECTCONTAINER_P_H
+#define DEFAULTOBJECTCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "objectcontainerinterface_p.h"
-class QMenu;
+#include <QObject>
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class DefaultObjectContainer : public ObjectContainerInterface
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
+ DefaultObjectContainer();
+ ~DefaultObjectContainer();
- QMenu *extendedMenu() const;
+ void dataAppend(QObject *object);
+ int dataCount() const;
+ QObject *dataAt(int index) const ;
+ void dataClear();
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ private:
+ QObjectList m_children;
};
-#endif
+#endif // DEFAULTOBJECTCONTAINER_P_H
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativestackedwidgetextension_p.h"
+#include "defaultwidgetcontainer.h"
#include <QDeclarativeInfo>
-#include <QStackedWidget>
+#include <QLayout>
+#include <QWidget>
-DeclarativeStackedWidgetExtension::DeclarativeStackedWidgetExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+DefaultWidgetContainer::DefaultWidgetContainer(QWidget *widget)
+ : m_widget(widget)
{
+ Q_ASSERT(m_widget);
}
-QStackedWidget *DeclarativeStackedWidgetExtension::extendedStackedWidget() const
+DefaultWidgetContainer::~DefaultWidgetContainer()
{
- QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(extendedWidget());
- Q_ASSERT(stackedWidget);
+}
- return stackedWidget;
+void DefaultWidgetContainer::addAction(QAction *action)
+{
+ m_widget->addAction(action);
}
-void DeclarativeStackedWidgetExtension::addWidget(QWidget *widget)
+void DefaultWidgetContainer::setLayout(QLayout *layout)
{
- extendedStackedWidget()->addWidget(widget);
+ if (m_widget->layout()) {
+ qmlInfo(m_widget) << "Cannot add a second layout";
+ return;
+ }
+
+ m_widget->setLayout(layout);
}
-void DeclarativeStackedWidgetExtension::setLayout(QLayout*)
+void DefaultWidgetContainer::addWidget(QWidget *widget)
{
- qmlInfo(extendedStackedWidget()) << "StackedWidget does not support child layouts";
+ widget->setParent(m_widget);
}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef DEFAULTWIDGETCONTAINER_H
+#define DEFAULTWIDGETCONTAINER_H
-#include "declarativewidgetextension.h"
+#include "widgetcontainerinterface_p.h"
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class DefaultWidgetContainer : public WidgetContainerInterface
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
+ explicit DefaultWidgetContainer(QWidget *widget);
+ ~DefaultWidgetContainer();
- QMenu *extendedMenu() const;
+ void addAction(QAction *action);
+ void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ QWidget *const m_widget;
};
-#endif
+#endif // DEFAULTWIDGETCONTAINER_H
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef LAYOUTCONTAINERINTERFACE_P_H
+#define LAYOUTCONTAINERINTERFACE_P_H
-#include "declarativewidgetextension.h"
+class QLayout;
+class QWidget;
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class LayoutContainerInterface
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
-
- QMenu *extendedMenu() const;
+ virtual ~LayoutContainerInterface() = 0;
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ virtual void addLayout(QLayout *layout) = 0;
+ virtual void addWidget(QWidget *widget) = 0;
};
-#endif
+#endif // LAYOUTCONTAINERINTERFACE_P_H
declarativebuttongroupextension_p.h \
declarativecolordialog_p.h \
declarativecomboboxextension_p.h \
+ declarativecontainerwidgetextension_p.h \
declarativedeclarativecontext_p.h \
declarativedeclarativeviewextension_p.h \
declarativefiledialog_p.h \
declarativeinputdialog_p.h \
declarativeitemviewextension_p.h \
declarativelayoutextension.h \
- declarativemainwindowextension_p.h \
- declarativemenubarextension_p.h \
- declarativemenuextension_p.h \
declarativemessagebox_p.h \
declarativeobjectextension.h \
declarativeobjectproxy_p.h \
- declarativescrollareaextension_p.h \
declarativeseparator_p.h \
declarativestackedlayout_p.h \
- declarativestackedwidgetextension_p.h \
declarativestatusbar_p.h \
declarativestringlistmodelextension_p.h \
declarativetabwidget_p.h \
declarativetexteditextension_p.h \
- declarativetoolbarextension_p.h \
declarativevboxlayout_p.h \
declarativewidgetextension.h \
declarativewidgetsdocument.h \
+ defaultobjectcontainer_p.h \
+ defaultwidgetcontainer.h \
+ layoutcontainerinterface_p.h \
+ mainwindowwidgetcontainer_p.h \
+ menubarwidgetcontainer_p.h \
+ menuwidgetcontainer_p.h \
objectadaptors_p.h \
+ objectcontainerinterface_p.h \
qmetaobjectbuilder_p.h \
- staticdialogmethodattached_p.h
+ scrollareawidgetcontainer_p.h \
+ stackedwidgetwidgetcontainer_p.h \
+ staticdialogmethodattached_p.h \
+ toolbarwidgetcontainer_p.h \
+ widgetcontainerinterface_p.h
SOURCES = \
abstractdeclarativeobject.cpp \
declarativeinputdialog.cpp \
declarativeitemviewextension.cpp \
declarativelayoutextension.cpp \
- declarativemainwindowextension.cpp \
- declarativemenubarextension.cpp \
- declarativemenuextension.cpp \
declarativemessagebox.cpp \
declarativeobjectextension.cpp \
- declarativescrollareaextension.cpp \
declarativeseparator.cpp \
declarativestackedlayout.cpp \
- declarativestackedwidgetextension.cpp \
declarativestatusbar.cpp \
declarativestringlistmodelextension.cpp \
declarativetabwidget.cpp \
declarativetexteditextension.cpp \
- declarativetoolbarextension.cpp \
declarativevboxlayout.cpp \
declarativewidgetextension.cpp \
declarativewidgetsdocument.cpp \
+ defaultobjectcontainer.cpp \
+ defaultwidgetcontainer.cpp \
+ mainwindowwidgetcontainer.cpp \
+ menubarwidgetcontainer.cpp \
+ menuwidgetcontainer.cpp \
objectadaptors.cpp \
qmetaobjectbuilder.cpp \
- staticdialogmethodattached.cpp
+ scrollareawidgetcontainer.cpp \
+ stackedwidgetwidgetcontainer.cpp \
+ staticdialogmethodattached.cpp \
+ toolbarwidgetcontainer.cpp
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativemainwindowextension_p.h"
+#include "mainwindowwidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QDialog>
#include <QStatusBar>
#include <QToolBar>
-DeclarativeMainWindowExtension::DeclarativeMainWindowExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+MainWindowWidgetContainer::MainWindowWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QMainWindow*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QMainWindow *DeclarativeMainWindowExtension::extendedMainWindow() const
-{
- QMainWindow *mainWindow = qobject_cast<QMainWindow*>(extendedWidget());
- Q_ASSERT(mainWindow);
-
- return mainWindow;
-}
-
-void DeclarativeMainWindowExtension::addWidget(QWidget *widget)
+void MainWindowWidgetContainer::addWidget(QWidget *widget)
{
QMenuBar *menuBar = qobject_cast<QMenuBar*>(widget);
QToolBar *toolBar = qobject_cast<QToolBar*>(widget);
dialog->setParent(extendedMainWindow(), dialog->windowFlags());
} else if (widget) {
if (extendedMainWindow()->centralWidget()) {
- qmlInfo(extendedMainWindow()) << "The MainWindow already contains a central widget";
+ qmlInfo(m_widget) << "The MainWindow already contains a central widget";
return;
}
}
}
-void DeclarativeMainWindowExtension::setLayout(QLayout *layout)
+void MainWindowWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(this) << "Can not set a Layout to a MainWindow";
+ qmlInfo(m_widget) << "Can not set a Layout to a MainWindow";
+}
+
+QMainWindow *MainWindowWidgetContainer::extendedMainWindow() const
+{
+ return static_cast<QMainWindow*>(m_widget);
}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMAINWINDOWEXTENSION_P_H
-#define DECLARATIVEMAINWINDOWEXTENSION_P_H
+#ifndef MAINWINDOWWIDGETCONTAINER_P_H
+#define MAINWINDOWWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
class QMainWindow;
+class QObject;
-class DeclarativeMainWindowExtension : public DeclarativeWidgetExtension
+class MainWindowWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMainWindowExtension(QObject *parent = 0);
-
- QMainWindow *extendedMainWindow() const;
+ explicit MainWindowWidgetContainer(QObject *parent = 0);
- protected:
- void addWidget(QWidget *widget);
void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QMainWindow *extendedMainWindow() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativemenubarextension_p.h"
+#include "menubarwidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QMenuBar>
-DeclarativeMenuBarExtension::DeclarativeMenuBarExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+MenuBarWidgetContainer::MenuBarWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QMenuBar*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QMenuBar *DeclarativeMenuBarExtension::extendedMenuBar() const
-{
- QMenuBar *menuBar = qobject_cast<QMenuBar*>(extendedWidget());
- Q_ASSERT(menuBar);
-
- return menuBar;
-}
-
-void DeclarativeMenuBarExtension::addWidget(QWidget *widget)
+void MenuBarWidgetContainer::addWidget(QWidget *widget)
{
QMenu *menu = qobject_cast<QMenu*>(widget);
if (!menu) {
- qmlInfo(extendedMenuBar()) << "The MenuBar can only contain Menus";
+ qmlInfo(m_widget) << "The MenuBar can only contain Menus";
return;
}
extendedMenuBar()->addMenu(menu);
}
-void DeclarativeMenuBarExtension::setLayout(QLayout *layout)
+void MenuBarWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedMenuBar()) << "Can not set a Layout to a MenuBar";
+ qmlInfo(m_widget) << "Can not set a Layout to a MenuBar";
}
-void DeclarativeMenuBarExtension::addAction(QAction *action)
+void MenuBarWidgetContainer::addAction(QAction *action)
{
extendedMenuBar()->addAction(action);
}
+
+QMenuBar *MenuBarWidgetContainer::extendedMenuBar() const
+{
+ return static_cast<QMenuBar*>(m_widget);
+}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUBAREXTENSION_P_H
-#define DECLARATIVEMENUBAREXTENSION_P_H
+#ifndef MENUBARWIDGETCONTAINER_P_H
+#define MENUBARWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
class QMenuBar;
+class QObject;
-class DeclarativeMenuBarExtension : public DeclarativeWidgetExtension
+class MenuBarWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuBarExtension(QObject *parent = 0);
+ explicit MenuBarWidgetContainer(QObject *parent = 0);
- QMenuBar *extendedMenuBar() const;
-
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
void addAction(QAction *action);
+ void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QMenuBar *extendedMenuBar() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativemenuextension_p.h"
+#include "menuwidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QMenu>
-DeclarativeMenuExtension::DeclarativeMenuExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+MenuWidgetContainer::MenuWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QMenu*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QMenu *DeclarativeMenuExtension::extendedMenu() const
-{
- QMenu *menu = qobject_cast<QMenu*>(extendedWidget());
- Q_ASSERT(menu);
-
- return menu;
-}
-
-void DeclarativeMenuExtension::addWidget(QWidget *widget)
+void MenuWidgetContainer::addWidget(QWidget *widget)
{
QMenu *menu = qobject_cast<QMenu*>(widget);
if (!menu) {
- qmlInfo(extendedMenu()) << "The Menu can only contain Menu, Action, ActionItem or Separator";
+ qmlInfo(m_widget) << "The Menu can only contain Menu, Action, ActionItem or Separator";
return;
}
extendedMenu()->addMenu(menu);
}
-void DeclarativeMenuExtension::setLayout(QLayout *layout)
+void MenuWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedMenu()) << "Can not set a Layout to a Menu";
+ qmlInfo(m_widget) << "Can not set a Layout to a Menu";
}
-void DeclarativeMenuExtension::addAction(QAction *action)
+void MenuWidgetContainer::addAction(QAction *action)
{
extendedMenu()->addAction(action);
}
+
+QMenu *MenuWidgetContainer::extendedMenu() const
+{
+ return static_cast<QMenu*>(m_widget);
+}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef MENUWIDGETCONTAINER_P_H
+#define MENUWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
class QMenu;
+class QObject;
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class MenuWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
+ explicit MenuWidgetContainer(QObject *parent = 0);
- QMenu *extendedMenu() const;
-
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
void addAction(QAction *action);
+ void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QMenu *extendedMenu() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef OBJECTCONTAINERINTERFACE_H
+#define OBJECTCONTAINERINTERFACE_H
-#include "declarativewidgetextension.h"
+class QObject;
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class ObjectContainerInterface
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
-
- QMenu *extendedMenu() const;
+ virtual ~ObjectContainerInterface() = 0;
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ virtual void dataAppend(QObject *object) = 0;
+ virtual int dataCount() const = 0;
+ virtual QObject *dataAt(int index) const = 0;
+ virtual void dataClear() = 0;
};
-#endif
+#endif // OBJECTCONTAINERINTERFACE_H
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativescrollareaextension_p.h"
+#include "scrollareawidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QScrollArea>
-DeclarativeScrollAreaExtension::DeclarativeScrollAreaExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+ScrollAreaWidgetContainer::ScrollAreaWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QScrollArea*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QScrollArea *DeclarativeScrollAreaExtension::extendedScrollArea() const
-{
- QScrollArea *scrollArea = qobject_cast<QScrollArea*>(extendedWidget());
- Q_ASSERT(scrollArea);
-
- return scrollArea;
-}
-
-void DeclarativeScrollAreaExtension::addWidget(QWidget *widget)
+void ScrollAreaWidgetContainer::addWidget(QWidget *widget)
{
QScrollArea *scrollArea = extendedScrollArea();
}
}
-void DeclarativeScrollAreaExtension::setLayout(QLayout *layout)
+void ScrollAreaWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedScrollArea()) << "Can not add Layout to ScrollArea";
+ qmlInfo(m_widget) << "Can not add Layout to ScrollArea";
+}
+
+QScrollArea *ScrollAreaWidgetContainer::extendedScrollArea() const
+{
+ return static_cast<QScrollArea*>(m_widget);
}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVESCROLLAREAEXTENSION_P_H
-#define DECLARATIVESCROLLAREAEXTENSION_P_H
+#ifndef SCROLLAREAWIDGETCONTAINER_P_H
+#define SCROLLAREAWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
+class QObject;
class QScrollArea;
-class DeclarativeScrollAreaExtension : public DeclarativeWidgetExtension
+class ScrollAreaWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeScrollAreaExtension(QObject *parent = 0);
-
- QScrollArea *extendedScrollArea() const;
+ explicit ScrollAreaWidgetContainer(QObject *parent = 0);
- protected:
- void addWidget(QWidget *widget);
void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QScrollArea *extendedScrollArea() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativestackedwidgetextension_p.h"
+#include "stackedwidgetwidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QStackedWidget>
-DeclarativeStackedWidgetExtension::DeclarativeStackedWidgetExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+StackedWidgetWidgetContainer::StackedWidgetWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QStackedWidget*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QStackedWidget *DeclarativeStackedWidgetExtension::extendedStackedWidget() const
+void StackedWidgetWidgetContainer::addWidget(QWidget *widget)
{
- QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(extendedWidget());
- Q_ASSERT(stackedWidget);
-
- return stackedWidget;
+ extendedStackedWidget()->addWidget(widget);
}
-void DeclarativeStackedWidgetExtension::addWidget(QWidget *widget)
+void StackedWidgetWidgetContainer::setLayout(QLayout*)
{
- extendedStackedWidget()->addWidget(widget);
+ qmlInfo(m_widget) << "StackedWidget does not support child layouts";
}
-void DeclarativeStackedWidgetExtension::setLayout(QLayout*)
+QStackedWidget *StackedWidgetWidgetContainer::extendedStackedWidget() const
{
- qmlInfo(extendedStackedWidget()) << "StackedWidget does not support child layouts";
+ return static_cast<QStackedWidget*>(m_widget);
}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVESTACKEDWIDGETEXTENSION_P_H
-#define DECLARATIVESTACKEDWIDGETEXTENSION_P_H
+#ifndef STACKEDWIDGETWIDGETCONTAINER_P_H
+#define STACKEDWIDGETWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
+class QObject;
class QStackedWidget;
-class DeclarativeStackedWidgetExtension : public DeclarativeWidgetExtension
+class StackedWidgetWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeStackedWidgetExtension(QObject *parent = 0);
-
- QStackedWidget *extendedStackedWidget() const;
+ explicit StackedWidgetWidgetContainer(QObject *parent = 0);
- protected:
- void addWidget(QWidget *widget);
void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QStackedWidget *extendedStackedWidget() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "declarativetoolbarextension_p.h"
+#include "toolbarwidgetcontainer_p.h"
#include <QDeclarativeInfo>
#include <QToolBar>
-DeclarativeToolBarExtension::DeclarativeToolBarExtension(QObject *parent)
- : DeclarativeWidgetExtension(parent)
+ToolBarWidgetContainer::ToolBarWidgetContainer(QObject *parent)
+ : DefaultWidgetContainer(qobject_cast<QToolBar*>(parent))
{
+ Q_ASSERT(m_widget);
}
-QToolBar *DeclarativeToolBarExtension::extendedToolBar() const
-{
- QToolBar *toolBar = qobject_cast<QToolBar*>(extendedWidget());
- Q_ASSERT(toolBar);
-
- return toolBar;
-}
-
-void DeclarativeToolBarExtension::addWidget(QWidget *widget)
+void ToolBarWidgetContainer::addWidget(QWidget *widget)
{
extendedToolBar()->addWidget(widget);
}
-void DeclarativeToolBarExtension::setLayout(QLayout *layout)
+void ToolBarWidgetContainer::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- qmlInfo(extendedToolBar()) << "Can not set a Layout to a ToolBar";
+ qmlInfo(m_widget) << "Can not set a Layout to a ToolBar";
}
-void DeclarativeToolBarExtension::addAction(QAction *action)
+void ToolBarWidgetContainer::addAction(QAction *action)
{
extendedToolBar()->addAction(action);
}
+
+QToolBar *ToolBarWidgetContainer::extendedToolBar() const
+{
+ return static_cast<QToolBar*>(m_widget);
+}
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVETOOLBAREXTENSION_P_H
-#define DECLARATIVETOOLBAREXTENSION_P_H
+#ifndef TOOLBARWIDGETCONTAINER_P_H
+#define TOOLBARWIDGETCONTAINER_P_H
-#include "declarativewidgetextension.h"
+#include "defaultwidgetcontainer.h"
+class QObject;
class QToolBar;
-class DeclarativeToolBarExtension : public DeclarativeWidgetExtension
+class ToolBarWidgetContainer : public DefaultWidgetContainer
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeToolBarExtension(QObject *parent = 0);
+ explicit ToolBarWidgetContainer(QObject *parent = 0);
- QToolBar *extendedToolBar() const;
-
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
void addAction(QAction *action);
+ void setLayout(QLayout *layout);
+ void addWidget(QWidget *widget);
+
+ private:
+ QToolBar *extendedToolBar() const;
};
#endif
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef DECLARATIVEMENUEXTENSION_P_H
-#define DECLARATIVEMENUEXTENSION_P_H
+#ifndef WIDGETCONTAINERINTERFACE_P_H
+#define WIDGETCONTAINERINTERFACE_P_H
-#include "declarativewidgetextension.h"
+class QAction;
+class QLayout;
+class QWidget;
-class QMenu;
-
-class DeclarativeMenuExtension : public DeclarativeWidgetExtension
+class WidgetContainerInterface
{
- Q_OBJECT
-
- // repeat property declarations, qmlRegisterExtendedType doesn't see the ones from base class
- Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
-
- Q_CLASSINFO("DefaultProperty", "data")
-
public:
- explicit DeclarativeMenuExtension(QObject *parent = 0);
-
- QMenu *extendedMenu() const;
+ virtual ~WidgetContainerInterface() = 0;
- protected:
- void addWidget(QWidget *widget);
- void setLayout(QLayout *layout);
- void addAction(QAction *action);
+ virtual void addAction(QAction *action) = 0;
+ virtual void setLayout(QLayout *layout) = 0;
+ virtual void addWidget(QWidget *widget) = 0;
};
-#endif
+#endif // WIDGETCONTAINERINTERFACE_P_H