{
QMenuBar *menuBar = qobject_cast<QMenuBar*>(widget);
QToolBar *toolBar = qobject_cast<QToolBar*>(widget);
+ QStatusBar *statusBar = qobject_cast<QStatusBar*>(widget);
+
if (menuBar) {
m_proxiedObject->setMenuBar(menuBar);
} else if (toolBar) {
m_proxiedObject->addToolBar(toolBar);
+ } else if (statusBar) {
+ m_proxiedObject->setStatusBar(statusBar);
} else if (widget) {
if (m_proxiedObject->centralWidget()) {
qmlInfo(declarativeObject) << "The QMainWindow contains a central widget already";
CUSTOM_METAOBJECT(DeclarativeSlider, QSlider)
+// DeclarativeStatusBar
+class DeclarativeStatusBarAttached::Private
+{
+ public:
+ int stretch;
+};
+
+DeclarativeStatusBarAttached::DeclarativeStatusBarAttached(QObject *parent)
+ : QObject(parent), d(new DeclarativeStatusBarAttached::Private)
+{
+ d->stretch = 0;
+}
+
+DeclarativeStatusBarAttached::~DeclarativeStatusBarAttached()
+{
+ delete d;
+}
+
+void DeclarativeStatusBarAttached::setStretch(int stretch)
+{
+ if (d->stretch == stretch)
+ return;
+
+ d->stretch = stretch;
+ emit stretchChanged();
+}
+
+int DeclarativeStatusBarAttached::stretch() const
+{
+ return d->stretch;
+}
+
+DeclarativeStatusBar::DeclarativeStatusBar(QObject *parent) : DeclarativeWidgetProxy<QStatusBar>(parent)
+{
+ connectAllSignals(m_proxiedObject, this);
+}
+
+void DeclarativeStatusBar::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+{
+ // TODO: error when layout is set
+
+ m_children.append(declarativeObject);
+
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeStatusBar>(declarativeObject, false);
+ DeclarativeStatusBarAttached *attached = qobject_cast<DeclarativeStatusBarAttached*>(attachedProperties);
+
+ int stretch = 0;
+ if (attached) {
+ stretch = attached->stretch();
+ }
+
+ m_proxiedObject->addPermanentWidget(widget, stretch);
+}
+
+void DeclarativeStatusBar::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ Q_UNUSED(layout);
+ Q_UNUSED(declarativeObject);
+ qmlInfo(this) << "Can not add QLayout to QStatusBar";
+}
+
+DeclarativeStatusBarAttached *DeclarativeStatusBar::qmlAttachedProperties(QObject *object)
+{
+ return new DeclarativeStatusBarAttached(object);
+}
+
+CUSTOM_METAOBJECT(DeclarativeStatusBar, QStatusBar)
+
// DeclarativeTabWidget
class TabWidgetTabHeader::Private
{
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QSlider>
+#include <QtGui/QStatusBar>
#include <QtGui/QTabWidget>
#include <QtGui/QTextEdit>
#include <QtGui/QToolBar>
DeclarativeSlider(QObject *parent = 0);
};
+// attached property for DeclarativeStatusBar
+class DeclarativeStatusBarAttached : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(int stretch READ stretch WRITE setStretch NOTIFY stretchChanged)
+
+ public:
+ DeclarativeStatusBarAttached(QObject *parent = 0);
+ ~DeclarativeStatusBarAttached();
+
+ void setStretch(int stretch);
+ int stretch() const;
+
+ Q_SIGNALS:
+ void stretchChanged();
+
+ private:
+ class Private;
+ Private *const d;
+};
+
+class DeclarativeStatusBar : public DeclarativeWidgetProxy<QStatusBar>
+{
+ DECLARATIVE_OBJECT
+
+ public:
+ DeclarativeStatusBar(QObject *parent = 0);
+
+ static DeclarativeStatusBarAttached *qmlAttachedProperties(QObject *object);
+
+ protected:
+ virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+};
+
+QML_DECLARE_TYPEINFO(DeclarativeStatusBar, QML_HAS_ATTACHED_PROPERTIES)
+
// attached property for DeclarativeTabWidget
class TabWidgetTabHeader : public QObject
{
qmlRegisterType<DeclarativeMenuBar>("QtGui", 1, 0, "MenuBar");
qmlRegisterType<DeclarativePushButton>("QtGui", 1, 0, "PushButton");
qmlRegisterType<DeclarativeSlider>("QtGui", 1, 0, "Slider");
+ qmlRegisterType<DeclarativeStatusBarAttached>();
+ qmlRegisterType<DeclarativeStatusBar>("QtGui", 1, 0, "StatusBar");
qmlRegisterType<TabWidgetTabHeader>();
qmlRegisterType<DeclarativeTabWidget>("QtGui", 1, 0, "TabWidget");
qmlRegisterType<DeclarativeTextEdit>("QtGui", 1, 0, "TextEdit");