X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2Fapplicationlauncher.cpp;h=917ecafa8dae4e61ac4034cfdbbecec40ef05d05;hb=refs%2Fheads%2Fsandbox%2Fmvlad%2Fagl-compositor-old;hp=7b825bb6fc4a41c66d87f0685dc034fd01663fab;hpb=0592a405aa68f3baf6773795efa5522e4ee16779;p=apps%2Fhomescreen.git diff --git a/homescreen/src/applicationlauncher.cpp b/homescreen/src/applicationlauncher.cpp index 7b825bb..917ecaf 100644 --- a/homescreen/src/applicationlauncher.cpp +++ b/homescreen/src/applicationlauncher.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2016 The Qt Company Ltd. * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,38 +18,71 @@ #include "applicationlauncher.h" -#include +#include "hmi-debug.h" -ApplicationLauncher::ApplicationLauncher(QObject *parent) - : QObject(parent), - mp_dBusAppFrameworkProxy() +ApplicationLauncher::ApplicationLauncher(const QString &conn_str, QObject *parent) + : QObject(parent) + , m_launching(false) + , m_timeout(new QTimer(this)) { - qDebug("D-Bus: connect to org.agl.homescreenappframeworkbinder /AppFramework"); - mp_dBusAppFrameworkProxy = new org::agl::appframework("org.agl.homescreenappframeworkbinder", - "/AppFramework", - QDBusConnection::sessionBus(), - 0); -} + m_timeout->setInterval(3000); + m_timeout->setSingleShot(true); + connect(m_timeout, &QTimer::timeout, [&]() { + setLaunching(false); + }); + connect(this, &ApplicationLauncher::launchingChanged, [&](bool launching) { + if (launching) + m_timeout->start(); + else + m_timeout->stop(); + }); + connect(this, &ApplicationLauncher::currentChanged, [&]() { + setLaunching(false); + }); -ApplicationLauncher::~ApplicationLauncher() -{ - delete mp_dBusAppFrameworkProxy; + m_launching = false; + m_launcher = new Launcher(conn_str, parent); + + if (m_launcher->setup_pws_connection() != 0) + HMI_DEBUG("HomeScreen","ApplicationLauncher failed to set-up connection to afm-system-daemon"); } int ApplicationLauncher::launch(const QString &application) { int result = -1; - qDebug() << "launch" << application; + HMI_DEBUG("HomeScreen","ApplicationLauncher launch %s.", application.toStdString().c_str()); + + fprintf(stdout, "ApplicationLauncher::launch with %s\n", application.toStdString().c_str()); + if (m_launcher->connection_is_set()) + result = m_launcher->start(application); - result = mp_dBusAppFrameworkProxy->launchApp(application); - qDebug() << "pid:" << result; + HMI_DEBUG("HomeScreen","ApplicationLauncher pid: %d.", result); if (result > 1) { - setCurrent(application); + setLaunching(true); } + return result; } +bool ApplicationLauncher::is_running(const QString &application) +{ + if (m_launcher->connection_is_set()) + return m_launcher->is_running(application); +} + +bool ApplicationLauncher::isLaunching() const +{ + return m_launching; +} + +void ApplicationLauncher::setLaunching(bool launching) +{ + if (m_launching == launching) return; + m_launching = launching; + launchingChanged(launching); +} + QString ApplicationLauncher::current() const { return m_current;