added "new map" button

fixed minor model/logic issues
This commit is contained in:
2017-05-24 17:54:09 +02:00
parent 6fb1c3a5fc
commit 489a64fd69
8 changed files with 49 additions and 7 deletions

View File

@@ -81,7 +81,8 @@ MainController::MainController() {
connect(mapModel, SIGNAL(reset()), this, SLOT(onMapModelReset()));
mapModel->addListener(this);
// load/save
// new/load/save
connect(mw->getActionWidget(), SIGNAL(onNew()), this, SLOT(onNew()));
connect(mw->getActionWidget(), SIGNAL(onLoad()), this, SLOT(onLoad()));
connect(mw->getActionWidget(), SIGNAL(onSave()), this, SLOT(onSave()));
@@ -96,6 +97,8 @@ MainController::MainController() {
mapModel->load("../IndoorMap/maps/SHL38_no_elev.xml");
//mapModel->load("/apps/android/workspace/testmap.xml");
//mapModel->resize(0.983, 0.983, 1, -0.2, -0.3, 0);
@@ -168,6 +171,8 @@ void MainController::onMapModelAboutToReset() {
mw->getLayerParamWidget()->setElement(nullptr);
mw->getToolBoxWidget()->setSelectedLayer(nullptr);
mw->getMapView2D()->update();
mw->getMapView3D()->update();
//mw->getToolBoxWidget()->
}
void MainController::onMapModelNeedsRepaint() {
@@ -180,6 +185,14 @@ void MainController::onMapModelReset() {
mw->getLINT()->update(mapModel->getMap());
}
void MainController::onNew() {
const int res = QMessageBox::question(nullptr, "New Map", "really start a new map?", QMessageBox::Yes, QMessageBox::No);
if (res == QMessageBox::Yes) {
mapModel->startEmpty();
}
}
void MainController::onLoad() {
QString file = QFileDialog::getOpenFileName(mw, "open a map");
if (file != "") {

View File

@@ -55,9 +55,8 @@ public slots:
/** the currently selected MapElement has changed */
void curMapElementChanged();
void onNew();
void onLoad();
void onSave();
void onMapModelAboutToReset();

View File

@@ -181,8 +181,10 @@ private:
// set the currently focused object (if any)
focused = el;
// focus the new one (if any)
if (focused) {focused->getMV2D()->focus();}
// focus the new one (if any, and focus supported)
if (focused && focused->getMV2D()) {
focused->getMV2D()->focus();
}
// update the help-text
showHelp();

View File

@@ -185,12 +185,21 @@ void MapView3D::showFloorplan() {
}
void MapView3D::showGrid() {
// delete the previous grid (if any)
if (gridModel) {delete gridModel; gridModel = nullptr;}
// build a new model
GridModel* gm = new GridModel();
Floorplan::IndoorMap* im = getModel()->getMap();
gm->rebuild(im);
// remember
this->gridModel = gm;
// update UI
update();
}
void MapView3D::draw() {

View File

@@ -21,7 +21,8 @@ class GridModel {
private:
int gridSize_cm = 20;
int gridSize_cm = 30; // TODO
Grid<MyNode> grid;
Floorplan::IndoorMap* im;

View File

@@ -53,10 +53,17 @@ public:
/** create a new, empty root node */
void startEmpty() {
emit aboutToReset();
cleanup();
im = new Floorplan::IndoorMap();
root = new MMRoot(nullptr, im);
root->addListener(this);
//root->addSublayer(new MMFloors(root, im));
emit reset();
}
void cleanup() {

View File

@@ -7,15 +7,21 @@ ActionWidget::ActionWidget(QWidget *parent) : QWidget(parent) {
QHBoxLayout* lay = new QHBoxLayout(this);
QPushButton* btnNew = new QPushButton("new");
lay->addWidget(btnNew);
QPushButton* btnLoad = new QPushButton("load");
lay->addWidget(btnLoad);
QPushButton* btnSave = new QPushButton("save");
lay->addWidget(btnSave);
// events
connect(btnNew, SIGNAL(clicked(bool)), this, SIGNAL(onNew()));
connect(btnLoad, SIGNAL(clicked(bool)), this, SIGNAL(onLoad()));
connect(btnSave, SIGNAL(clicked(bool)), this, SIGNAL(onSave()));
}

View File

@@ -13,10 +13,15 @@ public:
signals:
/** request: load a map */
void onLoad();
/** request: save a map */
void onSave();
/** request: new map */
void onNew();
public slots:
};