initial commit

This commit is contained in:
kazu
2016-05-24 16:55:19 +02:00
commit 13a89df8d6
77 changed files with 7454 additions and 0 deletions

112
mapview/model/MapModel.h Normal file
View File

@@ -0,0 +1,112 @@
#ifndef MAPMODEL_H
#define MAPMODEL_H
#include <QObject>
#include "MapLayer.h"
#include "MapModelElement.h"
#include "MMRoot.h"
#include <Indoor/floorplan/v2/Floorplan.h>
#include <Indoor/floorplan/v2/FloorplanReader.h>
#include <Indoor/floorplan/v2/FloorplanWriter.h>
class MapModel : public QObject {
Q_OBJECT
private:
///** wrapper-classes for all elements */
//std::vector<MapModelElement*> selElements;
/** the map's root-layer containing all other layers */
MapLayer* root = nullptr;
/** the currently selected layer (if any) */
MapLayer* selLayer = nullptr;
/** the loaded floorplan */
Floorplan::IndoorMap* im;
public:
/** ctor */
MapModel() {
root = new MapLayerRoot(nullptr);
}
virtual ~MapModel() {
cleanup();
}
void cleanup() {
selLayer = nullptr;
//selElements.clear();
if (root) {delete root; root = nullptr;}
}
void load(const std::string& file) {
emit aboutToReset();
cleanup();
// load the indoor-map using the given XML-file
im = Floorplan::Reader::readFromFile(file);
root = new MMRoot(nullptr, im);
emit reset();
}
void save(const std::string& file) {
Floorplan::Writer::writeToFile(im, file);
}
/** get the map's root-layer containing all other layers */
MapLayer* getRootLayer() { return root; }
/** get all elements within the currently selected layer */
std::vector<MapModelElement*> getSelectedLayerElements() {
//return selElements;
//return (selLayer) ? (selLayer->getElementsRecursive()) : (std::vector<MapModelElement*>());
std::vector<MapModelElement*> elements;
root->getVisibleElementsRecursive(elements);
return elements;
}
/** get all currently visible elements */
std::vector<MapModelElement*> getVisibleElements() {
return getSelectedLayerElements();
}
/** set the currently selected layer */
void setSelectedLayer(MapLayer* ml) {
//selElements.clear();
//for (MapModelElement* el : ml->getElementsRecursive()) {selElements.push_back(el);}
selLayer = ml;
}
/** get the currently selected layer */
MapLayer* getSelectedLayer() const {
return selLayer;
}
void reselect() {
setSelectedLayer(selLayer);
emit reset();
}
signals:
void aboutToReset();
void reset();
};
#endif // MAPMODEL_H