added a ruler for measuring

added support for meta-data editing
improved element selection
changed zooming
fixed some issues with layer events
fixed issue with 3D outline
fixed loading issue for old maps
some interface changes
This commit is contained in:
2017-03-10 13:44:17 +01:00
parent 2297a76c53
commit f40fc9a823
32 changed files with 809 additions and 198 deletions

View File

@@ -13,8 +13,19 @@
#include "../mapview/model/MMFloorAccessPoint.h"
#include "../mapview/model/MMFloorBeacon.h"
#include "../mapview/2D/tools/ToolMeasure.h"
#include "../UIHelper.h"
QSplitter* getSplitter() {
QSplitter* splt = new QSplitter();
splt->setStyleSheet("background-color:black;");
splt->setMinimumHeight(1);
return splt;
}
ToolBoxWidget::ToolBoxWidget(MapView2D* view, QWidget *parent) : QWidget(parent), view(view) {
const int s = 32;
@@ -30,6 +41,16 @@ ToolBoxWidget::ToolBoxWidget(MapView2D* view, QWidget *parent) : QWidget(parent)
connect(btnSelect, SIGNAL(clicked(bool)), this, SLOT(onSelect()));
// MEASURE
btnMeasure = new QPushButton(UIHelper::getIcon("ruler"), "");
btnMeasure->setMinimumSize(s,s);
lay->addWidget(btnMeasure, r++, 0, 1,1,Qt::AlignTop);
connect(btnMeasure, SIGNAL(clicked(bool)), this, SLOT(onMeasure()));
// splitter
lay->addWidget(getSplitter(), r++, 0, 1,1,Qt::AlignTop);
// OBSTACLES
btnGround = new QPushButton(UIHelper::getIcon("floor"), "");
@@ -63,6 +84,10 @@ ToolBoxWidget::ToolBoxWidget(MapView2D* view, QWidget *parent) : QWidget(parent)
connect(btnElevator, SIGNAL(clicked(bool)), this, SLOT(onNewElevator()));
// splitter
lay->addWidget(getSplitter(), r++, 0, 1,1,Qt::AlignTop);
// TRANSMITTERS
btnWifi = new QPushButton(UIHelper::getIcon("wifi"), "");
btnWifi->setMinimumSize(s,s);
@@ -342,116 +367,25 @@ public:
};
//struct NewLineTool : public Tool {
// /** add another line after this one? */
// bool multiple = true;
// /** register this tool into the given tools-queue */
// Tools& tools;
// /** the layer to add the new line to */
// MapLayer* layer;
// /** currently edited line */
// Floorplan::FloorObstacleLine* foLine;
// MMFloorObstacleLine* mmLine;
// /** new line type */
// Floorplan::ObstacleType type;
// /** new line material */
// Floorplan::Material mat;
// /** currently edited line node (has 2) */
// int idx = 0;
// NewLineTool(Tools& tools, MapLayer* layer, Floorplan::ObstacleType type, Floorplan::Material mat) : tools(tools), layer(layer), type(type), mat(mat) {
// createEmptyLine();
// tools.addFront(this);
// }
// virtual bool mousePressEvent(MapView2D* m, QMouseEvent* e) override {
// (void) m; (void) e;
// return true;
// }
// virtual bool mouseMoveEvent(MapView2D* m, QMouseEvent* e) override {
// const Point2 onScreen(e->x(), e->y());
// Point2 onMap = m->getScaler().sm(onScreen);
// onMap = m->getScaler().snap(onMap);
// if (idx == 0) { foLine->from = onMap; foLine->to = onMap; }
// if (idx == 1) { foLine->to = onMap; }
// return true;
// }
// virtual bool mouseReleaseEvent(MapView2D* m, QMouseEvent* e) override {
// (void) m; (void) e;
// ++idx;
// if (idx == 2) {
// finalizeLine();
// if (multiple) {
// idx = 0;
// createEmptyLine();
// } else {
// disableMe();
// }
// }
// return true;
// }
// virtual bool keyPressEvent(MapView2D* m, QKeyEvent* e) override {
// (void) m;
// if (e->key() == Qt::Key_Escape) {
// if (mmLine) {mmLine->deleteMe();}
// disableMe(); return true;
// }
// return false;
// }
//private:
// /** finalize the current line */
// void finalizeLine() {
// if (!mmLine) {return;}
// mmLine->getMV2D()->unfocus();
// mmLine = nullptr;
// }
// /** stop creating new lines */
// void disableMe() {
// finalizeLine();
// tools.remove(this);
// delete this;
// }
// /** create a new, empty line */
// void createEmptyLine() {
// foLine = new Floorplan::FloorObstacleLine(type, mat, Point2(0, 0), Point2(0, 0));
// MMFloorObstacles* obs = (MMFloorObstacles*)layer;
// mmLine = obs->createLine(foLine);
// mmLine->getMV2D()->focus();
// }
//};
void ToolBoxWidget::onSelect() {
}
void ToolBoxWidget::onMeasure() {
new ToolMeasure(view->getTools());
}
void ToolBoxWidget::onNewWall() {
new NewWallTool(view->getTools(), curLayer);
//view->getModel()->reselect();
}
void ToolBoxWidget::onNewPillar() {
@@ -476,21 +410,6 @@ void ToolBoxWidget::onNewDoor() {
new NewDoorTool(view->getTools(), curLayer);
// const Point2 center = view->getScaler().getCenter();
// float s = view->getScaler().sm(50);
// Floorplan::FloorObstacleDoor* door = new Floorplan::FloorObstacleDoor(
// Floorplan::DoorType::SWING,
// Floorplan::Material::WOOD,
// Point2(center.x-s, center.y),
// Point2(center.x+s, center.y)
// );
// MMFloorObstacles* obs = (MMFloorObstacles*)curLayer;
// obs->createDoor(door);
//view->getModel()->reselect();
}
void ToolBoxWidget::onNewStair() {