2022-03-30 17:56:27 +08:00
|
|
|
#ifndef A2862DC7_5DA3_4129_9796_671D88015BED
|
|
|
|
#define A2862DC7_5DA3_4129_9796_671D88015BED
|
|
|
|
|
2022-05-19 13:13:55 +08:00
|
|
|
#include "../../modules/startmanager/startmanager.h"
|
|
|
|
#include "../../modules/socket/server.h"
|
2022-06-15 14:14:43 +08:00
|
|
|
#include "../../modules/methods/process_status.hpp"
|
2022-05-19 13:13:55 +08:00
|
|
|
|
2022-03-30 17:56:27 +08:00
|
|
|
#include <QObject>
|
|
|
|
#include <QDBusObjectPath>
|
|
|
|
#include <QList>
|
2022-05-15 12:10:42 +08:00
|
|
|
#include <QMap>
|
|
|
|
#include <QDBusContext>
|
2022-03-30 17:56:27 +08:00
|
|
|
|
|
|
|
class Application;
|
|
|
|
class ApplicationInstance;
|
2022-05-19 13:13:55 +08:00
|
|
|
class ApplicationManagerPrivate : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
ApplicationManager *q_ptr = nullptr;
|
|
|
|
Q_DECLARE_PUBLIC(ApplicationManager);
|
|
|
|
|
|
|
|
QList<QSharedPointer<Application>> applications;
|
|
|
|
Socket::Server server;
|
|
|
|
std::multimap<std::string, QSharedPointer<ApplicationInstance>> tasks;
|
|
|
|
StartManager *startManager;
|
2022-06-15 14:14:43 +08:00
|
|
|
std::vector<std::string> virtualMachines;
|
|
|
|
const std::string virtualMachePath;
|
|
|
|
const std::string section;
|
|
|
|
const std::string key;
|
2022-05-19 13:13:55 +08:00
|
|
|
|
|
|
|
public:
|
|
|
|
ApplicationManagerPrivate(ApplicationManager *parent);
|
|
|
|
~ApplicationManagerPrivate();
|
|
|
|
|
|
|
|
// 检测调用方身份
|
|
|
|
bool checkDMsgUid();
|
2022-06-15 14:14:43 +08:00
|
|
|
void init();
|
2022-05-19 13:13:55 +08:00
|
|
|
|
|
|
|
private:
|
|
|
|
void recvClientData(int socket, const std::vector<char> &data);
|
|
|
|
|
|
|
|
void write(int socket, const std::vector<char> &data);
|
|
|
|
|
|
|
|
void write(int socket, const std::string &data);
|
|
|
|
|
|
|
|
void write(int socket, const char c);
|
2022-06-15 14:14:43 +08:00
|
|
|
|
|
|
|
void processInstanceStatus(Methods::ProcessStatus instanceStatus);
|
2022-05-19 13:13:55 +08:00
|
|
|
};
|
|
|
|
|
2022-05-15 12:10:42 +08:00
|
|
|
class ApplicationManager : public QObject, public QDBusContext
|
|
|
|
{
|
2022-03-30 17:56:27 +08:00
|
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(QList<QDBusObjectPath> instances READ instances)
|
|
|
|
Q_PROPERTY(QList<QDBusObjectPath> list READ list)
|
|
|
|
QScopedPointer<ApplicationManagerPrivate> dd_ptr;
|
|
|
|
Q_DECLARE_PRIVATE_D(qGetPtrHelper(dd_ptr), ApplicationManager)
|
|
|
|
|
|
|
|
public:
|
2022-05-19 13:13:55 +08:00
|
|
|
static ApplicationManager* instance();
|
2022-03-30 17:56:27 +08:00
|
|
|
|
|
|
|
void addApplication(const QList<QSharedPointer<Application>> &list);
|
2022-05-19 13:13:55 +08:00
|
|
|
void launchAutostartApps();
|
2022-06-15 14:14:43 +08:00
|
|
|
void processInstanceStatus(Methods::ProcessStatus instanceStatus);
|
|
|
|
|
2022-05-15 12:10:42 +08:00
|
|
|
Q_SIGNALS:
|
|
|
|
void AutostartChanged(QString status, QString filePath);
|
2022-03-30 17:56:27 +08:00
|
|
|
|
2022-11-04 14:22:45 +08:00
|
|
|
public Q_SLOTS:
|
2022-05-15 12:10:42 +08:00
|
|
|
bool AddAutostart(QString fileName);
|
|
|
|
QStringList AutostartList();
|
|
|
|
bool IsAutostart(QString fileName);
|
2022-10-27 11:52:18 +08:00
|
|
|
bool RemoveAutostart(QString fileName);
|
2022-11-04 14:22:45 +08:00
|
|
|
void Launch(const QString &desktopFile);
|
|
|
|
void LaunchApp(const QString &desktopFile, uint32_t timestamp, const QStringList &files);
|
2022-05-15 12:10:42 +08:00
|
|
|
void LaunchAppAction(QString desktopFile, QString action, uint32_t timestamp);
|
2022-10-27 11:52:18 +08:00
|
|
|
|
|
|
|
protected:
|
|
|
|
ApplicationManager(QObject *parent = nullptr);
|
|
|
|
~ApplicationManager() override;
|
|
|
|
|
|
|
|
QList<QDBusObjectPath> instances() const;
|
|
|
|
QList<QDBusObjectPath> list() const;
|
|
|
|
QDBusObjectPath GetInformation(const QString &id);
|
|
|
|
QList<QDBusObjectPath> GetInstances(const QString &id);
|
2022-05-15 12:10:42 +08:00
|
|
|
void LaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap<QString, QString> options);
|
|
|
|
void RunCommandWithOptions(QString exe, QStringList args, QMap<QString, QString> options);
|
2022-06-15 14:14:43 +08:00
|
|
|
bool IsProcessExist(uint32_t pid);
|
2022-03-30 17:56:27 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* A2862DC7_5DA3_4129_9796_671D88015BED */
|