diff options
author | wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com> | 2018-11-29 11:13:12 +0800 |
---|---|---|
committer | wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com> | 2018-11-29 11:13:12 +0800 |
commit | 5ba4327b148f81852c6e2a53bc51ab07b238602e (patch) | |
tree | 0be7f86962e8a26ad3cdbc6cb4309c5fd29761f5 /sample/app | |
parent | e79d82c88e350e6b882158624363b82fe3e2d91a (diff) |
modify display/hide onscreen sequence
Diffstat (limited to 'sample/app')
-rw-r--r-- | sample/app/app.pro | 12 | ||||
-rw-r--r-- | sample/app/eventhandler.cpp | 19 | ||||
-rw-r--r-- | sample/app/eventhandler.h | 2 | ||||
-rw-r--r-- | sample/app/main.cpp | 33 | ||||
-rw-r--r-- | sample/app/main.qml | 6 |
5 files changed, 41 insertions, 31 deletions
diff --git a/sample/app/app.pro b/sample/app/app.pro index b4c75f3..22d0c89 100644 --- a/sample/app/app.pro +++ b/sample/app/app.pro @@ -1,5 +1,9 @@ TARGET = onstestapp -QT = quick +QT = quick quickcontrols2 qml + +CONFIG += c++11 link_pkgconfig +PKGCONFIG += qlibwindowmanager qlibhomescreen +DESTDIR = $${OUT_PWD}/../package/root/bin SOURCES = main.cpp \ eventhandler.cpp @@ -7,10 +11,8 @@ SOURCES = main.cpp \ RESOURCES += \ qml.qrc -LIBS += -lqtwindowmanager -lqthomescreen -ljson-c - -DESTDIR = $${OUT_PWD}/../package/root/bin - HEADERS += \ eventhandler.h +LIBS += -ljson-c + diff --git a/sample/app/eventhandler.cpp b/sample/app/eventhandler.cpp index b88bda4..34e7e3e 100644 --- a/sample/app/eventhandler.cpp +++ b/sample/app/eventhandler.cpp @@ -19,11 +19,15 @@ #include <QJsonDocument> #include <QJsonObject> #include <QQuickWindow> -#include <QtQml/QQmlContext> +//#include <QtQml/QQmlContext> +#include <QQmlContext> +#include <QtQml/QQmlApplicationEngine> #include "eventhandler.h" void* EventHandler::myThis = 0; +const char _drawing_name[] = "drawing_name"; + EventHandler::EventHandler(QObject *parent) : QObject(parent), mp_hs(NULL), @@ -52,8 +56,8 @@ void EventHandler::init(int port, const char *token) mp_hs = new QLibHomeScreen(); mp_hs->init(port, token); - mp_hs->set_event_handler(QLibHomeScreen::Event_TapShortcut, [this](json_object *object){ - this->mp_wm->activateWindow(ROLE_NAME); + mp_hs->set_event_handler(QLibHomeScreen::Event_ShowWindow, [this](json_object *object){ + this->mp_wm->activateWindow(ROLE_NAME, "normal"); HMI_DEBUG(APP_ID, "received showWindow event, end!, line=%d", __LINE__); }); @@ -76,7 +80,7 @@ void EventHandler::init(int port, const char *token) mp_wm->set_event_handler(QLibWindowmanager::Event_Visible, [this](json_object *object) { struct json_object *value; - json_object_object_get_ex(object, "drawing_name", &value); + json_object_object_get_ex(object, _drawing_name, &value); const char *name = json_object_get_string(value); HMI_DEBUG(APP_ID, "Event_Active kKeyDrawingName = %s", name); @@ -84,7 +88,7 @@ void EventHandler::init(int port, const char *token) mp_wm->set_event_handler(QLibWindowmanager::Event_Invisible, [this](json_object *object) { struct json_object *value; - json_object_object_get_ex(object, "drawing_name", &value); + json_object_object_get_ex(object, _drawing_name, &value); const char *name = json_object_get_string(value); HMI_DEBUG(APP_ID, "Event_Inactive kKeyDrawingName = %s", name); @@ -106,3 +110,8 @@ void EventHandler::showWindow(QString id, QString json) else mp_hs->showWindow(id.toStdString().c_str(), json_tokener_parse(json.toStdString().c_str())); } + +void EventHandler::hideWindow(QString id) +{ + mp_hs->hideWindow(id.toStdString().c_str()); +} diff --git a/sample/app/eventhandler.h b/sample/app/eventhandler.h index 61b519b..c601d0d 100644 --- a/sample/app/eventhandler.h +++ b/sample/app/eventhandler.h @@ -31,6 +31,7 @@ using namespace std; class QQuickWindow; +class QQmlApplicationEngine; class EventHandler : public QObject { @@ -44,6 +45,7 @@ public: static void* myThis; Q_INVOKABLE void showWindow(QString id, QString json); + Q_INVOKABLE void hideWindow(QString id); signals: void signalOnReplyShowWindow(QVariant val); diff --git a/sample/app/main.cpp b/sample/app/main.cpp index 5e822f7..69642dc 100644 --- a/sample/app/main.cpp +++ b/sample/app/main.cpp @@ -14,20 +14,17 @@ * limitations under the License. */ -#include <QUrlQuery> #include <QQmlContext> -#include <QtCore/QDebug> #include <QtCore/QCommandLineParser> -#include <QtCore/QUrlQuery> #include <QtGui/QGuiApplication> #include <QtQml/QQmlContext> #include <QtQml/QQmlApplicationEngine> #include <QtQuickControls2/QQuickStyle> #include <QtQuick/QQuickWindow> +#include <QtCore/QDir> #include "eventhandler.h" -static EventHandler* eventHandler; int main(int argc, char *argv[]) { @@ -39,7 +36,7 @@ int main(int argc, char *argv[]) app.setOrganizationDomain(QStringLiteral("automotivelinux.org")); app.setOrganizationName(QStringLiteral("AutomotiveGradeLinux")); - //QQuickStyle::setStyle("AGL"); + QQuickStyle::setStyle("AGL"); QCommandLineParser parser; parser.addPositionalArgument("port", app.translate("main", "port for binding")); @@ -50,33 +47,31 @@ int main(int argc, char *argv[]) QStringList positionalArguments = parser.positionalArguments(); QQmlApplicationEngine engine; - QQmlContext *context = engine.rootContext(); - QUrl bindingAddress; int port = 0; QString secret; if (positionalArguments.length() == 2) { port = positionalArguments.takeFirst().toInt(); secret = positionalArguments.takeFirst(); - bindingAddress.setScheme(QStringLiteral("ws")); - bindingAddress.setHost(QStringLiteral("localhost")); - bindingAddress.setPort(port); - bindingAddress.setPath(QStringLiteral("/api")); - QUrlQuery query; - query.addQueryItem(QStringLiteral("token"), secret); - bindingAddress.setQuery(query); - context->setContextProperty(QStringLiteral("bindingAddress"), bindingAddress); - } else { - context->setContextProperty(QStringLiteral("bindingAddress"), bindingAddress); } - eventHandler = new EventHandler(); + EventHandler *eventHandler = new EventHandler(); eventHandler->init(port, secret.toStdString().c_str()); engine.rootContext()->setContextProperty("eventHandler", eventHandler); + QString qmldir = QCoreApplication::applicationDirPath(); + qmldir.replace(QString("bin"), QString("qml")); + qmldir.append('/'); + qDebug() << "####qmldir=" << qmldir; + engine.rootContext()->setContextProperty("qmldir", qmldir); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + if (engine.rootObjects().isEmpty()) { + HMI_DEBUG(APP_ID, "Fatal Error, rootObject is empty!"); + return -1; + } + qDebug() << "####" << QDir::currentPath() << QCoreApplication::applicationDirPath(); + QObject *root = engine.rootObjects().first(); QQuickWindow *window = qobject_cast<QQuickWindow *>(root); - QObject::connect(eventHandler, SIGNAL(signalOnReplyShowWindow(QVariant)), window, SLOT(qmlOnReplyShowWindow(QVariant))); eventHandler->setQuickWindow(window); diff --git a/sample/app/main.qml b/sample/app/main.qml index ccce169..94de871 100644 --- a/sample/app/main.qml +++ b/sample/app/main.qml @@ -3,7 +3,7 @@ import QtQuick.Window 2.2 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import QtQuick.VirtualKeyboard 2.1 - +import AGL.Demo.Controls 1.0 ApplicationWindow { id: root @@ -12,7 +12,8 @@ ApplicationWindow { height: 1487 property string onsId: qsTr("onscreenapp") - property string pri_path: qsTr("/home/0/app-data/OnScreen/qml/") +// property string pri_path: qsTr("/home/0/app-data/OnScreen/qml/") + property string pri_path: qmldir property string filepath: pri_path + qsTr("vics.qml") property string msgdata: "" property string postmsg: "" @@ -354,5 +355,6 @@ ApplicationWindow { function qmlOnReplyShowWindow(text) { console.log("onstestapp received:",text); output.text = text; + eventHandler.hideWindow(onsId); } } |