From 10add2092c0ef3609f94aa15fe55b456768cf881 Mon Sep 17 00:00:00 2001 From: heyuming Date: Mon, 10 Jul 2023 10:18:33 +0800 Subject: [PATCH] feat: init dbus service structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log: 初始化dbus服务结构 --- src/CMakeLists.txt | 25 ++++++--------- src/dbus/applicationmanager1service.cpp | 41 +++++++++++++++++++++++++ src/dbus/applicationmanager1service.h | 29 +++++++++++++++++ src/dbus/applicationservice.cpp | 18 +++++++++++ src/dbus/applicationservice.h | 22 +++++++++++++ src/dbus/instanceservice.cpp | 24 +++++++++++++++ src/dbus/instanceservice.h | 26 ++++++++++++++++ src/dbus/jobmanager1service.cpp | 12 ++++++++ src/dbus/jobmanager1service.h | 23 ++++++++++++++ src/dbus/jobservice.cpp | 33 ++++++++++++++++++++ src/dbus/jobservice.h | 27 ++++++++++++++++ 11 files changed, 265 insertions(+), 15 deletions(-) create mode 100644 src/dbus/applicationmanager1service.cpp create mode 100644 src/dbus/applicationmanager1service.h create mode 100644 src/dbus/applicationservice.cpp create mode 100644 src/dbus/applicationservice.h create mode 100644 src/dbus/instanceservice.cpp create mode 100644 src/dbus/instanceservice.h create mode 100644 src/dbus/jobmanager1service.cpp create mode 100644 src/dbus/jobmanager1service.h create mode 100644 src/dbus/jobservice.cpp create mode 100644 src/dbus/jobservice.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 138d6eb..4d9eab5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,26 +4,21 @@ set(BIN_NAME dde-application-manager) set(DBUS_INTERFACE_DIR ${CMAKE_CURRENT_LIST_DIR}/dbus) -function(generation_dbus_interface xml class_name class_file) - execute_process(COMMAND ${DTK_XML2CPP} -c ${class_name} -p ${class_file} ${xml} - WORKING_DIRECTORY ${DBUS_INTERFACE_DIR}) -endfunction(generation_dbus_interface) +set(DBUSADAPTORS "") +file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_LIST_DIR}/*.cpp ${CMAKE_CURRENT_LIST_DIR}/*.h) -set(DBUS "") -file(GLOB SRCS ${CMAKE_CURRENT_LIST_DIR}/*.cpp) -file(GLOB HEADERS ${CMAKE_CURRENT_LIST_DIR}/include/*) +qt_add_dbus_adaptor(DBUSADAPTORS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.xml applicationmanager1service.h ApplicationManager1Service) +qt_add_dbus_adaptor(DBUSADAPTORS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.Application.xml applicationservice.h ApplicationService) +qt_add_dbus_adaptor(DBUSADAPTORS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.Instance.xml instanceservice.h InstanceService) +qt_add_dbus_adaptor(DBUSADAPTORS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.JobManager1.xml jobmanager1service.h JobManager1Service) +qt_add_dbus_adaptor(DBUSADAPTORS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.JobManager1.Job.xml jobservice.h JobService) -qt_add_dbus_interface(DBUS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.xml ApplicationManager) -qt_add_dbus_interface(DBUS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.Application.xml Application) -qt_add_dbus_interface(DBUS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.ApplicationManager1.Instance.xml Instance) -qt_add_dbus_interface(DBUS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.JobManager1.xml JobManager) -qt_add_dbus_interface(DBUS ${PROJECT_SOURCE_DIR}/api/dbus/org.desktopspec.JobManager1.Job.xml Job) - -add_executable(${BIN_NAME} ${DBUS} ${SRCS}) +add_executable(${BIN_NAME} ${DBUSADAPTORS} ${SRCS}) target_include_directories(${BIN_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_LIST_DIR}/dbus + ${CMAKE_CURRENT_BINARY_DIR}/src ) target_link_libraries(${BIN_NAME} PRIVATE diff --git a/src/dbus/applicationmanager1service.cpp b/src/dbus/applicationmanager1service.cpp new file mode 100644 index 0000000..9d97efd --- /dev/null +++ b/src/dbus/applicationmanager1service.cpp @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include "applicationmanager1service.h" + +ApplicationManager1Service::ApplicationManager1Service(QObject *parent) + : QObject(parent) +{ +} + +ApplicationManager1Service::~ApplicationManager1Service() {} + +QList ApplicationManager1Service::list() const +{ + // TODO: impl + return {}; +} + +QDBusObjectPath ApplicationManager1Service::Application(const QString &id) +{ + // TODO: impl + return {}; +} + +QString ApplicationManager1Service::Identify(const QDBusUnixFileDescriptor &pidfd, + QDBusObjectPath &application, + QDBusObjectPath &application_instance) +{ + // TODO: impl + return {}; +} + +QDBusObjectPath ApplicationManager1Service::Launch(const QString &id, + const QString &action, + const QStringList &fields, + const QVariantMap &options) +{ + // TODO: impl + return {}; +} diff --git a/src/dbus/applicationmanager1service.h b/src/dbus/applicationmanager1service.h new file mode 100644 index 0000000..a34072b --- /dev/null +++ b/src/dbus/applicationmanager1service.h @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef APPLICATIONMANAGER1SERVICE_H +#define APPLICATIONMANAGER1SERVICE_H + +#include +#include +#include + +class ApplicationManager1Service : public QObject +{ + Q_OBJECT +public: + explicit ApplicationManager1Service(QObject *parent = nullptr); + virtual ~ApplicationManager1Service(); + +public: + Q_PROPERTY(QList List READ list) + QList list() const; + +public Q_SLOTS: + QDBusObjectPath Application(const QString &id); + QString Identify(const QDBusUnixFileDescriptor &pidfd, QDBusObjectPath &application, QDBusObjectPath &application_instance); + QDBusObjectPath Launch(const QString &id, const QString &action, const QStringList &fields, const QVariantMap &options); +}; + +#endif diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp new file mode 100644 index 0000000..fc0c787 --- /dev/null +++ b/src/dbus/applicationservice.cpp @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include "applicationservice.h" + +ApplicationService::ApplicationService(QObject *parent) + : QObject(parent) +{ +} + +ApplicationService::~ApplicationService() {} + +QDBusObjectPath ApplicationService::Launch(const QString &action, const QStringList &fields, const QVariantMap &options) +{ + // TODO: impl + return {}; +} diff --git a/src/dbus/applicationservice.h b/src/dbus/applicationservice.h new file mode 100644 index 0000000..e5d8e88 --- /dev/null +++ b/src/dbus/applicationservice.h @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef APPLICATIONSERVICE_H +#define APPLICATIONSERVICE_H + +#include +#include + +class ApplicationService : public QObject +{ + Q_OBJECT +public: + explicit ApplicationService(QObject *parent = nullptr); + virtual ~ApplicationService(); + +public Q_SLOTS: + QDBusObjectPath Launch(const QString &action, const QStringList &fields, const QVariantMap &options); +}; + +#endif diff --git a/src/dbus/instanceservice.cpp b/src/dbus/instanceservice.cpp new file mode 100644 index 0000000..9df512a --- /dev/null +++ b/src/dbus/instanceservice.cpp @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include "instanceservice.h" + +InstanceService::InstanceService(QObject *parent) + : QObject(parent) +{ +} + +InstanceService::~InstanceService() {} + +QDBusObjectPath InstanceService::application() const +{ + // TODO: impl + return {}; +} + +QDBusObjectPath InstanceService::systemdUnitPath() const +{ + // TODO: impl + return {}; +} diff --git a/src/dbus/instanceservice.h b/src/dbus/instanceservice.h new file mode 100644 index 0000000..4642493 --- /dev/null +++ b/src/dbus/instanceservice.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef INSTANCESERVICE_H +#define INSTANCESERVICE_H + +#include +#include + +class InstanceService : public QObject +{ + Q_OBJECT +public: + explicit InstanceService(QObject *parent = nullptr); + virtual ~InstanceService(); + +public: + Q_PROPERTY(QDBusObjectPath Application READ application) + QDBusObjectPath application() const; + + Q_PROPERTY(QDBusObjectPath SystemdUnitPath READ systemdUnitPath) + QDBusObjectPath systemdUnitPath() const; +}; + +#endif diff --git a/src/dbus/jobmanager1service.cpp b/src/dbus/jobmanager1service.cpp new file mode 100644 index 0000000..88f1943 --- /dev/null +++ b/src/dbus/jobmanager1service.cpp @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include "jobmanager1service.h" + +JobManager1Service::JobManager1Service(QObject *parent) + : QObject(parent) +{ +} + +JobManager1Service::~JobManager1Service() {} diff --git a/src/dbus/jobmanager1service.h b/src/dbus/jobmanager1service.h new file mode 100644 index 0000000..ab00f3d --- /dev/null +++ b/src/dbus/jobmanager1service.h @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef JOBMANAGER1SERVICE_H +#define JOBMANAGER1SERVICE_H + +#include +#include + +class JobManager1Service : public QObject +{ + Q_OBJECT +public: + explicit JobManager1Service(QObject *parent = nullptr); + virtual ~JobManager1Service(); + +Q_SIGNALS: + void JobNew(const QDBusObjectPath &job, const QDBusObjectPath &source); + void JobRemoved(const QDBusObjectPath &job, const QString &status, const QString &message, const QDBusVariant &result); +}; + +#endif diff --git a/src/dbus/jobservice.cpp b/src/dbus/jobservice.cpp new file mode 100644 index 0000000..9533854 --- /dev/null +++ b/src/dbus/jobservice.cpp @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include "jobservice.h" + +JobService::JobService(QObject *parent) + : QObject(parent) +{ +} + +JobService::~JobService() {} + +QString JobService::status() const +{ + // TODO: impl + return {}; +} + +void JobService::Cancel() +{ + // TODO: impl +} + +void JobService::Pause() +{ + // TODO: impl +} + +void JobService::Resume() +{ + // TODO: impl +} diff --git a/src/dbus/jobservice.h b/src/dbus/jobservice.h new file mode 100644 index 0000000..146060c --- /dev/null +++ b/src/dbus/jobservice.h @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef JOBSERVICE_H +#define JOBSERVICE_H + +#include + +class JobService : public QObject +{ + Q_OBJECT +public: + explicit JobService(QObject *parent = nullptr); + virtual ~JobService(); + +public: + Q_PROPERTY(QString Status READ status) + QString status() const; + +public Q_SLOTS: + void Cancel(); + void Pause(); + void Resume(); +}; + +#endif