#include "declarativestatusbar_p.h"
+#include <QDeclarativeInfo>
+
class DeclarativeStatusBarAttached::Private
{
public:
return d->stretch;
}
-DeclarativeStatusBar::DeclarativeStatusBar(QObject *parent)
- : DeclarativeWidgetProxy<QStatusBar>(parent)
+DeclarativeStatusBar::DeclarativeStatusBar(QWidget *parent)
+ : QStatusBar(parent)
{
- connectAllSignals(m_proxiedObject, this);
}
-void DeclarativeStatusBar::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+DeclarativeStatusBarAttached *DeclarativeStatusBar::qmlAttachedProperties(QObject *object)
{
- // TODO: error when layout is set
+ return new DeclarativeStatusBarAttached(object);
+}
+
+DeclarativeStatusBarExtension::DeclarativeStatusBarExtension(QObject *parent)
+ : DeclarativeWidgetExtension(parent)
+{
+}
+
+QStatusBar *DeclarativeStatusBarExtension::extendedStatusBar() const
+{
+ QStatusBar *statusBar = qobject_cast<QStatusBar*>(extendedWidget());
+ Q_ASSERT(statusBar);
- m_children.append(declarativeObject);
+ return statusBar;
+}
- QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeStatusBar>(declarativeObject, false);
+void DeclarativeStatusBarExtension::addWidget(QWidget *widget)
+{
+ // TODO: error when layout is set
+
+ QObject *attachedProperties = qmlAttachedPropertiesObject<DeclarativeStatusBar>(widget, false);
DeclarativeStatusBarAttached *attached = qobject_cast<DeclarativeStatusBarAttached*>(attachedProperties);
int stretch = 0;
stretch = attached->stretch();
}
- m_proxiedObject->addPermanentWidget(widget, stretch);
+ extendedStatusBar()->addPermanentWidget(widget, stretch);
}
-void DeclarativeStatusBar::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+void DeclarativeStatusBarExtension::setLayout(QLayout *layout)
{
Q_UNUSED(layout);
- Q_UNUSED(declarativeObject);
- qmlInfo(this) << "Can not add QLayout to QStatusBar";
-}
-
-DeclarativeStatusBarAttached *DeclarativeStatusBar::qmlAttachedProperties(QObject *object)
-{
- return new DeclarativeStatusBarAttached(object);
+ qmlInfo(extendedStatusBar()) << "Can not add Layout to StatusBar";
}
-
-CUSTOM_METAOBJECT(DeclarativeStatusBar, QStatusBar)
#ifndef DECLARATIVESTATUSBAR_P_H
#define DECLARATIVESTATUSBAR_P_H
-#include "declarativewidgetproxy_p.h"
+#include "declarativewidgetextension.h"
+#include <qdeclarative.h>
#include <QStatusBar>
class DeclarativeStatusBarAttached : public QObject
Private *const d;
};
-class DeclarativeStatusBar : public DeclarativeWidgetProxy<QStatusBar>
+class DeclarativeStatusBar : public QStatusBar
{
- DECLARATIVE_OBJECT
+ Q_OBJECT
public:
- explicit DeclarativeStatusBar(QObject *parent = 0);
+ explicit DeclarativeStatusBar(QWidget *parent = 0);
static DeclarativeStatusBarAttached *qmlAttachedProperties(QObject *object);
-
- protected:
- void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
- void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
};
QML_DECLARE_TYPEINFO(DeclarativeStatusBar, QML_HAS_ATTACHED_PROPERTIES)
+class DeclarativeStatusBarExtension : 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 DeclarativeStatusBarExtension(QObject *parent = 0);
+
+ QStatusBar *extendedStatusBar() const;
+
+ protected:
+ void addWidget(QWidget *widget);
+ void setLayout(QLayout *layout);
+};
+
#endif
qmlRegisterType<DeclarativeSpinBox>("QtGui", 1, 0, "SpinBox");
qmlRegisterType<DeclarativeStackedWidget>("QtGui", 1, 0, "StackedWidget");
qmlRegisterType<DeclarativeStatusBarAttached>();
- qmlRegisterType<DeclarativeStatusBar>("QtGui", 1, 0, "StatusBar");
qmlRegisterType<DeclarativeTableView>("QtGui", 1, 0, "TableView");
qmlRegisterType<DeclarativeTabWidgetAttached>();
qmlRegisterType<DeclarativeTextBrowser>("QtGui", 1, 0, "TextBrowser");
qmlRegisterExtendedType<QMenuBar, DeclarativeMenuBarExtension>("QtGui", 1, 0, "MenuBar");
qmlRegisterExtendedType<QPushButton, DeclarativeWidgetExtension>("QtGui", 1, 0, "PushButton");
qmlRegisterExtendedType<QRadioButton, DeclarativeWidgetExtension>("QtGui", 1, 0, "RadioButton");
+ qmlRegisterExtendedType<DeclarativeStatusBar, DeclarativeStatusBarExtension>("QtGui", 1, 0, "StatusBar");
qmlRegisterExtendedType<DeclarativeTabWidget, DeclarativeTabWidgetExtension>("QtGui", 1, 0, "TabWidget");
qmlRegisterExtendedType<QTextEdit, DeclarativeTextEditExtension>("QtGui", 1, 0, "TextEdit");
qmlRegisterExtendedType<QToolBar, DeclarativeToolBarExtension>("QtGui", 1, 0, "ToolBar");