Initial source commit
[src/libhomescreen.git] / interfaces / homescreen.xml
diff --git a/interfaces/homescreen.xml b/interfaces/homescreen.xml
new file mode 100644 (file)
index 0000000..378ff54
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<!-- Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. -->
+<node>
+<!--
+  org.agl.homescreen:
+  @short_description: A generic interface for the HomeScreen app.
+
+  This interface is a collection of methods from different functional areas to control the HomeScreen app.
+-->
+       <interface name="org.agl.homescreen">
+               <!--
+               hardKeyPressed:
+               @key: The key that was pressed using the inputevent.hpp InputEvent::HardKey type.
+
+               This is used to inject hard keys into the HomeScreen app.
+               -->
+               <method name="hardKeyPressed">
+                       <arg name="key" type="i" direction="in"/>
+               </method>
+               <!--
+               getSurfaceStatus:
+               @surfaceId: The given surface.
+               @status: The status can be unknown (-1), visible (0), invisible (1)
+
+               A surface can have three states. It can be visible, then it is shown on the screen.
+               It can be invisible, then it is not shown on the screen. Or the state is unknown.
+               -->
+               <method name="getSurfaceStatus">
+                       <arg name="surfaceId" type="i" direction="in"/>
+                       <arg name="status" type="i" direction="out"/>
+               </method>
+               <!--
+               requestSurfaceIdToFullScreen:
+               @surfaceId: The surface that request to be shown fullscreen.
+
+               This allows an application to set a surface to full screen.
+               -->
+               <method name="requestSurfaceIdToFullScreen">
+                       <arg name="surfaceId" type="i" direction="in"/>
+               </method>
+               <!--
+                 getAllSurfacesOfProcess:
+                 @pid: The PID of the process.
+                 @surfaceIds: A list of surfaces that were created by the process.
+
+                 The surface IDs can for example be used to assign them to a layout render area.
+               -->
+               <method name="getAllSurfacesOfProcess">
+                       <arg name="pid" type="i" direction="in"/>
+                       <arg name="surfaceIds" type="ai" direction="out"/>
+                       <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;int&gt;"/>
+               </method>
+               <!--
+               renderAppToAreaAllowed:
+               @appCategory: The application category that is requested. Use enum AppCategory for this!
+               @layoutArea: The layout area where the application shall be rendered. Find the layoutArea ids in the layout definition!
+               @allowed: Returns true, if the application is allowed to be rendered in the area
+
+               This function can be used to request, if it is allowed to render an application of a specific category
+               in a layout area. The idea is to decide from an application point of view to allocate recources or not.
+               Example: an application will decide to render video based on this call. This call will not change anything, it is only a request.
+               -->
+               <method name="renderAppToAreaAllowed">
+                       <arg name="appCategory" type="i" direction="in"/>
+                       <arg name="layoutArea" type="i" direction="in"/>
+                       <arg name="allowed" type="b" direction="out"/>
+               </method>
+               <!--
+               renderSurfaceToArea:
+               @surfaceId: The surface that is requested.
+               @layoutArea: The layout area where the surface shall be rendered. Find the layoutArea ids in the layout definition!
+
+               This is a special case. In the normal use case, one layout area is always filled completely
+               with the first surface, that the process creates (more precise: the surface with the lowest id).
+               By using this function, an app can request to position a different surface in the layout area.
+               -->
+               <method name="renderSurfaceToArea">
+                       <arg name="surfaceId" type="i" direction="in"/>
+                       <arg name="layoutArea" type="i" direction="in"/>
+               </method>
+               <!--
+                 surfaceVisibilityChanged:
+                 @surfaceId: The surface that changed.
+                 @visible: True, if the surface is visible.
+
+                 This is emitted when the visible property of the surfaces changes.
+               -->
+               <signal name="surfaceVisibilityChanged">
+                       <arg name="surfaceId" type="i"/>
+                       <arg name="visible" type="b"/>
+               </signal>
+       </interface>
+</node>
+