Neptune 3 UI - App Requests

An application request is a collective term used in Neptune 3 UI to describe an exchange of commands between apps. Application requests currently use two features in Qt Application Manager: OpenDocument interface and Intents in Neptune 3 UI apps.

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 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
    function 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

Intents in Neptune 3 UI apps

Qt Application Manager intents enable an app to communicate with another app or with System UI by sending a command and then waiting for a return value (information) in response.

The table below describes the set of intents (see Intents System UI and Applications Example documentation) provided by apps, as well as a generalized description of how an app reacts on an intent. For example, in the first row, the apps listed in "App" column react on activate-app intent by opening or rising an app window.

NameFunctionalityApp
activate-appopens or rises app window
  • com.luxoft.vehicle
  • com.pelagicore.apps.settings
  • com.pelagicore.calendar
  • com.pelagicore.downloads
  • com.pelagicore.map
  • com.pelagicore.music
  • com.pelagicore.phone
  • com.pelagicore.tuner
  • com.luxoft.alexa
set-next-accent-colorswitches to the next theme color
  • com.pelagicore.apps.settings
show-destinationopens map search for text query (parameter: destination: text address query)
  • com.pelagicore.map
music-commandswitches music tracks (parameter: musiccommand: prev/next)
  • com.pelagicore.music
call-supportinitiates call to neptune support service (for more information see Develop a Parking App)
  • com.pelagicore.phone
trigger-voiceassistantenables Alexa app to listen to commands
  • com.luxoft.alexa
vehicle-controloperates vehicle's doors, trunk and sun roof. This intent requires 3 parameters:
  • action: open/close
  • side: left/right
  • part: trunk/sunroof/door
  • com.luxoft.vehicle

Current Use-Cases in Neptune 3 UI

Media apps

All media apps (Radio, Web Radio, Music) are connected to each other using requests. To try it, navigate to either Music, Radio or WebRadio app and press "sources" in the toolbar menu on the left. A popup with all available music sources will open. Tapping on any of those sources will direct you to the respective media app.

Vehicle Settings

There is a list with 'charging station' suggestions in the energy panel. If any of those is pressed, the maps app will open and load the address of a selected charging station.

© 2019 Luxoft Sweden AB. 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.