Neptune 3 UI - Application Development

When you are developing an application for Neptune 3 UI, you must follow these rules:

It is important to follow all the defined rules in order for the application to become available in the system.

Manifest File

The manifest file must have the name info.yaml. The manifest file content should be as follows:

formatVersion: 1
formatType: am-application
---
id:      'com.pelagicore.temp'
icon:    'icon.png'
code:    'Main.qml'
runtime: 'qml'
name:
  en: 'Template'

categories: [ 'app' ]

For any additional information about the manifest file, please refer to Qt Application Manager Manifest File.

Application Root QML Element

The following table defines the application root QML elements that should be used when developing applications:

Root elementDescription
PrimaryWindowCan be used in all kind of applications.
SecondaryWindowCan be used in all kind of applications to show content in the instrument cluster.

The following QML code demonstrates how to use PrimaryWindow as a root element:

import QtQuick 2.10
import controls 1.0
import utils 1.0

PrimaryWindow {
    id: root
    Background {
        anchors.fill: parent
    }
    Content {
        x: root.exposedRect.x
        y: root.exposedRect.x
        width: root.exposedRect.width
        height: root.exposedRect.height
    }

}

Interfaces

You can use the following interfaces in application development:

InterfaceDescription
NotificationInterfaceProvides an interface for requesting notifications. It uses the Notification component and is based on the org.freedesktop.Notifications D-Bus interface.
ApplicationRequestHandlerProvides an interface to support the application request concept in Neptune 3 to communicate between application within Neptune 3

Click here to see more details about available components and interfaces in Neptune 3 UI.

Best Practices

When you are developing an automotive UI application with Qt Automotive Suite, it is recommended to follow the best practices:

  • Implement each visual part of the application (for example the application screen) in a separate, independent component.
  • Load UI components and a backend on demand when they are not visible or not needed in the device startup.
  • Separate the application logic from the visual UI components. Use models to store methods, properties, and a backend connection.

If you need to monitor an application startup performance, read the log output. The log title must have an application ID. The log content should be as follows:

== STARTUP TIMING REPORT: com.pelagicore.temp ==
0'020.000 entered main
0'115.359 after logging and qml register initialization
0'120.385 after application config initialization
0'127.403 after quick launch qml initialization
0'176.884 after application interface initialization
0'176.889 after dbus initialization
0'191.890 starting application
0'192.046 after loading plugins and import paths
0'974.908 after engine loading main qml file
0'974.914 after creating and setting application window
0'974.949 after showing application window
0'974.996 component loading and creating complete.

Note: The log output is available only in a multi-process mode when you have set the AM_STARTUP_TIMER value to 1.

You can add checkpoints to your QML code. The following example demonstrates how you can add a checkpoint to the application QML code when a plugin is loaded:

StartupTimer.checkpoint("plugin xxx loaded");
StartupTimer.createReport("Plugin xxx report");

© 2018 Pelagicore AG. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.