#include "MainController.h" #include "MainWindow.h" #include "mapview/model/MapModel.h" #include "mapview/model/MapModelElement.h" #include "mapview/tools/ToolSelector.h" #include "mapview/tools/ToolMoveMap.h" #include "mapview/tools/ToolMapZoom.h" #include "mapview/tools/ToolRuler.h" #include "mapview/tools/ToolMapGrid.h" #include "params/ElementParamWidget.h" #include "params/LayerParamWidget.h" #include "params/ToolBoxWidget.h" #include "params/ActionWidget.h" #include "tree/MapTreeModel.h" #include #include MainController::MainController() { mw = new MainWindow(); mw->resize(1000, 700); MapView2D* mapView2D = mw->getMapView2D(); QTreeView* layerTree = mw->getTree(); mapModel = new MapModel(); //mapModel->load("/apps/android/workspace/IndoorApp/res/map.xml"); mapView2D->setModel(mapModel); ToolMoveMap* moveMap = new ToolMoveMap(); ToolRuler* ruler = new ToolRuler(); ToolMapZoom* mapZoom = new ToolMapZoom(); ToolMapGrid* mapGrid = new ToolMapGrid(); ToolSelector* mapSelector = new ToolSelector(); mapView2D->getTools().enable(mapGrid); mapView2D->getTools().enable(moveMap); mapView2D->getTools().enable(mapZoom); mapView2D->getTools().enable(mapSelector); mapView2D->getTools().enable(ruler); mapTreeModel = new MapTreeModel(mapModel); layerTree->setModel(mapTreeModel); connect(layerTree, SIGNAL(clicked(QModelIndex)), this, SLOT(layerSelected(QModelIndex))); connect(mapSelector, SIGNAL(onMapElementSelected(MapModelElement*)), this, SLOT(mapElementSelected(MapModelElement*))); connect(mw->getActionWidget(), SIGNAL(onLoad()), this, SLOT(onLoad())); connect(mw->getActionWidget(), SIGNAL(onSave()), this, SLOT(onSave())); connect(mapModel, SIGNAL(aboutToReset()), this, SLOT(onMapModelAboutToReset())); connect(mapModel, SIGNAL(reset()), this, SLOT(onMapModelReset())); mapModel->load("/apps/map9.xml"); } void MainController::layerSelected(QModelIndex idx) { mw->getMapView2D()->layerChange(); MapLayer* ml = static_cast(idx.internalPointer()); mapModel->setSelectedLayer(ml); mw->getMapView2D()->layerChange(); mw->getLayerParamWidget()->setElement(ml); mw->getToolBoxWidget()->setSelectedLayer(ml); } void MainController::mapElementSelected(MapModelElement* el) { mw->getElementParamWidget()->setElement(el); } void MainController::onMapModelAboutToReset() { mw->getLayerParamWidget()->setElement(nullptr); mw->getToolBoxWidget()->setSelectedLayer(nullptr); mw->getMapView2D()->update(); } void MainController::onMapModelReset() { mw->getTree()->expandAll(); } void MainController::onLoad() { QString file = QFileDialog::getOpenFileName(mw, "open a map"); if (file != "") { mapModel->load(file.toStdString()); } } void MainController::onSave() { QString file = QFileDialog::getSaveFileName(mw, "save the map"); if (file != "") { mapModel->save(file.toStdString()); } }