#pragma once #include "lts_plugin_manager_export.h" #include #include #include #include #include #include #include #include namespace NGL { class INGLLogger; } namespace DataPluginBase { class Plugin; } namespace GuiPluginBase { class Plugin; } namespace ProjectPlugin { class Plugin; } namespace LtsSession { class LtsSession; class LtsSessionManager; struct DdsConnectionParams; } namespace DeveloperTools { class DevDialog; } namespace LtsPluginManager { struct AppPluginInstance { PluginInstance pluginInstance; QFlags m_flags; QStringList m_options; QString m_appName; LtsAppDescriptor::App m_appId = LtsAppDescriptor::App::Login; }; class LTSPLUGINMANAGER_EXPORT LtsPluginManager : public QObject { Q_OBJECT public: LtsPluginManager(); ~LtsPluginManager(); bool startApp(const LtsAppDescriptor::AppDescription &app, bool headless, const LtsSession::DdsConnectionParams &connParams, const QString &workspaceId = QString(), bool hidden = false); LtsSession::LtsSession *getSession(IDL::PartitionType partitionType, int partitionId); bool isInitialized() const { return m_initialized; } const LtsAppDescriptor::AppDescription &appDescription() const { return m_app; } QVector sessions() const; Q_DECL_DEPRECATED void setMarkedForDeletion() { m_markedForDeletion = true; } Q_DECL_DEPRECATED bool markedForDeletion() const { return m_markedForDeletion; } const QString &description() const { return m_description; } void setDescription(const QString &description) { m_description = description; } static bool hasSituationMapInstance(const LtsAppDescriptor::AppDescription &appDescription, bool alsoTestFOrScriptApp = false); bool hasSituationMapInstance() const; void softQuit(); void _softQuit(); LtsSession::LtsSessionManager *m_sessionManager; private: friend class DeveloperTools::DevDialog; LtsAppDescriptor::AppDescription m_app; NGL::INGLLogger &m_logger; bool m_initialized = false; bool m_markedForDeletion; QString m_description; private slots: void slotInitializationFinished() { m_initialized = true; } signals: void signalQuit(); void signalSoftQuit(); void signalLogout(); void signalInitializationFinished(); void signalInitializationAborted(); void signalStillAlive(); void hideAllOtherBLWs(QObject *caller); void taskSwitch(QObject *caller); }; }