Initial source commit
[apps/homescreen.git] / homescreen / src / applicationlauncher.cpp
1 /*
2  * Copyright (C) 2016 The Qt Company Ltd.
3  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #include "applicationlauncher.h"
19
20 #include <QtCore/QDebug>
21
22 ApplicationLauncher::ApplicationLauncher(QObject *parent)
23     : QObject(parent),
24     mp_dBusAppFrameworkProxy()
25 {
26     qDebug("D-Bus: connect to org.agl.homescreenappframeworkbinder /AppFramework");
27     mp_dBusAppFrameworkProxy = new org::agl::appframework("org.agl.homescreenappframeworkbinder",
28                                               "/AppFramework",
29                                               QDBusConnection::sessionBus(),
30                                               0);
31 }
32
33 ApplicationLauncher::~ApplicationLauncher()
34 {
35     delete mp_dBusAppFrameworkProxy;
36 }
37
38 int ApplicationLauncher::launch(const QString &application)
39 {
40     int result = -1;
41     qDebug() << "launch" << application;
42
43     result = mp_dBusAppFrameworkProxy->launchApp(application);
44     qDebug() << "pid:" << result;
45
46     if (result > 1) {
47         setCurrent(application);
48     }
49     return result;
50 }
51
52 QString ApplicationLauncher::current() const
53 {
54     return m_current;
55 }
56
57 void ApplicationLauncher::setCurrent(const QString &current)
58 {
59     if (m_current == current) return;
60     m_current = current;
61     emit currentChanged(current);
62 }