2023-07-10 10:18:33 +08:00
|
|
|
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
|
|
|
|
#include "applicationservice.h"
|
2023-07-17 14:49:35 +08:00
|
|
|
#include "instanceadaptor.h"
|
|
|
|
#include <QUuid>
|
2023-07-10 10:18:33 +08:00
|
|
|
|
2023-07-17 14:49:35 +08:00
|
|
|
ApplicationService::ApplicationService(QString ID)
|
|
|
|
: m_AutoStart(false)
|
|
|
|
, m_ID(std::move(ID))
|
|
|
|
, m_applicationPath(DDEApplicationManager1ApplicationObjectPath + m_ID)
|
2023-07-10 10:18:33 +08:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2023-07-17 14:49:35 +08:00
|
|
|
ApplicationService::~ApplicationService() = default;
|
2023-07-10 10:18:33 +08:00
|
|
|
|
2023-07-17 14:49:35 +08:00
|
|
|
QString ApplicationService::GetActionName(const QString &identifier, const QStringList &env)
|
2023-07-10 10:18:33 +08:00
|
|
|
{
|
|
|
|
// TODO: impl
|
|
|
|
return {};
|
|
|
|
}
|
2023-07-17 14:49:35 +08:00
|
|
|
|
|
|
|
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<decltype(ptr), 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();}
|