#ifndef A2862DC7_5DA3_4129_9796_671D88015BED #define A2862DC7_5DA3_4129_9796_671D88015BED #include "../../modules/startmanager/startmanager.h" #include "../../modules/socket/server.h" #include "../../modules/methods/process_status.hpp" #include #include #include #include #include class Application; class ApplicationInstance; class ApplicationManagerPrivate : public QObject { Q_OBJECT ApplicationManager *q_ptr = nullptr; Q_DECLARE_PUBLIC(ApplicationManager); QList> applications; Socket::Server server; std::multimap> tasks; StartManager *startManager; std::vector virtualMachines; const std::string virtualMachePath; const std::string section; const std::string key; public: ApplicationManagerPrivate(ApplicationManager *parent); ~ApplicationManagerPrivate(); // 检测调用方身份 bool checkDMsgUid(); void init(); private: void recvClientData(int socket, const std::vector &data); void write(int socket, const std::vector &data); void write(int socket, const std::string &data); void write(int socket, const char c); void processInstanceStatus(Methods::ProcessStatus instanceStatus); }; class ApplicationManager : public QObject, public QDBusContext { Q_OBJECT Q_PROPERTY(QList instances READ instances) Q_PROPERTY(QList list READ list) QScopedPointer dd_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(dd_ptr), ApplicationManager) public: ApplicationManager(QObject *parent = nullptr); ~ApplicationManager() override; static ApplicationManager* instance(); void addApplication(const QList> &list); void launchAutostartApps(); void processInstanceStatus(Methods::ProcessStatus instanceStatus); Q_SIGNALS: void AutostartChanged(QString status, QString filePath); public: // PROPERTIES QList instances() const; QList list() const; public Q_SLOTS: // METHODS QDBusObjectPath GetInformation(const QString &id); QList GetInstances(const QString &id); QDBusObjectPath Launch(const QString &id, QStringList files); // com.deepin.StartManager bool AddAutostart(QString fileName); bool RemoveAutostart(QString fileName); QStringList AutostartList(); QString DumpMemRecord(); //QString GetApps(); bool IsAutostart(QString fileName); bool IsMemSufficient(); //bool Launch(QString desktopFile); deprecated void LaunchApp(QString desktopFile, uint32_t timestamp, QStringList files); void LaunchAppAction(QString desktopFile, QString action, uint32_t timestamp); void LaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options); //bool LaunchWithTimestamp(QString desktopFile, uint32_t timestamp); deprecated void RunCommand(QString exe, QStringList args); void RunCommandWithOptions(QString exe, QStringList args, QMap options); void TryAgain(bool launch); bool IsPidVirtualMachine(uint32_t pid); bool IsProcessExist(uint32_t pid); }; #endif /* A2862DC7_5DA3_4129_9796_671D88015BED */