return d->label;
}
-DeclarativeFormLayout::DeclarativeFormLayout(QObject *parent) : DeclarativeObjectProxy<QFormLayout>(parent)
+DeclarativeFormLayout::DeclarativeFormLayout(QObject *parent) : DeclarativeLayoutProxy<QFormLayout>(parent)
{
connectAllSignals(m_proxiedObject, this);
}
return new DeclarativeFormLayoutAttached(parent);
}
-void DeclarativeFormLayout::dataAppend(QObject *object)
+void DeclarativeFormLayout::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
{
- AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
- if (declarativeObject) {
- QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeFormLayout>(declarativeObject, false);
- DeclarativeFormLayoutAttached *properties = qobject_cast<DeclarativeFormLayoutAttached*>(attachedProperties);
-
- QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
- if (widget) {
- if (properties) {
- if (!properties->label().isEmpty()) {
- m_proxiedObject->addRow(properties->label(), widget);
- m_children.append(declarativeObject);
- return;
- }
- }
- m_proxiedObject->addRow(widget);
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeFormLayout>(declarativeObject, false);
+ DeclarativeFormLayoutAttached *properties = qobject_cast<DeclarativeFormLayoutAttached*>(attachedProperties);
+ if (properties) {
+ if (!properties->label().isEmpty()) {
+ m_proxiedObject->addRow(properties->label(), widget);
m_children.append(declarativeObject);
return;
}
+ }
+
+ m_proxiedObject->addRow(widget);
+ m_children.append(declarativeObject);
+}
- QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
- if (layout) {
- if (properties) {
- if (!properties->label().isEmpty()) {
- m_proxiedObject->addRow(properties->label(), layout);
- m_children.append(declarativeObject);
- return;
- }
- }
- m_proxiedObject->addRow(layout);
- m_children.append(declarativeObject);
- return;
+void DeclarativeFormLayout::addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeFormLayout>(declarativeObject, false);
+ DeclarativeFormLayoutAttached *properties = qobject_cast<DeclarativeFormLayoutAttached*>(attachedProperties);
+ if (properties) {
+ if (!properties->label().isEmpty()) {
+ m_proxiedObject->addRow(properties->label(), layout);
+ m_children.append(declarativeObject);
+ return;
}
}
-
- DeclarativeObjectProxy<QFormLayout>::dataAppend(object);
+ m_proxiedObject->addRow(layout);
+ m_children.append(declarativeObject);
}
CUSTOM_METAOBJECT(DeclarativeFormLayout, QFormLayout)
// DeclarativeHBoxLayout
-DeclarativeHBoxLayout::DeclarativeHBoxLayout(QObject *parent) : DeclarativeBoxLayout<QHBoxLayout>(parent)
+DeclarativeHBoxLayout::DeclarativeHBoxLayout(QObject *parent) : DeclarativeLayoutProxy<QHBoxLayout>(parent)
{
connectAllSignals(m_proxiedObject, this);
}
m_children.append(declarativeObject);
}
+void DeclarativeHBoxLayout::addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ int stretch = 0;
+
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeHBoxLayout>(declarativeObject, false);
+ DeclarativeBoxLayoutAttached *properties = qobject_cast<DeclarativeBoxLayoutAttached*>(attachedProperties);
+ if (properties)
+ stretch = properties->stretch();
+
+ m_proxiedObject->addLayout(layout, stretch);
+ m_children.append(declarativeObject);
+}
+
CUSTOM_METAOBJECT(DeclarativeHBoxLayout, QHBoxLayout)
// DeclarativeVBoxLayout
-DeclarativeVBoxLayout::DeclarativeVBoxLayout(QObject *parent) : DeclarativeBoxLayout<QVBoxLayout>(parent)
+DeclarativeVBoxLayout::DeclarativeVBoxLayout(QObject *parent) : DeclarativeLayoutProxy<QVBoxLayout>(parent)
{
connectAllSignals(m_proxiedObject, this);
}
m_children.append(declarativeObject);
}
+void DeclarativeVBoxLayout::addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ int stretch = 0;
+
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeVBoxLayout>(declarativeObject, false);
+ DeclarativeBoxLayoutAttached *properties = qobject_cast<DeclarativeBoxLayoutAttached*>(attachedProperties);
+ if (properties)
+ stretch = properties->stretch();
+
+ m_proxiedObject->addLayout(layout, stretch);
+ m_children.append(declarativeObject);
+}
+
CUSTOM_METAOBJECT(DeclarativeVBoxLayout, QVBoxLayout)
//// Widgets ////
}
};
+template <class T>
+class DeclarativeLayoutProxy : public DeclarativeObjectProxy<T>
+{
+ public:
+ DeclarativeLayoutProxy(QObject *parent = 0) : DeclarativeObjectProxy<T>(parent) {}
+
+ protected:
+ virtual void dataAppend(QObject *object)
+ {
+ AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
+ if (declarativeObject) {
+ QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
+ if (widget) {
+ addWidget(widget, declarativeObject);
+ return;
+ }
+
+ QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
+ if (layout) {
+ addLayout(layout, declarativeObject);
+ return;
+ }
+ }
+
+ DeclarativeObjectProxy<T>::dataAppend(object);
+ }
+
+ virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+ {
+ DeclarativeObjectProxy<T>::m_children.append(declarativeObject);
+ DeclarativeObjectProxy<T>::m_proxiedObject->addWidget(widget);
+ }
+
+ virtual void addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+ {
+ DeclarativeObjectProxy<T>::m_children.append(declarativeObject);
+ DeclarativeObjectProxy<T>::m_proxiedObject->addItem(layout);
+ }
+};
+
//// Objects ///
class DeclarativeAction : public DeclarativeObjectProxy<QAction>
{
Private *const d;
};
-template <class T>
-class DeclarativeBoxLayout : public DeclarativeObjectProxy<T>
-{
- public:
- DeclarativeBoxLayout(QObject *parent = 0) : DeclarativeObjectProxy<T>(parent) {}
-
- protected:
- virtual void dataAppend(QObject *object)
- {
- AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
- if (declarativeObject) {
- QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
- if (widget) {
- addWidget(widget, declarativeObject);
- return;
- }
-
- QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
- if (layout) {
- DeclarativeObjectProxy<T>::m_children.append(object);
- DeclarativeObjectProxy<T>::m_proxiedObject->addLayout(layout);
- return;
- }
- }
-
- DeclarativeObjectProxy<T>::dataAppend(object);
- }
-
- virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject) = 0;
-};
-
class DeclarativeFormLayoutAttached : public QObject
{
Q_OBJECT
Private *const d;
};
-class DeclarativeFormLayout : public DeclarativeObjectProxy<QFormLayout>
+class DeclarativeFormLayout : public DeclarativeLayoutProxy<QFormLayout>
{
DECLARATIVE_OBJECT
static DeclarativeFormLayoutAttached *qmlAttachedProperties(QObject *parent);
protected:
- void dataAppend(QObject *object);
+ void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ void addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
};
QML_DECLARE_TYPEINFO(DeclarativeFormLayout, QML_HAS_ATTACHED_PROPERTIES)
-class DeclarativeHBoxLayout : public DeclarativeBoxLayout<QHBoxLayout>
+class DeclarativeHBoxLayout : public DeclarativeLayoutProxy<QHBoxLayout>
{
DECLARATIVE_OBJECT
protected:
void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ void addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
};
QML_DECLARE_TYPEINFO(DeclarativeHBoxLayout, QML_HAS_ATTACHED_PROPERTIES)
-class DeclarativeVBoxLayout : public DeclarativeBoxLayout<QVBoxLayout>
+class DeclarativeVBoxLayout : public DeclarativeLayoutProxy<QVBoxLayout>
{
DECLARATIVE_OBJECT
protected:
void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ void addLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
};
QML_DECLARE_TYPEINFO(DeclarativeVBoxLayout, QML_HAS_ATTACHED_PROPERTIES)