CUSTOM_METAOBJECT(DeclarativeAction, QAction)
+// DeclarativeSeparator
+DeclarativeSeparator::DeclarativeSeparator(QObject *parent) : DeclarativeObjectProxy<QAction>(parent)
+{
+ connectAllSignals(m_proxiedObject, this);
+}
+
+CUSTOM_METAOBJECT(DeclarativeSeparator, QAction)
+
//// Layouts ////
// DeclarativeHBoxLayout
{
QMenu *menu = qobject_cast<QMenu*>(widget);
if (!menu) {
- qmlInfo(declarativeObject) << "The QMenu can only contain QMenu or QAction";
+ qmlInfo(declarativeObject) << "The QMenu can only contain QMenu, QAction or Separator";
return;
}
qmlInfo(this) << "Can not set a QLayout to a QMenu";
}
+void DeclarativeMenu::addAction(QAction *action, AbstractDeclarativeObject *declarativeObject)
+{
+ DeclarativeSeparator *separator = dynamic_cast<DeclarativeSeparator*>(declarativeObject);
+
+ if (separator) {
+ m_proxiedObject->addSeparator();
+ } else {
+ m_proxiedObject->addAction(action);
+ }
+
+ m_children.append(declarativeObject);
+}
+
CUSTOM_METAOBJECT(DeclarativeMenu, QMenu)
// DeclarativeMenuBar
qmlInfo(this) << "Can not set a QLayout to a QMenuBar";
}
+void DeclarativeMenuBar::addAction(QAction *action, AbstractDeclarativeObject *declarativeObject)
+{
+ Q_UNUSED(action)
+
+ DeclarativeSeparator *separator = dynamic_cast<DeclarativeSeparator*>(declarativeObject);
+
+ if (separator) {
+ m_proxiedObject->addSeparator();
+ }
+
+ m_children.append(declarativeObject);
+}
+
CUSTOM_METAOBJECT(DeclarativeMenuBar, QMenuBar)
// DeclarativePushButton
qmlInfo(this) << "Can not set a QLayout to a QToolBar";
}
+void DeclarativeToolBar::addAction(QAction *action, AbstractDeclarativeObject *declarativeObject)
+{
+ DeclarativeSeparator *separator = dynamic_cast<DeclarativeSeparator*>(declarativeObject);
+
+ if (separator) {
+ m_proxiedObject->addSeparator();
+ } else {
+ m_proxiedObject->addAction(action);
+ }
+
+ m_children.append(declarativeObject);
+}
+
CUSTOM_METAOBJECT(DeclarativeToolBar, QToolBar)
// DeclarativeWidget
DeclarativeAction(QObject *parent = 0);
};
+class DeclarativeSeparator : public DeclarativeObjectProxy<QAction>
+{
+ DECLARATIVE_OBJECT
+
+ public:
+ DeclarativeSeparator(QObject *parent = 0);
+};
+
//// Layouts ////
template <class T>
class DeclarativeBoxLayout : public DeclarativeObjectProxy<T>
protected:
virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+ virtual void addAction(QAction *action, AbstractDeclarativeObject *declarativeObject);
};
class DeclarativeMenuBar : public DeclarativeWidgetProxy<QMenuBar>
protected:
virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+ virtual void addAction(QAction *action, AbstractDeclarativeObject *declarativeObject);
};
class DeclarativePushButton : public DeclarativeWidgetProxy<QPushButton>
protected:
virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+ virtual void addAction(QAction *action, AbstractDeclarativeObject *declarativeObject);
};
class DeclarativeWidget : public DeclarativeWidgetProxy<QWidget>
// objects
qmlRegisterType<QAction>();
qmlRegisterType<DeclarativeAction>("QtGui", 1, 0, "Action");
+ qmlRegisterType<DeclarativeSeparator>("QtGui", 1, 0, "Separator");
// layouts
qmlRegisterType<DeclarativeHBoxLayout>("QtGui", 1, 0, "HBoxLayout");