dde-application-manager/src/dbus/applicationservice.cpp
2023-07-21 14:50:57 +08:00

87 lines
2.0 KiB
C++

// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "applicationservice.h"
#include "applicationadaptor.h"
#include "instanceadaptor.h"
#include <QUuid>
ApplicationService::ApplicationService(QString ID)
: m_AutoStart(false)
, m_ID(std::move(ID))
, m_applicationPath(DDEApplicationManager1ApplicationObjectPath + m_ID)
{
}
ApplicationService::~ApplicationService() = default;
QString ApplicationService::GetActionName(const QString &identifier, const QStringList &env)
{
// TODO: impl
return {};
}
QDBusObjectPath ApplicationService::Launch(const QString &action, const QStringList &fields, const QVariantMap &options)
{
// TODO: impl launch app from systemd.
QString objectPath{m_applicationPath.path() + "/" + QUuid::createUuid().toString()};
QSharedPointer<InstanceService> ins{new InstanceService{objectPath, ""}};
auto *ptr = ins.data();
if (registerObjectToDbus(new InstanceAdaptor(ptr), objectPath, getDBusInterface<InstanceAdaptor>())) {
m_Instances.insert(QDBusObjectPath{objectPath}, ins);
return QDBusObjectPath{objectPath};
}
return {};
}
QStringList ApplicationService::actions() const noexcept
{
return m_actions;
}
QStringList &ApplicationService::actionsRef() noexcept
{
return m_actions;
}
QString ApplicationService::iD() const noexcept
{
return m_ID;
}
IconMap ApplicationService::icons() const
{
return m_Icons;
}
IconMap &ApplicationService::iconsRef()
{
return m_Icons;
}
bool ApplicationService::isAutoStart() const noexcept
{
return m_AutoStart;
}
void ApplicationService::setAutoStart(bool autostart) noexcept
{
m_AutoStart = autostart;
}
QList<QDBusObjectPath> ApplicationService::instances() const noexcept
{
return m_Instances.keys();
}
bool ApplicationService::removeOneInstance(const QDBusObjectPath &instance)
{
return m_Instances.remove(instance) != 0;
}
void ApplicationService::removeAllInstance()
{
m_Instances.clear();
}