/** * @RDE_HEADER@ * HMI Plugin for InfrastructureManagement (Interface for access from other Plugins) * $Id$ * $HeadURL$ * $Author$ * * Created by Mike Wille, SLSE, 2016-08-24 */ #pragma once #include #include #include #include #ifndef ISMDATAPLUGININTERFACE_EXPORT # ifdef BUILD_STATIC_LIBRARIES # define ISMDATAPLUGININTERFACE_EXPORT # else # if defined(MAKE_ISMDATAPLUGININTERFACE_LIB) # define ISMDATAPLUGININTERFACE_EXPORT Q_DECL_EXPORT # else # define ISMDATAPLUGININTERFACE_EXPORT Q_DECL_IMPORT # endif # endif #endif namespace InfrastructureManagement { class ForeignDataInterface; class MountingPoint; /** * @brief The DataInterface class provides the Topics Clients only for the GUI Plugins */ // CE: ISMDATAPLUGININTERFACE_EXPORT needed for msvc due to ForeignDataInterface !? class ISMDATAPLUGININTERFACE_EXPORT DataInterface : public DataPluginBase::Interface { public: using DataPluginBase::Interface::Interface; virtual std::shared_ptr getDtc() = 0; virtual std::shared_ptr getFtc() = 0; virtual std::shared_ptr getForeignDataInterface() = 0; }; /** * @brief The ForeignDataInterface class provides methods and signals for foreign plugins, that need * access to the data of this DataPlugin */ class ISMDATAPLUGININTERFACE_EXPORT ForeignDataInterface : public QObject { Q_OBJECT public: ForeignDataInterface() = default; virtual ~ForeignDataInterface() = default; // mainStructureElements returns buildings (containing absolute position) // mainFootprints returns footprint (containing relative positions) /*! \name MountingPoint (espcially aimState) depends on the (loaded) plan/schedule!!! */ //@{ virtual bool mountingPoints(const std::function &cb) = 0; virtual bool mountingPoints(const std::function &cb) = 0; virtual QHash mountingPoints() const = 0; virtual MountingPoint mountingPoint(int32_t mountingPointId) const = 0; //@} virtual MainSchedule mainSchedule(int32_t scheduleId) = 0; /*! \name setScheduleId will update the MountingPoints (aimState) according schedule!!! */ //@{ virtual void setScheduleId(int32_t scheduleId) = 0; virtual int32_t scheduleId() const = 0; //@} /*! \name buildings in current exercise*/ //@{ virtual QSet buildingsInCurrentExercise() = 0; virtual const QSet& buildingsInCurrentExercise() const = 0; virtual bool isBuildingsInCurrentExercise(int buildingId) const = 0; //@} Q_SIGNALS: void mountingPointChanged(const InfrastructureManagement::MountingPoint &data, DataModification modType); void scheduleIdChanged(int32_t newScheduleId); void buildingsInCurrentExerciseChanged(); }; } // namespace InfrastructureManagement