History

controller with menus finally work

Dante Ruiz committed 9 years ago

Commit baff07b1 parent 9a61b607 files · +117 −22Browse files

Showing the changes to libraries/script-engine/src/TabletScriptingInterface.cpp (1 of 7 files). Show all

Unified · Split

libraries/script-engine/src/TabletScriptingInterface.cpp+88−3
@@ -59,6 +59,71 @@ QQuickWindow* TabletScriptingInterface::getTabletWindow() { · 58 unmodified lines
5959 return window;
6060 }
6161
62+void TabletScriptingInterface::processMenuEvents(QObject* object, const QKeyEvent* event) {
63+ switch (event->key()) {
64+ case Qt::Key_Down:
65+ QMetaObject::invokeMethod(object, "nextItem");
66+ break;
67+
68+ case Qt::Key_Up:
69+ QMetaObject::invokeMethod(object, "previousItem");
70+ break;
71+
72+ case Qt::Key_Left:
73+ QMetaObject::invokeMethod(object, "previousPage");
74+ break;
75+
76+ case Qt::Key_Right:
77+ QMetaObject::invokeMethod(object, "selectCurrentItem");
78+ break;
79+
80+ case Qt::Key_Return:
81+ QMetaObject::invokeMethod(object, "selectCurrentItem");
82+ break;
83+ defualt:
84+ break;
85+ }
86+}
87+
88+void TabletScriptingInterface::processTabletEvents(QObject* object, const QKeyEvent* event) {
89+ switch (event->key()) {
90+ case Qt::Key_Down:
91+ QMetaObject::invokeMethod(object, "downItem");
92+ break;
93+
94+ case Qt::Key_Up:
95+ QMetaObject::invokeMethod(object, "upItem");
96+ break;
97+
98+ case Qt::Key_Left:
99+ QMetaObject::invokeMethod(object, "previousItem");
100+ break;
101+
102+ case Qt::Key_Right:
103+ QMetaObject::invokeMethod(object, "nextItem");
104+ break;
105+
106+ case Qt::Key_Return:
107+ QMetaObject::invokeMethod(object, "selectItem");
108+ break;
109+ defualt:
110+ break;
111+ }
112+}
113+
114+
115+void TabletScriptingInterface::processEvent(const QKeyEvent* event) {
116+ TabletProxy* tablet = qobject_cast<TabletProxy*>(getTablet("com.highfidelity.interface.tablet.system"));
117+ QObject* qmlTablet = tablet->getQmlTablet();
118+ QObject* qmlMenu = tablet->getQmlMenu();
119+
120+ if (qmlTablet) {
121+ processTabletEvents(qmlTablet, event);
122+ } else if (qmlMenu) {
123+ processMenuEvents(qmlMenu, event);
124+ }
125+}
126+
62127 QObject* TabletScriptingInterface::getFlags()
63128 {
64129 auto offscreenUi = DependencyManager::get<OffscreenUi>();
@@ -215,8 +280,6 @@ void TabletProxy::addButtonsToHomeScreen() { · 150 unmodified lines
215280 addButtonProxyToQmlTablet(tablet, buttonProxy.data());
216281 }
217282 auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");
218− QMetaObject::invokeMethod(_qmlTabletRoot, "forceFocus");
219− qDebug() << "----> INVOKEMETHOD";
220283 QObject::disconnect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen()));
221284 }
222285
@@ -236,7 +299,6 @@ void TabletProxy::addButtonsToMenuScreen() { · 13 unmodified lines
236299
237300 QQuickItem* VrMenu = loader->findChild<QQuickItem*>("tabletMenu");
238301 if (!VrMenu) {
239− qDebug() << "----------> could not find vr menu";
240302 return;
241303 }
242304
@@ -270,6 +332,29 @@ QQuickItem* TabletProxy::getQmlTablet() const { · 27 unmodified lines
270332 return tablet;
271333 }
272334
335+QQuickItem* TabletProxy::getQmlMenu() const {
336+ if (!_qmlTabletRoot) {
337+ return nullptr;
338+ }
339+
340+ auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");
341+ if (!loader) {
342+ return nullptr;
343+ }
344+
345+ QQuickItem* VrMenu = loader->findChild<QQuickItem*>("tabletMenu");
346+ if (!VrMenu) {
347+ return nullptr;
348+ }
349+
350+ QQuickItem* menuList = VrMenu->findChild<QQuickItem*>("menuList");
351+ if (!menuList) {
352+ return nullptr;
353+ }
354+ qDebug() << "---------->found menuList";
355+ return menuList;
356+}
357+
273358 //
274359 // TabletButtonProxy
275360 //