95 lines
3.0 KiB
C++
Executable File
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
|