Neptune 3 UI - Application Requests

An application request is used to send a request to an application to just open or open in a certain state. That said, the action should be possible to be performed from wherever in the system.

Brief Demo

In the following examples, a request to 'open music app', and a request to 'open map app and navigate to some specific charging station' are demonstrated.

The following lines are added in the requested applications info.yaml files so that the ApplicationManager can identify those.

Music Player app, info.yaml:

mimeTypes: [ 'x-scheme-handler/x-radio' ]

Map app, info.yaml:

mimeTypes: [ 'x-scheme-handler/x-map' ]

And finally, randomly in the system, from wherever the request should be sent:

Button {
    id: openRadioApp
    onClicked: {
        Qt.openUrlExternally("x-radio://");
    }
}

Button {
    id: takeMeHome
    onClicked: {
        Qt.openUrlExternally("x-map://takemehome");
    }
}

In addition, for the Map Application, the following lines should be added in the application's store so that the url is processed as shown below, instructing the application to set the selected address and prepare for starting the navigation to it.

Connections {
    target: ApplicationInterface
    //handle here all specific app behavior
    onOpenDocument: {
        //process documentUrl "getmeto/Donald Weese Ct, Las Vegas"
    }
}

For the Music Application example, since it is only about opening the app, nothing has to be added in its store.

Detailed Design

An application could call the Qt.openUrlExternally() function passing as parameter the mime-type of the application that is intended to be opened, followed by the desired url indicating what the application should do when opening.

For that to be successful, the respective mime-types should be added accordingly to the application's info.yaml files (e.g., mimeTypes: [ 'x-scheme-handler/x-radio' ]). The ApplicationManager will then consult its internal database of applications looking for a match with x-scheme-handler/x-mimeType. If there is a successful match, the openUrlRequested signal will be emitted and its receiver (ApplicationRequestHandler) can then either acknowledge the request by calling acknowledgeOpenUrlRequest function or reject it (rejectOpenUrlRequest). If then the application is started, the url is supplied to the application as a document through the signal openDocument(string documentUrl, string mimeType) via its ApplicationInterface.

Brief diagram of what happens when ApplicationX requests to open ApplicationY

Brief diagram of what happens when a back key press is send

Current Use-Cases in Neptune 3 UI

Media Application

All media applications (Radio, Web Radio, Music Player) are connected to each other using requests. To try it, navigating to either Music Player, Radio and/or WebRadio app and press "sources" in the toolbar menu on the right side. A popup will open with all available music sources. Choosing any of those will direct you to the respective music application.

Vehicle Settings

In the energy panel is a list with 'charging station' suggestions. If any of those is pressed, the maps application will directly open, loading the selected charging station's address and ready to navigate there.

System Notifications

A ctrl+n press simulates a "Battery Low" event by triggering a system notification containing an action button. If the action button is pressed, the map application will directly open, loading the suggested charging station's address and ready to navigate there.

© 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.