dde-application-manager/src/launchoptions.h
ComixHe 1fb4539792 feat: add env option and refactor command generate method
Signed-off-by: ComixHe <heyuming@deepin.org>
2023-08-31 15:54:40 +08:00

74 lines
1.8 KiB
C++

// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include <QVariantMap>
#include "constant.h"
struct LaunchOption
{
explicit LaunchOption(QVariant v)
: m_val(std::move(v))
{
}
virtual ~LaunchOption() = default;
[[nodiscard]] virtual QStringList generateCommandLine() const noexcept = 0;
[[nodiscard]] static const QString &key() noexcept
{
static QString none;
return none;
};
[[nodiscard]] virtual const QString &type() const noexcept = 0;
QVariant m_val;
};
struct setUserLaunchOption : public LaunchOption
{
using LaunchOption::LaunchOption;
[[nodiscard]] const QString &type() const noexcept override
{
static QString tp{AppExecOption};
return tp;
}
[[nodiscard]] static const QString &key() noexcept
{
static QString uid{"uid"};
return uid;
}
[[nodiscard]] QStringList generateCommandLine() const noexcept override;
};
struct setEnvLaunchOption : public LaunchOption
{
using LaunchOption::LaunchOption;
[[nodiscard]] const QString &type() const noexcept override
{
static QString tp{systemdOption};
return tp;
}
[[nodiscard]] static const QString &key() noexcept
{
static QString env{"env"};
return env;
}
[[nodiscard]] QStringList generateCommandLine() const noexcept override;
};
struct splitLaunchOption : public LaunchOption
{
splitLaunchOption()
: LaunchOption(QString{"--"})
{
}
[[nodiscard]] const QString &type() const noexcept override
{
static QString tp{splitOption};
return tp;
}
[[nodiscard]] QStringList generateCommandLine() const noexcept override;
};
QStringList generateCommand(const QVariantMap &props) noexcept;