41 #ifndef MAPOBJECTSCONTROLLER_H 42 #define MAPOBJECTSCONTROLLER_H 57 #include <ogrsf_frmts.h> 59 #include <QMapControl/Layer.h> 60 #include <QMapControl/Geometry.h> 61 #include <QMapControl/ESRIShapefile.h> 62 #include <QMapControl/LayerESRIShapefile.h> 67 class LayerMapAdapter;
89 using qmapcontrol::Geometry;
101 virtual QString
getName(
int idx)
const = 0;
106 std::shared_ptr<qmapcontrol::GeometryWidget> mWidget;
109 : QObjectUserData(), mWidget(w) {}
111 std::shared_ptr<qmapcontrol::GeometryWidget>
widget()
const {
return mWidget; }
126 static const int MaxLayers = 32;
128 class LayerListImpl :
public LayerList {
131 : LayerListImpl(MaxLayers) {}
133 explicit LayerListImpl (
int sz) {
137 virtual int getCount()
const {
return layers.size(); }
138 virtual QString getName(
int idx)
const {
return layers[idx] != 0 ? QString::fromStdString(layers[idx]->getName()) : QString(
""); }
139 virtual bool isVisible(
int idx)
const {
return layers[idx] != 0 && layers[idx]->isVisible(); }
141 virtual void setVisible(
int idx,
bool v) { visibility[idx] = v; layers[idx]->setVisible(v); }
143 virtual void setLayer (
int idx, std::shared_ptr<qmapcontrol::Layer> layer,
bool shown =
true) {
144 while (layers.size() <= idx)
146 while (visibility.size() <= idx)
147 visibility.push_back(
false);
149 visibility[idx] = shown;
152 virtual void updateVisibility(
bool show) {
153 for (
int i = 0; i < layers.size(); ++i) {
154 layers[i]->setVisible(show ? visibility[i] :
false);
158 std::shared_ptr<qmapcontrol::Layer> layer(
int idx)
const {
return layers[idx]; }
160 QVector<std::shared_ptr<qmapcontrol::Layer> > layers;
161 QVector<bool> visibility;
164 template <
typename L>
165 class LayerVarListImpl :
public LayerList {
167 LayerVarListImpl() {}
169 QList<std::shared_ptr<L> > layers;
170 QVector<bool> visibility;
171 QStringList fullpath;
173 virtual int getCount()
const {
return layers.size(); }
174 virtual QString getName(
int idx)
const {
return QString::fromStdString(layers[idx]->getName()); }
175 virtual QString getFullPath(
int idx)
const {
return fullpath.at(idx); }
176 virtual bool isVisible(
int idx)
const {
return layers[idx] != 0 && layers[idx]->isVisible(); }
178 virtual void setVisible(
int idx,
bool v) { visibility[idx] = v; layers[idx]->setVisible(v); }
180 virtual void updateVisibility(
bool show) {
181 for (
int i = 0; i < layers.size(); ++i) {
182 layers[i]->setVisible(show ? visibility[i] :
false);
186 virtual bool add(std::shared_ptr<L> layer, QString _fullpath,
bool show =
true) {
187 layers.push_back(layer);
188 visibility.push_back(show);
189 fullpath.push_back(_fullpath);
258 void setModel(
int model_n, std::shared_ptr<DisplaceModel> model);
309 std::shared_ptr<qmapcontrol::ESRIShapefile>
getShapefile(
int model_idx,
int idx);
319 QSet<EdgeMapObject *>
edgeSelection(
int model)
const {
return mEdgeSelection[model]; }
323 void addNode(
int model_n, std::shared_ptr<NodeData> nd,
bool disable_redraw =
false);
324 void addHarbour(
int model_n, std::shared_ptr<HarbourData> nd,
bool disable_redraw =
false);
325 void addEdge (
int model_n, std::shared_ptr<NodeData::Edge>
edge,
bool disable_redraw);
337 void addTariffLayer(
int model,
int id, std::shared_ptr<Layer> layer,
bool visibility);
338 void addEnvLayer(
int model,
int id, std::shared_ptr<Layer> layer,
bool visibility);
339 void addShapefileLayer(
int model, QString name, std::shared_ptr<GDALDataset> datasource, std::shared_ptr<LayerESRIShapefile> layer,
bool show =
true);
362 qmapcontrol::QMapControl *mMap;
376 std::shared_ptr<qmapcontrol::MapAdapter> mMainMapAdapter;
377 std::shared_ptr<qmapcontrol::MapAdapter> mSeamarkAdapter;
378 std::shared_ptr<qmapcontrol::LayerMapAdapter> mMainLayer;
379 std::shared_ptr<qmapcontrol::LayerMapAdapter> mSeamarkLayer;
380 std::shared_ptr<qmapcontrol::LayerGeometry> mWidgetLayer;
381 std::shared_ptr<qmapcontrol::LayerGeometry> mEditorLayer;
418 QVector<bool> mModelVisibility;
420 QVector<LayerListImpl> mLayers;
421 QVector<LayerListImpl> mEnvLayers;
422 QVector<LayerListImpl> mOutputLayers;
423 QVector<LayerListImpl> mTariffsLayers;
424 QVector<QList<std::shared_ptr<GDALDataset> > > mShapefiles;
425 QVector<LayerVarListImpl<qmapcontrol::LayerESRIShapefile> > mShapefileLayers;
436 #endif // MAPOBJECTSCONTROLLER_H void clearAllNodes(int model_n)
Definition: mapobjectscontroller.cpp:496
static constexpr int MAX_MODELS
Definition: mainwindow.h:80
Definition: vesselmapobject.h:40
void signalAppIsClosing()
Definition: mapobjectscontroller.cpp:844
void widgetClosed(QObject *)
Definition: mapobjectscontroller.cpp:834
bool isModelActive(int model) const
Definition: mapobjectscontroller.cpp:361
Definition: mapobjectscontroller.h:96
Definition: mapobjectscontroller.h:199
Definition: mapobjectscontroller.h:211
PaletteRole
Definition: palettemanager.h:54
Definition: mapobjectscontroller.h:200
void forceRedraw()
Definition: mapobjectscontroller.cpp:372
void setPalette(int model, PaletteRole n, const Palette &palette)
Definition: mapobjectscontroller.cpp:366
void addEditorLayerGeometry(std::shared_ptr< qmapcontrol::Geometry > geometry)
Definition: mapobjectscontroller.cpp:725
Definition: mapobjectscontroller.h:199
Definition: mapobjectscontroller.h:236
void addTariffLayer(int model, int id, std::shared_ptr< Layer > layer, bool visibility)
Definition: mapobjectscontroller.cpp:553
Definition: nodemapobject.h:37
void removeAllWidgets()
Definition: mapobjectscontroller.cpp:849
Definition: myutils.h:206
void updateShipPosition(int model, int idx)
Definition: mapobjectscontroller.cpp:266
Definition: objecttreemodel.h:49
Definition: mapobjectscontroller.h:241
Definition: mapobjectscontroller.h:215
Definition: harbourdata.h:29
Definition: mapobjectscontroller.h:206
Definition: mapobjectscontroller.h:210
Definition: objecttreemodel.h:48
Definition: mapobjectscontroller.h:235
void addShapefileLayer(int model, QString name, std::shared_ptr< GDALDataset > datasource, std::shared_ptr< LayerESRIShapefile > layer, bool show=true)
Definition: mapobjectscontroller.cpp:560
virtual ~LayerList() noexcept=default
void delSelectedEdges(int model)
Definition: mapobjectscontroller.cpp:735
Definition: mapobjectscontroller.h:228
std::shared_ptr< GDALDataset > cloneShapefileDatasource(int model_idx, const QString &name)
Definition: mapobjectscontroller.cpp:441
vector< Node * > nodes
Definition: main.cpp:270
DisplaceModel & getModel(int model_n)
Definition: mapobjectscontroller.cpp:95
void createMapObjectsFromModel(int model_n, DisplaceModel *model)
Definition: mapobjectscontroller.cpp:106
Definition: objecttreemodel.h:46
Definition: mapobjectscontroller.h:245
Definition: mapobjectscontroller.h:218
void redraw()
Definition: mapobjectscontroller.cpp:881
Definition: objecttreemodel.h:47
OutLayerIds
Definition: mapobjectscontroller.h:204
Definition: mapobjectscontroller.h:227
Definition: mapobjectscontroller.h:216
void addEnvLayer(int model, int id, std::shared_ptr< Layer > layer, bool visibility)
Definition: mapobjectscontroller.cpp:547
Definition: mapobjectscontroller.h:212
Definition: mapobjectscontroller.h:226
Definition: mapobjectscontroller.h:284
LayerList * getLayerList(int model, ObjectTreeModel::Category type)
Definition: mapobjectscontroller.h:271
void addHarbour(int model_n, std::shared_ptr< HarbourData > nd, bool disable_redraw=false)
Definition: mapobjectscontroller.cpp:707
Definition: mapobjectscontroller.h:205
void updateVesselPosition(int model, int idx)
Definition: mapobjectscontroller.cpp:261
Definition: harbourmapobject.h:36
Definition: windmillobject.h:40
LayerIds
Definition: mapobjectscontroller.h:197
void addOutputLayer(int model, OutLayerIds id, std::shared_ptr< Layer > layer, bool visibility)
Definition: mapobjectscontroller.cpp:541
QStringList getShapefilesList(int model_idx) const
Definition: mapobjectscontroller.cpp:426
Definition: mapsdataprovider.h:9
Definition: mapobjectscontroller.h:217
Definition: mapobjectscontroller.h:238
const Palette & getPalette(int model, PaletteRole n) const
Definition: mapobjectscontroller.h:295
Definition: mapobjectscontroller.h:202
void edgeSelectionHasChanged(EdgeMapObject *object)
Definition: mapobjectscontroller.cpp:857
TariffLayerIds
Definition: mapobjectscontroller.h:225
void selectNodes(int model, QList< types::NodeId > nodes)
Definition: mapobjectscontroller.cpp:469
Definition: objecttreemodel.h:45
Definition: mapobjectscontroller.h:250
Definition: mapobject.h:30
void geometryClicked(const Geometry *)
Definition: mapobjectscontroller.cpp:799
void removeModel(int model_n)
Definition: mapobjectscontroller.cpp:100
bool importShapefile(int model_idx, QString path, QString layername)
Definition: mapobjectscontroller.cpp:397
Definition: mapobjectscontroller.h:213
void updateWindmillPosition(int model, int idx)
Definition: mapobjectscontroller.cpp:277
bool isLayerVisible(int model, ObjectTreeModel::Category type, int layer)
Definition: mapobjectscontroller.cpp:338
Definition: mapobjectscontroller.h:243
Definition: shipmapobject.h:40
EditorModes
Definition: mapobjectscontroller.h:248
EnvLayerIds
Definition: mapobjectscontroller.h:233
void setModel(int model_n, std::shared_ptr< DisplaceModel > model)
Definition: mapobjectscontroller.cpp:90
Definition: displacemodel.h:71
void setModelVisibility(int model, Visibility visibility)
Sets the visibility of the model objects.
Definition: mapobjectscontroller.cpp:294
void addNode(int model_n, std::shared_ptr< NodeData > nd, bool disable_redraw=false)
Definition: mapobjectscontroller.cpp:567
void clearNodeSelection(int model)
Definition: mapobjectscontroller.cpp:458
void addEdge(int model_n, std::shared_ptr< NodeData::Edge > edge, bool disable_redraw)
Definition: mapobjectscontroller.cpp:697
Definition: mapobjectscontroller.h:230
virtual ~MapObjectsController() noexcept=default
MapObjectsController(qmapcontrol::QMapControl *map)
Definition: mapobjectscontroller.cpp:54
Definition: mapobjectscontroller.h:239
const Palette & palette(PaletteRole) const
Definition: palettemanager.cpp:194
static PaletteManager * instance()
Definition: palettemanager.h:146
Definition: mapobjectscontroller.h:214
virtual int getCount() const =0
qmapcontrol::QMapControl * mapWidget() const
Definition: mapobjectscontroller.h:256
Definition: editorlayerinterface.h:50
Definition: edgelayer.h:31
bg::model::point< double, 2, bg::cs::cartesian > point
Definition: diffusion.cpp:28
Category
Definition: objecttreemodel.h:44
void showDetailsWidget(const PointWorldCoord &point, QWidget *widget)
Definition: mapobjectscontroller.cpp:377
std::shared_ptr< qmapcontrol::ESRIShapefile > getShapefile(int model_idx, int idx)
Definition: mapobjectscontroller.cpp:436
Definition: mapobjectscontroller.h:240
Definition: mapobjectscontroller.h:91
virtual QString getName(int idx) const =0
void delSelected(int model)
Definition: mapobjectscontroller.cpp:479
Definition: mapobjectscontroller.h:250
Definition: mapobjectscontroller.h:284
void updateNodes(int model)
Definition: mapobjectscontroller.cpp:282
Definition: mapobjectscontroller.h:198
Definition: mapobjectscontroller.h:219
int nodeSelectionChanged(int num)
Definition: moc_mapobjectscontroller.cpp:191
void nodeSelectionHasChanged(NodeMapObject *node)
Definition: mapobjectscontroller.cpp:869
Definition: edgemapobject.h:56
void updateMapObjectsFromModel(int model_n, DisplaceModel *model)
Definition: mapobjectscontroller.cpp:252
void setEditorMode(EditorModes mode)
Definition: mapobjectscontroller.cpp:453
void delSelectedNodes(int model)
Definition: mapobjectscontroller.cpp:761
QSet< EdgeMapObject * > edgeSelection(int model) const
Definition: mapobjectscontroller.h:319
Definition: mapobjectscontroller.h:242
void updateFishfarmPosition(int model, int idx)
Definition: mapobjectscontroller.cpp:272
void addStandardLayer(int model, LayerIds id, std::shared_ptr< Layer > layer, bool visibility)
Definition: mapobjectscontroller.cpp:534
void setLayerVisibility(int model, ObjectTreeModel::Category type, int layer, bool visibility)
Definition: mapobjectscontroller.cpp:305
int edgeSelectionChanged(int num)
Definition: moc_mapobjectscontroller.cpp:182
Definition: mapobjectscontroller.h:207
Definition: fishfarmobject.h:40
EditorModes getEditorMode() const
Definition: mapobjectscontroller.h:313
Definition: mapobjectscontroller.h:209
Definition: mapobjectscontroller.h:249
Definition: mapobjectscontroller.h:234
Definition: mapobjectscontroller.h:198
Visibility
Definition: mapobjectscontroller.h:284
Definition: mapobjectscontroller.h:208
void clearEditorLayer()
Definition: mapobjectscontroller.cpp:720
Definition: mapobjectscontroller.h:237
Definition: mapobjectscontroller.h:221
Definition: csvspecspage.h:20
MapsDataProvider & getMapDataProvider(int model)
Definition: mapobjectscontroller.cpp:730
Definition: palettemanager.h:62