on xenial help sign in
Added input controller window
commit5e6c182e22e476bd91ca2b209ea6a8012aac9106 authorNick Dedekind <nick.dedekind@canonical.com> dateThu 12 Jan 2017, 19:40 (10 years ago) parenta706fb0
6 files changed+94−19
tests/mocks/Unity/InputInfo/InputWindow.qml+68 tests/mocks/Unity/InputInfo/mockcontroller.cpp+19−4 tests/mocks/Unity/InputInfo/mockcontroller.h+4−2 tests/mocks/Unity/InputInfo/plugin.cpp+1−12 tests/mocks/Unity/InputInfo/plugin.h−1 tests/mocks/Unity/InputInfo/qmldir+2
tests/mocks/Unity/InputInfo/InputWindow.qmlnew file+68
@@ -0,0 +1,68 @@
1+import QtQuick 2.4
2+import Ubuntu.Components 1.3
3+import Unity.InputInfo 0.1
4+
5+Rectangle {
6+ id: rect
7+ color: "white"
8+ width: parent.width
9+ height: parent.height
10+
11+ Action {
12+ id: mouseAction
13+ text: checked ? "Remove Mouse" : "Add Mouse"
14+ onTriggered: {
15+ if (checked) {
16+ console.log("ADD")
17+ MockInputDeviceBackend.addMockDevice("/mouse0", InputInfo.Mouse);
18+ } else {
19+ console.log("REMOVE")
20+ MockInputDeviceBackend.removeDevice("/mouse0");
21+ }
22+ }
23+ iconName: "input-mouse-symbolic"
24+ checkable: true
25+ checked: false
26+ }
27+
28+ Action {
29+ id: kbAction
30+ text: checked ? "Remove Keyboard" : "Add Keyboard"
31+ onTriggered: {
32+ if (checked) {
33+ MockInputDeviceBackend.addMockDevice("/kbd0", InputInfo.Keyboard);
34+ } else {
35+ MockInputDeviceBackend.removeDevice("/kbd0");
36+ }
37+ }
38+ iconName: "input-keyboard-symbolic"
39+ checkable: true
40+ checked: false
41+ }
42+
43+ Column {
44+ anchors {
45+ fill: parent
46+ margins: units.gu(1)
47+ }
48+ spacing: units.gu(1)
49+
50+ Button {
51+ anchors {
52+ left: parent.left
53+ right: parent.right
54+ }
55+ action: mouseAction
56+ color: mouseAction.checked ? UbuntuColors.red : UbuntuColors.green
57+ }
58+
59+ Button {
60+ anchors {
61+ left: parent.left
62+ right: parent.right
63+ }
64+ action: kbAction
65+ color: kbAction.checked ? UbuntuColors.red : UbuntuColors.green
66+ }
67+ }
68+}
tests/mocks/Unity/InputInfo/mockcontroller.cpp+19−4
@@ -19,15 +19,30 @@
1919#include "qinputdeviceinfo_mock_p.h"
2020
2121#include <QQuickView>
22+#include <QQmlComponent>
23+#include <QQuickItem>
24+#include <paths.h>
2225
23−MockController::MockController(QObject *parent):
24− QObject(parent)
26+MockController::MockController(QQmlEngine *engine)
2527{
28+ QQmlComponent component(engine);
29+ component.setData("import QtQuick 2.4; import Unity.InputInfo 0.1; InputWindow { }", ::qmlDirectory());
30+ QObject *myObject = component.create();
31+ QQuickItem *item = qobject_cast<QQuickItem*>(myObject);
32+ if (item) {
33+ auto window = new QQuickView();
34+ window->setTitle("Input");
35+ item->setParentItem(window->contentItem());
36+ window->setResizeMode(QQuickView::SizeRootObjectToView);
37+ window->setWidth(200);
38+ window->setHeight(100);
39+ window->show();
40+ }
2641}
2742
28−MockController *MockController::instance()
43+MockController *MockController::instance(QQmlEngine *engine)
2944{
30− static MockController* controller = new MockController;
45+ static MockController* controller = new MockController(engine);
3146 return controller;
3247}
3348
tests/mocks/Unity/InputInfo/mockcontroller.h+4−2
@@ -20,14 +20,16 @@
2020#include <QObject>
2121#include "qinputinfo.h"
2222
23+class QQmlEngine;
24+
2325class MockController: public QObject
2426{
2527 Q_OBJECT
2628public:
27− MockController(QObject *parent = 0);
29+ MockController(QQmlEngine *engine);
2830 ~MockController() = default;
2931
30− static MockController *instance();
32+ static MockController *instance(QQmlEngine *engine);
3133
3234 Q_INVOKABLE QInputDevice* addMockDevice(const QString &devicePath, QInputDevice::InputType type);
3335 Q_INVOKABLE void removeDevice(const QString &devicePath);
tests/mocks/Unity/InputInfo/plugin.cpp+1−12
@@ -26,9 +26,8 @@
2626
2727static QObject *backendProvider(QQmlEngine *engine, QJSEngine *scriptEngine)
2828{
29− Q_UNUSED(engine)
3029 Q_UNUSED(scriptEngine)
31− return MockController::instance();
30+ return MockController::instance(engine);
3231}
3332
3433void InputInfoPlugin::registerTypes(const char *uri)
@@ -44,13 +43,3 @@ void InputInfoPlugin::registerTypes(const char *uri)
4443 // MockController
4544 qmlRegisterSingletonType<MockController>(uri, major, minor, "MockInputDeviceBackend", backendProvider);
4645}
47−
48−void InputInfoPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
49−{
50− QQmlExtensionPlugin::initializeEngine(engine, uri);
51−
52− if (qEnvironmentVariableIsSet("UNITY_MOCK_DESKTOP")) {
53− MockController::instance()->addMockDevice("/mouse0", QInputDevice::Mouse);
54− MockController::instance()->addMockDevice("/kbd0", QInputDevice::Keyboard);
55− }
56−}
tests/mocks/Unity/InputInfo/plugin.h−1
@@ -25,7 +25,6 @@ class InputInfoPlugin : public QQmlExtensionPlugin
2525 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
2626public:
2727 void registerTypes(const char *uri) override;
28− void initializeEngine(QQmlEngine *engine, const char *uri);
2928};
3029
3130#endif // INPUTINFO_PLUGIN_H
tests/mocks/Unity/InputInfo/qmldir+2
@@ -1,2 +1,4 @@
11module Unity.InputInfo
22plugin MockInputInfo
3+
4+InputWindow 0.1 InputWindow.qml