Files
qt5-legatus-legacy/Lts/Plugins/InfrastructureManagement/ism_data_plugin_interface.h
T
2026-08-13 18:33:10 +02:00

95 lines
3.0 KiB
C++
Executable File

/**
* @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 <Services/InfrastructureManagement/ism_dtc.h>
#include <Services/InfrastructureManagement/ism_ftc.h>
#include <QObject>
#include <PluginInterfaces/data_plugin_interface.h>
#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<InfrastructureManagement::Interface::Dtc> getDtc() = 0;
virtual std::shared_ptr<InfrastructureManagement::Interface::Ftc> getFtc() = 0;
virtual std::shared_ptr<ForeignDataInterface> 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<void(const MountingPoint &data)> &cb) = 0;
virtual bool mountingPoints(const std::function<bool(const MountingPoint &data)> &cb) = 0;
virtual QHash<int32_t, MountingPoint> 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<int> buildingsInCurrentExercise() = 0;
virtual const QSet<int>& 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