18 #include <QSignalMapper>
22 #include "OffscreenUi.h"
31 class MenuUserData :
public QObject {
34 MenuUserData(QAction* action, QObject* qmlObject, QObject* qmlParent);
36 void updateQmlItemFromAction();
39 const QUuid uuid{ QUuid::createUuid() };
41 static bool hasData(QAction*
object);
43 static MenuUserData* forObject(QAction*
object);
46 Q_DISABLE_COPY(MenuUserData);
48 static constexpr
const char *USER_DATA{
"user_data"};
50 QMetaObject::Connection _shutdownConnection;
51 QMetaObject::Connection _changedConnection;
52 QAction* _action {
nullptr };
53 QObject* _qml {
nullptr };
54 QObject* _qmlParent{
nullptr };
60 class VrMenu :
public QObject {
63 VrMenu(OffscreenUi* parent =
nullptr);
64 void addMenu(QMenu* menu);
65 void addAction(QMenu* parent, QAction* action);
66 void addSeparator(QMenu* parent);
67 void insertAction(QAction* before, QAction* action);
68 void removeAction(QAction* action);
71 QObject* _rootMenu{
nullptr };
72 QObject* findMenuObject(
const QString& name);
74 friend class MenuUserData;
75 friend class OffscreenUi;