diff options
author | 2016-11-08 19:46:21 +0100 | |
---|---|---|
committer | 2016-11-08 19:46:21 +0100 | |
commit | dd8c90f87463d370c3076e13b7c6cc0e27c0d2f5 (patch) | |
tree | f5ec587cfda6ea802ebf0a87ad0fca5712968d3d /interfaces | |
parent | d364a5eea428db2eadbb77f3e5da7b74dc36127f (diff) |
-Make the SampleNav app yellow.
-Preparation for the new ApplicationFramework binding. The App Framework provides more information.
--Adding afm D-Bus-interface introspection
--Updating the AppInfo datatype to hold the new data:
The application info consists of:
string id;
string version;
int width;
int height;
string name;
string description;
string shortname;
string author;
string iconPath;
-When pressing the AppLauncher Button or the Settings Button, the app layer is hidden.
--Therefore, shideLayer and showLayer is introduced in the WindowManager API
-If an application does not create its surface instantly, the HomeScreen retries to show the surface related to the pid.
-New WindowManager function deleteLayoutById
-Implement the complete HomeScreen API in the libhomescreen
Signed-off-by: Bocklage, Jens <Jens_Bocklage@mentor.com>
Diffstat (limited to 'interfaces')
-rw-r--r-- | interfaces/appframework.xml | 49 | ||||
-rw-r--r-- | interfaces/include/afm_user_daemon.hpp | 21 | ||||
-rw-r--r-- | interfaces/include/appframework.hpp | 40 | ||||
-rw-r--r-- | interfaces/include/windowmanager.hpp | 1 | ||||
-rw-r--r-- | interfaces/interfaces.pro | 1 | ||||
-rw-r--r-- | interfaces/src/appframework.cpp | 63 | ||||
-rw-r--r-- | interfaces/windowmanager.xml | 33 |
7 files changed, 145 insertions, 63 deletions
diff --git a/interfaces/appframework.xml b/interfaces/appframework.xml index 1324386..e2c088e 100644 --- a/interfaces/appframework.xml +++ b/interfaces/appframework.xml @@ -13,14 +13,45 @@ See the License for the specific language governing permissions and limitations under the License. --> <node> - <interface name="org.agl.appframework"> - <method name="getAvailableAppNames"> - <arg name="names" type="as" direction="out"/> - </method> - <method name="launchApp"> - <arg name="name" type="s" direction="in"/> - <arg name="pid" type="i" direction="out"/> - </method> - </interface> + <!-- + org.agl.appframework: + @short_description: The interface of the app framework binder. + + The app framework has to provide some basic functionality like + getting a list of applications and start them. In further versions, + also pausing or stopping, . + --> + <interface name="org.agl.appframework"> + <!-- + getAvailableApps: + @apps: A list of applications that can be launched. + + The application info consists of: + string id; + string version; + int width; + int height; + string name; + string description; + string shortname; + string author; + string iconPath; + --> + <method name="getAvailableApps"> + <arg name="apps" type="{ssiisssss}" direction="out"/> + <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList<AppInfo>"/> + </method> + <!-- + launchApp: + @name: The name of the application that shall be launched. + @pid: Returns the pid of the process. + + Use the id of the application info to launch the app. + --> + <method name="launchApp"> + <arg name="name" type="s" direction="in"/> + <arg name="pid" type="i" direction="out"/> + </method> + </interface> </node> diff --git a/interfaces/include/afm_user_daemon.hpp b/interfaces/include/afm_user_daemon.hpp new file mode 100644 index 0000000..256292b --- /dev/null +++ b/interfaces/include/afm_user_daemon.hpp @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2016 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. + */ + +#ifndef AFM_USER_DAEMON_HPP +#define AFM_USER_DAEMON_HPP + + +#endif // AFM_USER_DAEMON_HPP diff --git a/interfaces/include/appframework.hpp b/interfaces/include/appframework.hpp index d95cd9d..d4abefb 100644 --- a/interfaces/include/appframework.hpp +++ b/interfaces/include/appframework.hpp @@ -17,38 +17,32 @@ #ifndef APPFRAMEWORK_HPP #define APPFRAMEWORK_HPP -#include <QObject> #include <QtDBus> -#include <QString> -class AppInfo : public QObject +class AppInfo { - Q_OBJECT public: - explicit AppInfo(QObject *parent = 0); - AppInfo(const AppInfo &other); - AppInfo& operator=(const AppInfo &other); - ~AppInfo(); + AppInfo(); + virtual ~AppInfo(); - //register Message with the Qt type system - static void registerMetaType(); - - friend QDBusArgument &operator<<(QDBusArgument &argument, const AppInfo &appInfo); - friend const QDBusArgument &operator>>(const QDBusArgument &argument, AppInfo &appInfo); - - void setName(const QString name) {this->name = name;} - QString getName() const {return name;} - void setIconPath(const QString iconPath) {this->iconPath = iconPath;} - QString getIconPath() const {return iconPath;} - void setDescription(const QString description) {this->description = description;} - QString getDescription() const {return description;} - -private: + QString id; + QString version; + int width; + int height; QString name; - QString iconPath; QString description; + QString shortname; + QString author; + QString iconPath; + + void read(const QJsonObject &json); + + friend QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &mAppInfo); + friend const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &mAppInfo); }; + Q_DECLARE_METATYPE(AppInfo) +Q_DECLARE_METATYPE(QList<AppInfo>) #endif // APPFRAMEWORK_HPP diff --git a/interfaces/include/windowmanager.hpp b/interfaces/include/windowmanager.hpp index 45c7c6e..ebab2d7 100644 --- a/interfaces/include/windowmanager.hpp +++ b/interfaces/include/windowmanager.hpp @@ -24,6 +24,7 @@ #define WINDOWMANAGER_ERROR_NAME_ALREADY_DEFINED 2 #define WINDOWMANAGER_ERROR_ID_NOT_FOUND 3 #define WINDOWMANAGER_ERROR_NAME_NOT_FOUND 4 +#define WINDOWMANAGER_ERROR_ID_IN_USE 5 class SimplePoint { diff --git a/interfaces/interfaces.pro b/interfaces/interfaces.pro index bd3fa39..1dad460 100644 --- a/interfaces/interfaces.pro +++ b/interfaces/interfaces.pro @@ -28,6 +28,7 @@ SOURCES += src/appframework.cpp \ XMLSOURCES = \ appframework.xml \ + afm_user_daemon.xml \ daynightmode.xml \ homescreen.xml \ inputevent.xml \ diff --git a/interfaces/src/appframework.cpp b/interfaces/src/appframework.cpp index afd6114..40515d5 100644 --- a/interfaces/src/appframework.cpp +++ b/interfaces/src/appframework.cpp @@ -16,56 +16,57 @@ #include "include/appframework.hpp" -AppInfo::AppInfo(QObject *parent) : - QObject(parent) -{ -} - -AppInfo::AppInfo(const AppInfo &other) : - QObject(other.parent()), - name(other.getName()), - iconPath(other.getIconPath()), - description(other.getDescription()) -{ -} -AppInfo& AppInfo::operator=(const AppInfo &other) +AppInfo::AppInfo() { - setParent(other.parent()); - name = other.getName(); - iconPath = other.getIconPath(); - description = other.getDescription(); - - return *this; } AppInfo::~AppInfo() { } -void AppInfo::registerMetaType() +void AppInfo::read(const QJsonObject &json) { - qRegisterMetaType<AppInfo>("AppInfo"); - qDBusRegisterMetaType<AppInfo>(); + id = json["id"].toString(); + version = json["id"].toString(); + width = json["id"].toInt(); + height = json["id"].toInt(); + name = json["id"].toString(); + description = json["id"].toString(); + shortname = json["id"].toString(); + author = json["id"].toString(); + iconPath = json["id"].toString(); } - -// Marshall the MyStructure data into a D-Bus argument -QDBusArgument &operator<<(QDBusArgument &argument, const AppInfo &appInfo) +QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &mAppInfo) { argument.beginStructure(); - argument << appInfo.name << appInfo.iconPath << appInfo.description; + argument << mAppInfo.id; + argument << mAppInfo.version; + argument << mAppInfo.width; + argument << mAppInfo.height; + argument << mAppInfo.name; + argument << mAppInfo.description; + argument << mAppInfo.shortname; + argument << mAppInfo.author; + argument << mAppInfo.iconPath; argument.endStructure(); - qDebug("appInfo.name:<< %s", appInfo.name.toStdString().c_str()); + return argument; } -// Retrieve the MyStructure data from the D-Bus argument -const QDBusArgument &operator>>(const QDBusArgument &argument, AppInfo &appInfo) +const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &mAppInfo) { argument.beginStructure(); - argument >> appInfo.name >> appInfo.iconPath >> appInfo.description; + argument >> mAppInfo.id; + argument >> mAppInfo.version; + argument >> mAppInfo.width; + argument >> mAppInfo.height; + argument >> mAppInfo.name; + argument >> mAppInfo.description; + argument >> mAppInfo.shortname; + argument >> mAppInfo.author; + argument >> mAppInfo.iconPath; argument.endStructure(); - qDebug("appInfo.name:>> %s", appInfo.name.toStdString().c_str()); return argument; } diff --git a/interfaces/windowmanager.xml b/interfaces/windowmanager.xml index c15ca2c..a4be58f 100644 --- a/interfaces/windowmanager.xml +++ b/interfaces/windowmanager.xml @@ -40,6 +40,18 @@ </method> <!-- + deleteLayoutById: + @layoutId: The ID of the layout to delete. + @error: WINDOWMANAGER_NO_ERROR or the first error that occurred. + + Deletes the layout with the given ID. This cannot be the current active layout! + --> + <method name="deleteLayoutById"> + <arg name="layoutId" type="i" direction="in"/> + <arg name="error" type="i" direction="out"/> + </method> + + <!-- setLayoutById: @layoutId: The ID of the layout to activate. @error: WINDOWMANAGER_NO_ERROR or the first error that occurred. @@ -159,6 +171,27 @@ <arg name="surfaceIds" type="a(i)" direction="out"/> <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList<int>"/> </method> + + <!-- + showLayer: + @layer: The ID of the layer to show. POPUP=0, APPS=1, HOMESCREEN=2 + + Show complete layers. + By default, all layers are shown. + --> + <method name="showLayer"> + <arg name="layer" type="i" direction="in"/> + </method> + <!-- + hideLayer: + @layer: The ID of the layer to hide. POPUP=0, APPS=1, HOMESCREEN=2 + + Hide complete layers. + By default, all layers are shown. + --> + <method name="hideLayer"> + <arg name="layer" type="i" direction="in"/> + </method> </interface> </node> |