diff options
Diffstat (limited to 'HomeScreenAppFrameworkBinderTizen/src')
3 files changed, 203 insertions, 0 deletions
diff --git a/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.cpp b/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.cpp new file mode 100644 index 0000000..9e8dbba --- /dev/null +++ b/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.cpp @@ -0,0 +1,109 @@ +/* + * 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. + */ + +#include "homescreenappframeworkbindertizen.h" + + +HomeScreenAppFrameworkBinderTizen::HomeScreenAppFrameworkBinderTizen(QObject *parent) : + QObject(parent), + mp_appframeworkAdaptor(0) +{ + qDebug("D-Bus: register as org.agl.homescreenappframeworkbindertizen"); + + m_apps.clear(); + + // publish app framework interface + mp_appframeworkAdaptor = new AppframeworkAdaptor((QObject*)this); + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/AppFramework", this); + dbus.registerService("org.agl.homescreenappframeworkbindertizen"); + +#ifdef __arm__ + pkgmgrinfo_pkginfo_get_list(HomeScreenAppFrameworkBinderTizen::pkg_list_cb_static, this); + //list_pkgs(this); +#endif +#ifdef __i386__ + // for the simulation + AppInfo ai; + ai.setName("org.test.app1"); + ai.setDescription("testdesc1"); + ai.setIconPath("https://www.automotivelinux.org/sites/cpstandard/files/logo.png"); + m_apps.append(ai); + ai.setName("org.test.app2"); + ai.setDescription("testdesc2"); + m_apps.append(ai); +#endif +} + +HomeScreenAppFrameworkBinderTizen::~HomeScreenAppFrameworkBinderTizen() +{ + delete mp_appframeworkAdaptor; +} + +QStringList HomeScreenAppFrameworkBinderTizen::getAvailableAppNames() +{ + QStringList result; + for (int i = 0; i < m_apps.size(); ++i) + { + result.append(m_apps.at(i).getName()); + } + qDebug("size: %d", result.size()); + return result; +} + +int HomeScreenAppFrameworkBinderTizen::launchApp(const QString &name) +{ + int pid = -1; +#ifdef __arm__ + qDebug("launchApp name: %s", name.toStdString().c_str()); + pid = aul_launch_app(name.toStdString().c_str(), 0); + qDebug("launchApp pid: %d", pid); +#endif +#ifdef __i386__ + qDebug("launchApp name: %s", name.toStdString().c_str()); +#endif + + return pid; +} + +void HomeScreenAppFrameworkBinderTizen::clearAppList() +{ + m_apps.clear(); +} + +void HomeScreenAppFrameworkBinderTizen::appendAppName(const char* name) +{ + AppInfo newApp; + newApp.setName(QString(name)); + m_apps.append(newApp); +} + +#ifdef __arm__ +void HomeScreenAppFrameworkBinderTizen::pkg_list_cb_non_static(pkgmgrinfo_pkginfo_h handle) +{ + qDebug("pkg_list_cb_non_static"); + char *pkgid2 = NULL; + pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid2); + printf("pkg_list_cb_non_static: %s\n", pkgid2); + appendAppName(pkgid2); +} + +int HomeScreenAppFrameworkBinderTizen::pkg_list_cb_static(pkgmgrinfo_pkginfo_h handle, void *user_data) +{ + qDebug("pkg_list_cb_static"); + static_cast<HomeScreenAppFrameworkBinderTizen*>(user_data)->pkg_list_cb_non_static(handle); +} +#endif diff --git a/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.h b/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.h new file mode 100644 index 0000000..1d48f7a --- /dev/null +++ b/HomeScreenAppFrameworkBinderTizen/src/homescreenappframeworkbindertizen.h @@ -0,0 +1,59 @@ +/* + * 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 HOMESCREENAPPFRAMEWORKBINDERTIZEN_H +#define HOMESCREENAPPFRAMEWORKBINDERTIZEN_H + +#include <QObject> +#include <include/appframework.hpp> +#include "appframework_adapter.h" + +#ifdef __arm__ +extern "C" { +#include "aul/aul.h" +#include "pkgmgr-info.h" +} +#endif + +class HomeScreenAppFrameworkBinderTizen : public QObject +{ + Q_OBJECT +public: + explicit HomeScreenAppFrameworkBinderTizen(QObject *parent = 0); + ~HomeScreenAppFrameworkBinderTizen(); +private: + AppframeworkAdaptor *mp_appframeworkAdaptor; + QList<AppInfo> m_apps; + + //from appframework_adapter.h +public Q_SLOTS: // METHODS + QStringList getAvailableAppNames(); + int launchApp(const QString &name); + +public: + void clearAppList(); + void appendAppName(const char* name); + +#ifdef __arm__ + void pkg_list_cb_non_static(pkgmgrinfo_pkginfo_h handle); + static int pkg_list_cb_static(pkgmgrinfo_pkginfo_h handle, void *user_data); +#endif + +public slots: + +}; + +#endif // HOMESCREENAPPFRAMEWORKBINDERTIZEN_H diff --git a/HomeScreenAppFrameworkBinderTizen/src/main.cpp b/HomeScreenAppFrameworkBinderTizen/src/main.cpp new file mode 100644 index 0000000..2f7d3a8 --- /dev/null +++ b/HomeScreenAppFrameworkBinderTizen/src/main.cpp @@ -0,0 +1,35 @@ +/* + * 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. + */ + +#include <QCoreApplication> +#include "homescreenappframeworkbindertizen.h" + +int main(int argc, char *argv[]) +{ + AppInfo::registerMetaType(); + + QCoreApplication a(argc, argv); + + // used for application settings (QSettings) + QCoreApplication::setOrganizationDomain("LinuxFoundation"); + QCoreApplication::setOrganizationName("AutomotiveGradeLinux"); + QCoreApplication::setApplicationName("HomeScreenAppFrameworkBinderTizen"); + QCoreApplication::setApplicationVersion("0.2.0"); + + HomeScreenAppFrameworkBinderTizen *tdp = new HomeScreenAppFrameworkBinderTizen(); + + return a.exec(); +} |