#ifndef SAPMANAGER_H #define SAPMANAGER_H #include #include #include #include "sapserviceinfo.h" class SAPAgent; class SAPManager : public QObject { Q_OBJECT explicit SAPManager(QObject *parent = 0); Q_DISABLE_COPY(SAPManager) public: static SAPManager * instance(); int registerServiceAgent(const SAPServiceInfo &service, SAPAgent *agent); void unregisterServiceAgent(int agentId); void unregisterServiceAgent(const QString &profile, SAPServiceInfo::Role role); int registeredAgentId(const QString &profile, SAPServiceInfo::Role role); bool isRegisteredAgent(int agentId) const; SAPAgent *agent(int agentId); SAPServiceInfo serviceInfo(int agentId) const; QSet allProfiles() const; QSet allAgents() const; struct RegisteredApplication { QString package; QString name; int version; bool preinstalled; }; void registerApplicationPackage(const RegisteredApplication &app); void registerApplicationPackage(const QString &package, const QString &name = QString(), int version = 1, bool preinstalled = false); void unregisterApplicationPackage(const QString &package); QList allPackages() const; private: int findUnusedAgentId() const; QHash* profilesByRole(SAPServiceInfo::Role role); private: struct RegisteredAgent { int agentId; SAPServiceInfo info; SAPAgent *agent; }; QMap _agents; QHash _consumerProfiles; QHash _providerProfiles; QHash _pkgs; }; #endif // SAPMANAGER_H