feat: init dbus service structure

Log: 初始化dbus服务结构
This commit is contained in:
heyuming 2023-07-10 10:18:33 +08:00 committed by black-desk
parent c10838200b
commit 10add2092c
11 changed files with 265 additions and 15 deletions

View File

@ -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

View File

@ -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<QDBusObjectPath> 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 {};
}

View File

@ -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 <QObject>
#include <QDBusObjectPath>
#include <QDBusUnixFileDescriptor>
class ApplicationManager1Service : public QObject
{
Q_OBJECT
public:
explicit ApplicationManager1Service(QObject *parent = nullptr);
virtual ~ApplicationManager1Service();
public:
Q_PROPERTY(QList<QDBusObjectPath> List READ list)
QList<QDBusObjectPath> 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

View File

@ -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 {};
}

View File

@ -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 <QObject>
#include <QDBusObjectPath>
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

View File

@ -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 {};
}

View File

@ -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 <QObject>
#include <QDBusObjectPath>
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

View File

@ -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() {}

View File

@ -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 <QObject>
#include <QDBusObjectPath>
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

33
src/dbus/jobservice.cpp Normal file
View File

@ -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
}

27
src/dbus/jobservice.h Normal file
View File

@ -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 <QObject>
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