modify display/hide onscreen sequence
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Thu, 29 Nov 2018 03:13:12 +0000 (11:13 +0800)
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Thu, 29 Nov 2018 03:13:12 +0000 (11:13 +0800)
21 files changed:
app/eventhandler.cpp
app/eventhandler.h
app/main.cpp
package/config.xml
sample/app/app.pro
sample/app/eventhandler.cpp
sample/app/eventhandler.h
sample/app/main.cpp
sample/app/main.qml
sample/package/package.pro
sample/package/qml/images/answer.png [moved from sample/ons/images/answer.png with 100% similarity]
sample/package/qml/images/disable.png [moved from sample/ons/images/disable.png with 100% similarity]
sample/package/qml/images/heart_1079x400.png [moved from sample/ons/images/heart_1079x400.png with 100% similarity]
sample/package/qml/images/images.qrc [moved from sample/ons/images/images.qrc with 100% similarity]
sample/package/qml/images/oval_1079x400.png [moved from sample/ons/images/oval_1079x400.png with 100% similarity]
sample/package/qml/images/reject.png [moved from sample/ons/images/reject.png with 100% similarity]
sample/package/qml/msg.qml [moved from sample/ons/msg.qml with 98% similarity]
sample/package/qml/phone.qml [moved from sample/ons/phone.qml with 98% similarity]
sample/package/qml/system.qml [moved from sample/ons/system.qml with 97% similarity]
sample/package/qml/vics.qml [moved from sample/ons/vics.qml with 96% similarity]
sample/readme.md

index 044eec6..39db933 100644 (file)
 #include <QDebug>
 #include <QJsonDocument>
 #include <QJsonObject>
-#include <QQuickWindow>
+#include <QQmlContext>
+#include <QtQml/QQmlApplicationEngine>
 #include <cstring>
+#include <QFileInfo>
 
 #include "eventhandler.h"
 
+const char _parameter[] = "parameter";
+const char _replyto[] = "replyto";
+const char _data[] = "data";
+const char _file[] = "file";
+const char _area[] = "area";
+const char _suffix[] = ".qml";
+const char _button_name[] = "buttonName";
+const char _button_press_mode[] = "buttonPressMode";
+const char _button_press_state[] = "buttonPressState";
+const char _drawing_name[] = "drawing_name";
+const char _application_id[] = "application_id";
+
 void* EventHandler::myThis = 0;
 
 EventHandler::EventHandler(QObject *parent) :
     QObject(parent),
-    mp_hs(NULL),
-    mp_wm(NULL),
-    mp_qw(NULL)
+    mp_hs(nullptr),
+    mp_wm(nullptr)
 {
     m_dspreq = QString("");
-    my_id = QString(APP_ID);
-    my_role = QString(ROLE_NAME);
     m_req.clear();
 }
 
 EventHandler::~EventHandler()
 {
-    if (mp_hs != NULL) {
+    if (mp_hs != nullptr) {
         delete mp_hs;
     }
-    if (mp_wm != NULL) {
+    if (mp_wm != nullptr) {
         delete mp_wm;
     }
 }
@@ -57,67 +68,78 @@ void EventHandler::init(int port, const char *token)
     mp_hs = new LibHomeScreen();
     mp_hs->init(port, token);
     
-//    my_id = QString(std::strtok(std::getenv("AFM_ID"), "@"));
     mp_hs->registerCallback(nullptr, EventHandler::onRep_static);
     mp_hs->set_event_handler(LibHomeScreen::Event_ShowWindow, [this](json_object *object){
-        // {"id": "onscreenXXX", "parameter": {"replyid": "app's id", "file": "onsreen file path", "data": {"key": "value", ...}}}
-        struct json_object *appid;
-        json_object_object_get_ex(object, "application_id", &appid);
-        const char *id = json_object_get_string(appid);
-        if(my_id != QString(id)) {
-            HMI_DEBUG(APP_ID, "Event_ShowWindow id = %s", id);
-            return;
-        }
-        else
-            HMI_DEBUG(APP_ID, "recived json message is[%s]", json_object_get_string(object));
+        // {"id": "onscreenXXX", "parameter": {"file": "onsreen file path", "data": {"key": "value", ...}}, "replyto": "app's id"}
+        HMI_DEBUG(APP_ID, "recived json message is[%s]", json_object_get_string(object));
 
         struct json_object *param;
-        json_object_object_get_ex(object, "parameter", &param);
+        json_object_object_get_ex(object, _parameter, &param);
         if(json_object_get_type(param) != json_type_object ) {
             HMI_DEBUG(APP_ID, "parameter error!");
             return;
         }
 
+        struct json_object *qml_path;
+        const char *file = nullptr;
+        if(json_object_object_get_ex(param, _file, &qml_path))
+            file = json_object_get_string(qml_path);
+        if(file == nullptr) {
+            HMI_DEBUG(APP_ID, "received qml file is null!");
+            return;
+        }
+
+        QFileInfo file_info(file);
+        if(!file_info.isFile() || !QString(file).contains(QString(_suffix), Qt::CaseSensitive)) {
+            HMI_DEBUG(APP_ID, "received qml file error! file=%s.", file);
+            return;
+        }
+
         struct json_object *replyid;
-        json_object_object_get_ex(param, "replyid", &replyid);
-        const char *_replyid = json_object_get_string(replyid);
-
-        struct json_object *path;
-        json_object_object_get_ex(param, "file", &path);
-        const char *_path = json_object_get_string(path);
-
-        struct json_object *data;
-        json_bool rtn = json_object_object_get_ex(param, "data", &data);
-        const char* _data = "";
-        if(rtn) {
-            _data = json_object_to_json_string(data);
+        const char *replyto = nullptr;
+        if(json_object_object_get_ex(param, _replyto, &replyid))
+            replyto = json_object_get_string(replyid);
+        if(replyto == nullptr) {
+            HMI_DEBUG(APP_ID, "received replyto is null!");
+            return;
         }
 
-        m_dspreq = QString(_replyid);
+        struct json_object *display_area;
+        const char *area = nullptr;
+        if(json_object_object_get_ex(param, _area, &display_area))
+            area = json_object_get_string(display_area);
+
+        struct json_object *param_data;
+        const char* data = nullptr;
+        if(json_object_object_get_ex(param, _data, &param_data))
+            data = json_object_to_json_string(param_data);
+
+        m_dspreq = QString(replyto);
         if(m_req.contains(m_dspreq)) {
-            m_req[m_dspreq] = qMakePair(QString(_path), QString(_data));
+            m_req[m_dspreq] = qMakePair(QString(file), QString(data));
         }
         else
-            m_req.insert(QString(m_dspreq), qMakePair(QString(_path), QString(_data)));
+            m_req.insert(QString(m_dspreq), qMakePair(QString(file), QString(data)));
+
+        if(area == nullptr)
+            this->activateWindow(ROLE_NAME);
+        else
+            this->activateWindow(ROLE_NAME, area);
 
-        this->mp_wm->activateWindow(ROLE_NAME);
         HMI_DEBUG(APP_ID, "received showWindow event, end!, line=%d", __LINE__);
     });
 
     mp_hs->set_event_handler(LibHomeScreen::Event_HideWindow, [this](json_object *object){
         struct json_object *value;
-        json_object_object_get_ex(object, "application_id", &value);
+        json_object_object_get_ex(object, _application_id, &value);
         const char *appid = json_object_get_string(value);
+        HMI_DEBUG(APP_ID, "request release onScreen application is %s!", appid);
 
-        HMI_DEBUG(APP_ID, "release onScreen is %s!", appid);
-
-        if (appid == my_id) {
-            emit this->signalLoader(QVariant(""));
-            this->mp_wm->deactivateWindow(ROLE_NAME);
-        }
-        else {
-            HMI_DEBUG(APP_ID, "!!!!releaseOnScreen is not displaying!!!!!");
-        }
+        // onscreenapp only can release by application which request show
+        if (appid == m_dspreq)
+            this->deactivateWindow();
+        else
+            HMI_DEBUG(APP_ID, "request hideWindow application isn't request displaying application, m_dspreq=%s", m_dspreq.toStdString().c_str());
     });
 
     if (mp_wm->requestSurface(ROLE_NAME) != 0) {
@@ -134,7 +156,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_Visible kKeyDrawingName = %s", name);
@@ -142,7 +164,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_Invisible kKeyDrawingName = %s", name);
@@ -151,48 +173,44 @@ void EventHandler::init(int port, const char *token)
     HMI_DEBUG(APP_ID, "LayoutHander::init() finished.");
 }
 
-void EventHandler::setQuickWindow(QQuickWindow *qw)
-{
-    mp_qw = qw;
-}
-
 void EventHandler::onRep_static(struct json_object* reply_contents)
 {
     static_cast<EventHandler*>(EventHandler::myThis)->onRep(reply_contents);
 }
+
 void EventHandler::onRep(struct json_object* reply_contents)
 {
     const char* str = json_object_to_json_string(reply_contents);
     HMI_DEBUG(APP_ID, "EventHandler::onReply %s", str);
 }
 
-void EventHandler::activateWindow(QString &role)
+void EventHandler::activateWindow(const char *role, const char *area)
 {
     HMI_DEBUG(APP_ID, "EventHandler::activateWindow()");
-    mp_wm->activateWindow(role);
+    mp_wm->activateWindow(role, area);
 }
 
-void EventHandler::deactivateWindow(QString &role)
+void EventHandler::deactivateWindow()
 {
     HMI_DEBUG(APP_ID, "EventHandler::deactivateWindow()");
 
     emit this->signalLoader(QVariant(""));
-    mp_wm->deactivateWindow(role);
+    mp_wm->deactivateWindow(ROLE_NAME);
 }
 
-void EventHandler::onScreenReply(const QString &btn_name)
+void EventHandler::onScreenReply(const QString &btn_name, const QString &press_mode, const QString &press_state)
 {
     HMI_DEBUG(APP_ID, "EventHandler::onScreenReply()");
-    deactivateWindow(my_role);
+//    deactivateWindow();
 
     struct json_object* j_obj = json_object_new_object();
-    json_object_object_add(j_obj, "application_id", json_object_new_string(m_dspreq.toLatin1()));
+    json_object_object_add(j_obj, _application_id, json_object_new_string(m_dspreq.toLatin1()));
 
     struct json_object* j_param = json_object_new_object();
-    json_object_object_add(j_param, "method", json_object_new_string("Buttons.ButtonPress"));
-    json_object_object_add(j_param, "buttonName", json_object_new_string(btn_name.toStdString().c_str()));
-    json_object_object_add(j_param, "buttonPressMode", json_object_new_string("Short"));
-    json_object_object_add(j_obj, "parameter", j_param);
+    json_object_object_add(j_param, _button_name, json_object_new_string(btn_name.toStdString().c_str()));
+    json_object_object_add(j_param, _button_press_mode, json_object_new_string(press_mode.toStdString().c_str()));
+    json_object_object_add(j_param, _button_press_state, json_object_new_string(press_state.toStdString().c_str()));
+    json_object_object_add(j_obj, _parameter, j_param);
 
     mp_hs->replyShowWindow(m_dspreq.toLatin1(), j_obj);
 }
index 58f694d..612e3de 100644 (file)
 #include <QVariant>
 #include <QPair>
 #include <QMap>
-
 #include <libhomescreen.hpp>
 #include <qlibwindowmanager.h>
 #include "hmi-debug.h"
 
-#define ROLE_NAME "on_screen.app"
+#define ROLE_NAME "on_screen"
 #define APP_ID "onscreenapp"
 
-class QQuickWindow;
+class QQmlApplicationEngine;
 
 class EventHandler : public QObject
 {
@@ -38,34 +37,29 @@ class EventHandler : public QObject
 public:
     explicit EventHandler(QObject *parent = 0);
     ~EventHandler();
+    EventHandler(const EventHandler&) = delete;
+    EventHandler& operator=(const EventHandler&) = delete;
 
     void init(int port, const char* token);
-    void setQuickWindow(QQuickWindow *qw);
-
     void onRep(struct json_object* reply_contents);
 
     static void* myThis;
     static void onRep_static(struct json_object* reply_contents);
 
-    void activateWindow(QString &role);
-    Q_INVOKABLE void deactivateWindow(QString &role);
-    Q_INVOKABLE void onScreenReply(const QString &btn_name);
+    void activateWindow(const char *role, const char *area = "normal");
+    Q_INVOKABLE void deactivateWindow();
+    Q_INVOKABLE void onScreenReply(const QString &btn_name,
+                                   const QString &press_mode = QString("shortPress"),
+                                   const QString &press_state = QString("release"));
 
 signals:
     void signalLoader(QVariant url);
     void signalOnScreenParameter(QVariant text);
 
 private:
-
     LibHomeScreen *mp_hs;
     QLibWindowmanager* mp_wm;
-
-    QQuickWindow *mp_qw;
-
     QMap<QString, QPair<QString, QString>> m_req;
     QString m_dspreq;
-    QString my_id;
-    QString my_role;
 };
-
 #endif // HOMESCREENHANDLER_H
index ea727c6..67a6e9e 100644 (file)
 
 #include <QGuiApplication>
 #include <QCommandLineParser>
-#include <QtGui/QBitmap>
 #include <QtGui/QGuiApplication>
 #include <QtQml/QQmlApplicationEngine>
 #include <QtQml/QQmlContext>
-#include <QtQml/qqml.h>
 #include <QQuickWindow>
 #include <QtQuickControls2/QQuickStyle>
 
 #include "eventhandler.h"
 
-using namespace std;
-
-static EventHandler* eventHandler;
 
 int main(int argc, char *argv[])
 {
@@ -59,10 +54,9 @@ int main(int argc, char *argv[])
 
     HMI_DEBUG(APP_ID, "port = %d, token = %s", port, token.toStdString().c_str());
 
-    eventHandler = new EventHandler();
-    eventHandler->init(port, token.toStdString().c_str());
-
     QQmlApplicationEngine engine;
+    EventHandler *eventHandler = new EventHandler();
+    eventHandler->init(port, token.toStdString().c_str());
     engine.rootContext()->setContextProperty("eventHandler", eventHandler);
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
     if (engine.rootObjects().isEmpty()) {
@@ -72,13 +66,10 @@ int main(int argc, char *argv[])
 
     QObject *root = engine.rootObjects().first();
     QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
-
-    eventHandler->setQuickWindow(window);
     QObject::connect(eventHandler, SIGNAL(signalLoader(QVariant)), window, SLOT(qmlLoader(QVariant)));
     QObject::connect(eventHandler, SIGNAL(signalOnScreenParameter(QVariant)), window, SLOT(qmlOnScreenParameter(QVariant)));
 
     HMI_DEBUG(APP_ID, "Launched!");
-
     return app.exec();
 }
 
index d814166..7b151a3 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <widget xmlns="http://www.w3.org/ns/widgets" id="onscreenapp" version="0.1">
-  <name>onscreenapp</name>
+  <name>OnScreenApp</name>
   <icon src="icon.svg"/>
   <content src="bin/onscreenapp" type="application/vnd.agl.native"/>
   <description>This is a demo OnScreen application</description>
index b4c75f3..22d0c89 100644 (file)
@@ -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
+
index b88bda4..34e7e3e 100644 (file)
 #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());
+}
index 61b519b..c601d0d 100644 (file)
@@ -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);
index 5e822f7..69642dc 100644 (file)
  * 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);
 
index ccce169..94de871 100644 (file)
@@ -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);
     }
 }
index faf285c..5a0c7d8 100644 (file)
@@ -13,6 +13,12 @@ copy_config.commands = $(COPY_FILE) \"$$replace(copy_config.depends, /, $$QMAKE_
 QMAKE_EXTRA_TARGETS += copy_config
 PRE_TARGETDEPS += $$copy_config.target
 
+copy_qml.target = $$OUT_PWD/root/qml/
+copy_qml.depends = $$_PRO_FILE_PWD_/qml/.
+copy_qml.commands = $(COPY_DIR) \"$$replace(copy_qml.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qml.target, /, $$QMAKE_DIR_SEP)\"
+QMAKE_EXTRA_TARGETS += copy_qml
+PRE_TARGETDEPS += $$copy_qml.target
+
 wgt.target = package
 wgt.commands = wgtpkg-pack -f -o onstestapp.wgt root
 
similarity index 98%
rename from sample/ons/msg.qml
rename to sample/package/qml/msg.qml
index d6adb97..f89ffa0 100644 (file)
@@ -9,6 +9,7 @@ Item {
     visible: true
     width: 1079
     height: 400
+    scale: screenInfo.scale_factor()
 
     function qmlOnScreenParameter(message) {
         console.log(qsTr('OnScreenVICS:QML:System >>> qmlOnScreenMessage.'), message);
similarity index 98%
rename from sample/ons/phone.qml
rename to sample/package/qml/phone.qml
index 3fc23ee..1b25ed3 100644 (file)
@@ -9,6 +9,7 @@ Item {
     visible: true
     width: 1079
     height: 400
+    scale: screenInfo.scale_factor()
     property string messageText: "Incoming Call"
 
     function qmlOnScreenParameter(message) {
similarity index 97%
rename from sample/ons/system.qml
rename to sample/package/qml/system.qml
index 8592698..d42eeb7 100644 (file)
@@ -9,6 +9,7 @@ Item {
     visible: true
     width: 1079
     height: 400
+    scale: screenInfo.scale_factor()
 
     function qmlOnScreenParameter(message) {
         console.log(qsTr('OnScreenSys:QML:System >>> qmlOnScreenMessage.'), message);
similarity index 96%
rename from sample/ons/vics.qml
rename to sample/package/qml/vics.qml
index 30d5cd1..2848fbc 100644 (file)
@@ -9,6 +9,7 @@ Item {
     visible: true
     width: 1079
     height: 400
+    scale: screenInfo.scale_factor()
 
     function qmlOnScreenParameter(message) {
         console.log(qsTr('OnScreenVICS:QML:System >>> qmlOnScreenMessage.'), message);
index ae6d0da..539f386 100644 (file)
@@ -8,7 +8,7 @@ A test application for onscreenapp
        - when onscreenapp is compiled, this app's wgt file will exist at "onscreenapp/sample/package", called onstestapp.wgt.
 
 - install
-:              `afm-util install onstestapp.wgt;sync`
+               `afm-util install onstestapp.wgt;sync`
 
 ## dependence