summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt49
-rw-r--r--applauncher/AppLauncherClient.cpp41
-rw-r--r--applauncher/AppLauncherClient.h36
-rw-r--r--applauncher/AppLauncherGrpcClient.cpp113
-rw-r--r--applauncher/AppLauncherGrpcClient.h55
-rw-r--r--applauncher/meson.build56
-rw-r--r--applauncher/protos/applauncher.proto50
-rw-r--r--bluetooth/CMakeLists.txt19
-rw-r--r--bluetooth/qtappfw-bt.pc.in12
-rw-r--r--hvac/CMakeLists.txt19
-rw-r--r--hvac/qtappfw-hvac.pc.in12
-rw-r--r--map/CMakeLists.txt19
-rw-r--r--map/qtappfw-bt-map.pc.in12
-rw-r--r--mediaplayer/CMakeLists.txt24
-rw-r--r--mediaplayer/MpdEventHandler.h1
-rw-r--r--mediaplayer/qtappfw-mediaplayer.pc.in12
-rw-r--r--navigation/CMakeLists.txt19
-rw-r--r--navigation/qtappfw-navigation.pc.in12
-rw-r--r--network/CMakeLists.txt26
-rw-r--r--network/qtappfw-network.pc.in12
-rw-r--r--pbap/CMakeLists.txt19
-rw-r--r--pbap/qtappfw-bt-pbap.pc.in12
-rw-r--r--radio/CMakeLists.txt19
-rw-r--r--radio/qtappfw-radio.pc.in12
-rw-r--r--telephony/CMakeLists.txt20
-rw-r--r--telephony/qtappfw-phone.pc.in12
-rw-r--r--vehicle-signals/CMakeLists.txt19
-rw-r--r--vehicle-signals/qtappfw-vehicle-signals.pc.in12
-rw-r--r--weather/CMakeLists.txt19
-rw-r--r--weather/qtappfw-weather.pc.in12
30 files changed, 352 insertions, 403 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index a4def83..0000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-cmake_minimum_required(VERSION 3.7.2)
-project(qtappfw VERSION 1.0.0 LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-
-set(OE_QMAKE_PATH_EXTERNAL_HOST_BINS $ENV{OE_QMAKE_PATH_HOST_BINS})
-
-find_package(Qt5Qml REQUIRED)
-find_package(Qt5WebSockets REQUIRED)
-
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(glib REQUIRED IMPORTED_TARGET glib-2.0)
-pkg_check_modules(bluez_glib REQUIRED IMPORTED_TARGET bluez-glib)
-pkg_check_modules(connman_glib REQUIRED IMPORTED_TARGET connman-glib)
-pkg_check_modules(libmpdclient REQUIRED IMPORTED_TARGET libmpdclient)
-
-include(GNUInstallDirs)
-
-set(DEST_DIR "${CMAKE_INSTALL_PREFIX}")
-set(PRIVATE_LIBS "${PRIVATE_LIBS} -lqtappfw-bt
- -lqtappfw-hvac
- -lqtappfw-mediaplayer
- -lqtappfw-map
- -lqtappfw-navigation
- -lqtappfw-network
- -lqtappfw-pbap
- -lqtappfw-radio
- -lqtappfw-telephony
- -lqtappfw-vehicle-signals
- -lqtappfw-weather")
-
-set (SUBDIRS
- docs
- bluetooth
- hvac
- map
- mediaplayer
- navigation
- network
- pbap
- radio
- telephony
- vehicle-signals
- weather)
-
-foreach(subdir ${SUBDIRS})
- add_subdirectory(${subdir})
-endforeach()
diff --git a/applauncher/AppLauncherClient.cpp b/applauncher/AppLauncherClient.cpp
new file mode 100644
index 0000000..bbbcef3
--- /dev/null
+++ b/applauncher/AppLauncherClient.cpp
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: Apache-2.0
+/*
+ * Copyright (C) 2022 Konsulko Group
+ */
+
+#include <QDebug>
+
+#include "AppLauncherClient.h"
+#include "AppLauncherGrpcClient.h"
+
+AppLauncherClient::AppLauncherClient(QObject *parent) : QObject(parent)
+{
+ m_launcher = new AppLauncherGrpcClient(this);
+}
+
+AppLauncherClient::~AppLauncherClient()
+{
+ delete m_launcher;
+}
+
+bool AppLauncherClient::startApplication(const QString &id)
+{
+ if (m_launcher)
+ return m_launcher->StartApplication(id);
+
+ return false;
+}
+
+bool AppLauncherClient::listApplications(QList<QMap<QString, QString>> &list)
+{
+ if (!m_launcher) {
+ return false;
+ }
+
+ return m_launcher->ListApplications(list);
+}
+
+void AppLauncherClient::sendStatusEvent(const QString &id, const QString &status)
+{
+ emit appStatusEvent(id, status);
+}
diff --git a/applauncher/AppLauncherClient.h b/applauncher/AppLauncherClient.h
new file mode 100644
index 0000000..91723ab
--- /dev/null
+++ b/applauncher/AppLauncherClient.h
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: Apache-2.0
+/*
+ * Copyright (C) 2022 Konsulko Group
+ */
+
+#ifndef APPLAUNCHER_CLIENT_H
+#define APPLAUNCHER_CLIENT_H
+
+#include <QObject>
+#include <QList>
+#include <QMap>
+
+class AppLauncherGrpcClient;
+
+class AppLauncherClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit AppLauncherClient(QObject *parent = Q_NULLPTR);
+ virtual ~AppLauncherClient();
+
+ Q_INVOKABLE bool startApplication(const QString &id);
+ Q_INVOKABLE bool listApplications(QList<QMap<QString, QString>> &list);
+
+public slots:
+ void sendStatusEvent(const QString &id, const QString &status);
+
+signals:
+ void appStatusEvent(const QString &id, const QString &status);
+
+private:
+ AppLauncherGrpcClient *m_launcher;
+};
+
+#endif // APPLAUNCHER_CLIENT_H
diff --git a/applauncher/AppLauncherGrpcClient.cpp b/applauncher/AppLauncherGrpcClient.cpp
new file mode 100644
index 0000000..a25b148
--- /dev/null
+++ b/applauncher/AppLauncherGrpcClient.cpp
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: Apache-2.0
+/*
+ * Copyright (C) 2022 Konsulko Group
+ */
+
+#include <QDebug>
+#include "AppLauncherGrpcClient.h"
+#include "AppLauncherClient.h"
+
+using grpc::Channel;
+using grpc::ClientContext;
+using grpc::ClientReader;
+using grpc::Status;
+
+using automotivegradelinux::AppLauncher;
+using automotivegradelinux::StartRequest;
+using automotivegradelinux::StartResponse;
+using automotivegradelinux::ListRequest;
+using automotivegradelinux::ListResponse;
+using automotivegradelinux::AppInfo;
+using automotivegradelinux::StatusRequest;
+using automotivegradelinux::StatusResponse;
+using automotivegradelinux::AppStatus;
+
+
+void AppStatusEventReader::GetStatusEvents()
+{
+ ClientContext context;
+ StatusRequest request;
+ StatusResponse response;
+
+ std::unique_ptr<ClientReader<StatusResponse> > reader(stub_->GetStatusEvents(&context, request));
+ while (reader->Read(&response)) {
+ if (response.has_app()) {
+ AppStatus app_status = response.app();
+ emit statusUpdate(QString::fromStdString(app_status.id()),
+ QString::fromStdString(app_status.status()));
+ }
+ }
+ Status status = reader->Finish();
+ if (!status.ok()) {
+ qWarning() << "GetStatusEvents RPC failed";
+ }
+
+ emit finished();
+}
+
+AppLauncherGrpcClient::AppLauncherGrpcClient(QObject *parent) : QObject(parent)
+{
+ stub_ = AppLauncher::NewStub(grpc::CreateChannel("localhost:50052", grpc::InsecureChannelCredentials()));
+
+ // Create thread to read status events
+ AppStatusEventReader *reader = new AppStatusEventReader(stub_);
+ reader->moveToThread(&m_event_thread);
+ connect(&m_event_thread, &QThread::started, reader, &AppStatusEventReader::GetStatusEvents);
+ connect(reader, &AppStatusEventReader::finished, &m_event_thread, &QThread::quit);
+ // FIXME: Normally the thread finishing would be connected per the below
+ // to trigger cleaning up the object. That seems to trigger a crash
+ // for not entirely obvious reasons. It seems unrelated to the signal
+ // connection to AppLauncherClient, as not connecting does not prevent
+ // the crash; further investigation is required.
+ //connect(reader, &AppStatusEventReader::finished, reader, &AppStatusEventReader::deleteLater);
+ //connect(&m_event_thread, &QThread::finished, &m_event_thread, &QThread::deleteLater);
+
+ // To avoid having an intermediary slot+signal in this class, try
+ // casting parent to AppLauncherClient and connect directly to its
+ // slot. Callers should set parent to ensure this works as required.
+ if (parent) {
+ AppLauncherClient *launcher = qobject_cast<AppLauncherClient*>(parent);
+ if (launcher)
+ connect(reader,
+ &AppStatusEventReader::statusUpdate,
+ launcher,
+ &AppLauncherClient::sendStatusEvent);
+ }
+
+ // Start status event handling
+ m_event_thread.start();
+}
+
+bool AppLauncherGrpcClient::StartApplication(const QString &id)
+{
+ StartRequest request;
+ request.set_id(id.toStdString());
+
+ ClientContext context;
+ StartResponse response;
+ Status status = stub_->StartApplication(&context, request, &response);
+
+ return status.ok();
+}
+
+bool AppLauncherGrpcClient::ListApplications(QList<QMap<QString, QString>> &list)
+{
+ ListRequest request; // empty
+ ClientContext context;
+ ListResponse response;
+
+ Status status = stub_->ListApplications(&context, request, &response);
+ if (!status.ok())
+ return false;
+
+ for (int i = 0; i < response.apps_size(); i++) {
+ QMap<QString, QString> appinfo_map;
+ AppInfo appinfo = response.apps(i);
+ appinfo_map["id"] = QString::fromStdString(appinfo.id());
+ appinfo_map["name"] = QString::fromStdString(appinfo.name());
+ appinfo_map["icon_path"] = QString::fromStdString(appinfo.icon_path());
+ list.append(appinfo_map);
+ }
+
+ return true;
+}
diff --git a/applauncher/AppLauncherGrpcClient.h b/applauncher/AppLauncherGrpcClient.h
new file mode 100644
index 0000000..f9e1d0f
--- /dev/null
+++ b/applauncher/AppLauncherGrpcClient.h
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: Apache-2.0
+/*
+ * Copyright (C) 2022 Konsulko Group
+ */
+
+#ifndef APPLAUNCHER_GRPC_CLIENT_H
+#define APPLAUNCHER_GRPC_CLIENT_H
+
+#include <QObject>
+#include <QList>
+#include <QMap>
+#include <QThread>
+#include <grpcpp/grpcpp.h>
+
+#include "applauncher.grpc.pb.h"
+
+using grpc::Channel;
+
+class AppStatusEventReader : public QObject
+{
+ Q_OBJECT
+public:
+ AppStatusEventReader(std::shared_ptr<automotivegradelinux::AppLauncher::Stub> &stub,
+ QObject *parent = Q_NULLPTR) : QObject(parent), stub_(stub) {}
+
+public slots:
+ void GetStatusEvents();
+
+signals:
+ void statusUpdate(const QString &id, const QString &status);
+ void finished();
+
+private:
+ std::shared_ptr<automotivegradelinux::AppLauncher::Stub> stub_;
+};
+
+class AppLauncherGrpcClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ AppLauncherGrpcClient(QObject *parent = Q_NULLPTR);
+
+ bool StartApplication(const QString &id);
+
+ bool ListApplications(QList<QMap<QString, QString>> &list);
+
+private:
+ std::shared_ptr<automotivegradelinux::AppLauncher::Stub> stub_;
+
+ QThread m_event_thread;
+
+};
+
+#endif // APPLAUNCHER_GRPC_CLIENT_H
diff --git a/applauncher/meson.build b/applauncher/meson.build
new file mode 100644
index 0000000..b36184a
--- /dev/null
+++ b/applauncher/meson.build
@@ -0,0 +1,56 @@
+cpp = meson.get_compiler('cpp')
+grpcpp_reflection_dep = cpp.find_library('grpc++_reflection')
+
+qt5_dep = dependency('qt5', modules: ['Qml'])
+applauncher_dep = [
+ qt5_dep,
+ dependency('protobuf'),
+ dependency('grpc'),
+ dependency('grpc++'),
+ grpcpp_reflection_dep,
+]
+
+protoc = find_program('protoc')
+grpc_cpp = find_program('grpc_cpp_plugin')
+
+protoc_gen = generator(protoc, \
+ output : ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'],
+ arguments : ['--proto_path=@CURRENT_SOURCE_DIR@/protos',
+ '--cpp_out=@BUILD_DIR@',
+ '@INPUT@'])
+generated_protoc_sources = protoc_gen.process('protos/applauncher.proto')
+
+grpc_gen = generator(protoc, \
+ output : ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'],
+ arguments : ['--proto_path=@CURRENT_SOURCE_DIR@/protos',
+ '--grpc_out=@BUILD_DIR@',
+ '--plugin=protoc-gen-grpc=' + grpc_cpp.path(),
+ '@INPUT@'])
+generated_grpc_sources = grpc_gen.process('protos/applauncher.proto')
+
+moc_files = qt5.compile_moc(headers : ['AppLauncherClient.h', 'AppLauncherGrpcClient.h'],
+ dependencies: qt5_dep)
+
+src = [
+ 'AppLauncherClient.cpp',
+ 'AppLauncherGrpcClient.cpp',
+ generated_protoc_sources,
+ generated_grpc_sources,
+ moc_files
+]
+lib = shared_library('qtappfw-applauncher',
+ sources: src,
+ version: '1.0.0',
+ soversion: '0',
+ dependencies: applauncher_dep,
+ install: true)
+
+install_headers('AppLauncherClient.h')
+
+pkg_mod = import('pkgconfig')
+pkg_mod.generate(libraries : lib,
+ version : '1.0',
+ name : 'libqtappfw-applauncher',
+ filebase : 'qtappfw-applauncher',
+ requires: 'Qt5Qml',
+ description : 'Library wrapping AGL AppLauncher API in Qt objects')
diff --git a/applauncher/protos/applauncher.proto b/applauncher/protos/applauncher.proto
new file mode 100644
index 0000000..0b8e0fc
--- /dev/null
+++ b/applauncher/protos/applauncher.proto
@@ -0,0 +1,50 @@
+syntax = "proto3";
+
+package automotivegradelinux;
+
+service AppLauncher {
+ rpc StartApplication(StartRequest) returns (StartResponse) {}
+ rpc ListApplications(ListRequest) returns (ListResponse) {}
+ rpc GetStatusEvents(StatusRequest) returns (stream StatusResponse) {}
+}
+
+message StartRequest {
+ string id = 1;
+}
+
+message StartResponse {
+ bool status = 1;
+ string message = 2;
+}
+
+message ListRequest {
+}
+
+message ListResponse {
+ repeated AppInfo apps = 1;
+}
+
+message AppInfo {
+ string id = 1;
+ string name = 2;
+ string icon_path = 3;
+}
+
+message StatusRequest {
+}
+
+message AppStatus {
+ string id = 1;
+ string status = 2;
+}
+
+// Future-proofing for e.g. potentially signaling a list refresh
+message LauncherStatus {
+}
+
+message StatusResponse {
+ oneof status {
+ AppStatus app = 1;
+ LauncherStatus launcher = 2;
+ }
+}
diff --git a/bluetooth/CMakeLists.txt b/bluetooth/CMakeLists.txt
deleted file mode 100644
index 3137e3c..0000000
--- a/bluetooth/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-bt.pc.in" "qtappfw-bt.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-bt.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-bt SHARED bluetooth.cpp bluetoothmodel.cpp bluetootheventhandler.cpp)
-
-target_include_directories(qtappfw-bt PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-bt PRIVATE "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-bt Qt5::Qml PkgConfig::glib PkgConfig::bluez_glib)
-set_target_properties(qtappfw-bt PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER "bluetooth.h")
-
-install(TARGETS qtappfw-bt
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-bt)
diff --git a/bluetooth/qtappfw-bt.pc.in b/bluetooth/qtappfw-bt.pc.in
deleted file mode 100644
index d32e8ac..0000000
--- a/bluetooth/qtappfw-bt.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-bt
-Description: Library wrapping AGL AppFW bluetooth data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-bt
-Cflags: -I${includedir}/qtappfw-bt
diff --git a/hvac/CMakeLists.txt b/hvac/CMakeLists.txt
deleted file mode 100644
index ba62be7..0000000
--- a/hvac/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-hvac.pc.in" "qtappfw-hvac.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-hvac.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-hvac SHARED hvac.cpp)
-
-target_include_directories(qtappfw-hvac PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-hvac PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-hvac Qt5::Core qtappfw-vehicle-signals)
-set_target_properties(qtappfw-hvac PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER hvac.h)
-
-install(TARGETS qtappfw-hvac
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-hvac)
diff --git a/hvac/qtappfw-hvac.pc.in b/hvac/qtappfw-hvac.pc.in
deleted file mode 100644
index 60ce631..0000000
--- a/hvac/qtappfw-hvac.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-hvac
-Description: Library wrapping AGL AppFW hvac data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-hvac
-Cflags: -I${includedir}/qtappfw-hvac
diff --git a/map/CMakeLists.txt b/map/CMakeLists.txt
deleted file mode 100644
index 0a94e28..0000000
--- a/map/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-bt-map.pc.in" "qtappfw-bt-map.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-bt-map.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-bt-map SHARED map.cpp)
-
-target_include_directories(qtappfw-bt-map PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-bt-map PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-bt-map Qt5::Qml)
-set_target_properties(qtappfw-bt-map PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER map.h)
-
-install(TARGETS qtappfw-bt-map
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-bt-map)
diff --git a/map/qtappfw-bt-map.pc.in b/map/qtappfw-bt-map.pc.in
deleted file mode 100644
index d5e5dac..0000000
--- a/map/qtappfw-bt-map.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-bt-map
-Description: Library wrapping AGL AppFW bluetooth messaging data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-bt-map
-Cflags: -I${includedir}/qtappfw-bt-map
diff --git a/mediaplayer/CMakeLists.txt b/mediaplayer/CMakeLists.txt
deleted file mode 100644
index 35dda69..0000000
--- a/mediaplayer/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-mediaplayer.pc.in" "qtappfw-mediaplayer.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-mediaplayer.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-mediaplayer SHARED
- mediaplayer.cpp
- MediaplayerBackend.cpp
- MediaplayerMpdBackend.cpp
- MediaplayerBluezBackend.cpp
- MpdEventHandler.cpp)
-
-target_include_directories(qtappfw-mediaplayer PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-mediaplayer PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-mediaplayer qtappfw-bt Qt5::Qml PkgConfig::libmpdclient)
-set_target_properties(qtappfw-mediaplayer PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER mediaplayer.h)
-
-install(TARGETS qtappfw-mediaplayer
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-mediaplayer)
diff --git a/mediaplayer/MpdEventHandler.h b/mediaplayer/MpdEventHandler.h
index d51c373..3ce888e 100644
--- a/mediaplayer/MpdEventHandler.h
+++ b/mediaplayer/MpdEventHandler.h
@@ -18,6 +18,7 @@
#define MPD_EVENT_HANDLER_H
#include <QObject>
+#include <QVariant>
#include <mpd/client.h>
// Use a 60s timeout on our MPD connection
diff --git a/mediaplayer/qtappfw-mediaplayer.pc.in b/mediaplayer/qtappfw-mediaplayer.pc.in
deleted file mode 100644
index 933e9dc..0000000
--- a/mediaplayer/qtappfw-mediaplayer.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-mediaplayer
-Description: Library wrapping AGL AppFW mediaplayer data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-mediaplayer
-Cflags: -I${includedir}/qtappfw-mediaplayer
diff --git a/navigation/CMakeLists.txt b/navigation/CMakeLists.txt
deleted file mode 100644
index 9e0ee84..0000000
--- a/navigation/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-navigation.pc.in" "qtappfw-navigation.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-navigation.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-navigation SHARED navigation.cpp)
-
-target_include_directories(qtappfw-navigation PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-navigation PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-navigation Qt5::Qml qtappfw-vehicle-signals)
-set_target_properties(qtappfw-navigation PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER navigation.h)
-
-install(TARGETS qtappfw-navigation
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-navigation)
diff --git a/navigation/qtappfw-navigation.pc.in b/navigation/qtappfw-navigation.pc.in
deleted file mode 100644
index 8f1fa2c..0000000
--- a/navigation/qtappfw-navigation.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-navigation
-Description: Library wrapping AGL AppFW navigation data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-navigation
-Cflags: -I${includedir}/qtappfw-navigation
diff --git a/network/CMakeLists.txt b/network/CMakeLists.txt
deleted file mode 100644
index 6627a68..0000000
--- a/network/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-network.pc.in" "qtappfw-network.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-network.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-network SHARED network.cpp
- networkeventhandler.cpp
- wifiadapter.cpp
- wiredadapter.cpp
- wifinetworkmodel.cpp
- wirednetworkmodel.cpp
- abstractnetworkmodel.cpp
- connectionprofile.cpp)
-
-target_include_directories(qtappfw-network PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-network PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-network Qt5::Qml PkgConfig::glib PkgConfig::connman_glib)
-set_target_properties(qtappfw-network PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER "network.h;networkadapter.h;wifiadapter.h;wiredadapter.h")
-
-install(TARGETS qtappfw-network
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-network)
diff --git a/network/qtappfw-network.pc.in b/network/qtappfw-network.pc.in
deleted file mode 100644
index 50b34a0..0000000
--- a/network/qtappfw-network.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-network
-Description: Library wrapping AGL AppFW network data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-network
-Cflags: -I${includedir}/qtappfw-network
diff --git a/pbap/CMakeLists.txt b/pbap/CMakeLists.txt
deleted file mode 100644
index 480661a..0000000
--- a/pbap/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-bt-pbap.pc.in" "qtappfw-bt-pbap.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-bt-pbap.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-bt-pbap SHARED pbap.cpp)
-
-target_include_directories(qtappfw-bt-pbap PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-bt-pbap PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-bt-pbap Qt5::Qml)
-set_target_properties(qtappfw-bt-pbap PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER pbap.h)
-
-install(TARGETS qtappfw-bt-pbap
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-bt-pbap)
diff --git a/pbap/qtappfw-bt-pbap.pc.in b/pbap/qtappfw-bt-pbap.pc.in
deleted file mode 100644
index 2da9c53..0000000
--- a/pbap/qtappfw-bt-pbap.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-bt-pbap
-Description: Library wrapping AGL AppFW bluetooth pbap data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-bt-pbap
-Cflags: -I${includedir}/qtappfw-bt-pbap
diff --git a/radio/CMakeLists.txt b/radio/CMakeLists.txt
deleted file mode 100644
index 24666fb..0000000
--- a/radio/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-radio.pc.in" "qtappfw-radio.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-radio.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-radio SHARED radio.cpp)
-
-target_include_directories(qtappfw-radio PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-radio PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-radio Qt5::Qml)
-set_target_properties(qtappfw-radio PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER radio.h)
-
-install(TARGETS qtappfw-radio
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-radio)
diff --git a/radio/qtappfw-radio.pc.in b/radio/qtappfw-radio.pc.in
deleted file mode 100644
index 8f42e39..0000000
--- a/radio/qtappfw-radio.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-radio
-Description: Library wrapping AGL AppFW radio data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-radio
-Cflags: -I${includedir}/qtappfw-radio
diff --git a/telephony/CMakeLists.txt b/telephony/CMakeLists.txt
deleted file mode 100644
index 5bd81bc..0000000
--- a/telephony/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-phone.pc.in" "qtappfw-phone.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-phone.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-phone SHARED telephony.cpp)
-
-target_include_directories(qtappfw-phone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-phone PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-phone Qt5::Qml)
-set_target_properties(qtappfw-phone PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER telephony.h)
-
-install(TARGETS qtappfw-phone
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-phone)
-
diff --git a/telephony/qtappfw-phone.pc.in b/telephony/qtappfw-phone.pc.in
deleted file mode 100644
index 949542f..0000000
--- a/telephony/qtappfw-phone.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-phone
-Description: Library wrapping AGL AppFW phone data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-phone
-Cflags: -I${includedir}/qtappfw-phone
diff --git a/vehicle-signals/CMakeLists.txt b/vehicle-signals/CMakeLists.txt
deleted file mode 100644
index f7cbf71..0000000
--- a/vehicle-signals/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-vehicle-signals.pc.in" "qtappfw-vehicle-signals.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-vehicle-signals.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-vehicle-signals SHARED vehiclesignals.cpp)
-
-target_include_directories(qtappfw-vehicle-signals PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-vehicle-signals PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-vehicle-signals Qt5::Core Qt5::WebSockets)
-set_target_properties(qtappfw-vehicle-signals PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER vehiclesignals.h)
-
-install(TARGETS qtappfw-vehicle-signals
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-vehicle-signals)
diff --git a/vehicle-signals/qtappfw-vehicle-signals.pc.in b/vehicle-signals/qtappfw-vehicle-signals.pc.in
deleted file mode 100644
index 5afac39..0000000
--- a/vehicle-signals/qtappfw-vehicle-signals.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-vehicle-signals
-Description: Library providing VIS vehicle signal updates for Qt objects
-Version: 1.0.0
-
-Requires: Qt5Core Qt5WebSockets
-Libs: -L${libdir} -lqtappfw-vehicle-signals
-Cflags: -I${includedir}/qtappfw-vehicle-signals
diff --git a/weather/CMakeLists.txt b/weather/CMakeLists.txt
deleted file mode 100644
index b622262..0000000
--- a/weather/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-CONFIGURE_FILE("qtappfw-weather.pc.in" "qtappfw-weather.pc" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qtappfw-weather.pc
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-
-add_library(qtappfw-weather SHARED weather.cpp)
-
-target_include_directories(qtappfw-weather PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_include_directories(qtappfw-weather PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-
-target_link_libraries(qtappfw-weather Qt5::Qml)
-set_target_properties(qtappfw-weather PROPERTIES
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- PUBLIC_HEADER weather.h)
-
-install(TARGETS qtappfw-weather
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtappfw-weather)
diff --git a/weather/qtappfw-weather.pc.in b/weather/qtappfw-weather.pc.in
deleted file mode 100644
index 1e3e5e1..0000000
--- a/weather/qtappfw-weather.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: qtappfw-weather
-Description: Library wrapping AGL AppFW weather data in Qt objects
-Version: 1.0.0
-
-Requires: Qt5Qml
-Libs: -L${libdir} -lqtappfw-weather
-Cflags: -I${includedir}/qtappfw-weather