Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/MapImpl/jump_point_model.h
T
2026-08-13 18:33:10 +02:00

106 lines
2.2 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Interface
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
// Own
#include "situation_map_export.h"
#include <MapObjects/geo_image.h>
#include <Common/ref_pointer.h>
#include <Common/situation_map_logging.h>
#include <LtsWidgets/lts_abstract_table_model.h>
// Qt
//----------------------------------------------------------------------------
namespace SituationMap
{
//----------------------------------------------------------------------------
// JPData
//----------------------------------------------------------------------------
class JPData
{
public:
JPData() = default;
explicit JPData(const QString &name, const Point3D &originGeo, double mapScale = 0.0)
: m_name(name), m_originGeo(originGeo), m_mapScale(mapScale)
{}
~JPData()
{
if (m_marker)
m_marker->removeMySelf();
}
bool hasMarker() const
{
return m_marker.valid();
}
QString m_name;
Point3D m_originGeo;
double m_mapScale = 0.0;
RefPointer<GeoImage> m_marker;
QImage m_image;
};
//----------------------------------------------------------------------------
// JumpPointModel
//----------------------------------------------------------------------------
class JumpPointModel: public LtsWidgets::LtsAbstractTableModel<JPData>
{
Q_OBJECT
using BaseClass = LtsWidgets::LtsAbstractTableModel<JPData>;
public:
enum Columns
{
NAME,
ORIGIN_GEO,
ORIGIN_MGRS,
SCALE,
ICON,
};
explicit JumpPointModel(QObject *parent = nullptr);
void setMap(Map *map);
QVariant data(const QModelIndex &index, int role) const override final;
void addUpdateItem(const JPData& jpData);
bool removeItem(const QString &name);
bool contains(const QString &name);
int rowOfItem(const QString &name);
JPData* getItemPtr(const QModelIndex &index);
JPData* getItemPtr(const QString &name);
QVector<JPData> jumpPoints();
QStringList names();
private:
Map *m_map = nullptr;
};
} // namespace SituationMap