#ifndef GRIDMODEL_H #define GRIDMODEL_H #include #include #include #include #include #include #include #include #include #include "MyNode.h" /** * used for 3D grid rendering */ class GridModel { private: int gridSize_cm = 20; Grid grid; Floorplan::IndoorMap* im; public: GridModel() : grid(gridSize_cm) { ; } Grid* getGrid() {return &grid;} class Listener : public GridFactoryListener { private: QDialog dlg; QLabel* lbl1; QLabel* lbl2; QProgressBar* bar1; QProgressBar* bar2; public: Listener() { QVBoxLayout* lay = new QVBoxLayout(&dlg); lbl1 = new QLabel(); lay->addWidget(lbl1); bar1 = new QProgressBar(); lay->addWidget(bar1); lbl2 = new QLabel(); lay->addWidget(lbl2); bar2 = new QProgressBar(); lay->addWidget(bar2); dlg.resize(350, 120); dlg.show(); } ~Listener() { dlg.close(); } void onGridBuildUpdateMajor(const std::string& what) override { lbl1->setText(what.c_str()); QApplication::processEvents(); } void onGridBuildUpdateMajor(const int cnt, const int cur) override { bar1->setValue(cur*100/cnt); QApplication::processEvents(); } void onGridBuildUpdateMinor(const std::string& what) override { lbl2->setText(what.c_str()); QApplication::processEvents(); } void onGridBuildUpdateMinor(const int cnt, const int cur) override { bar2->setValue(cur*100/cnt); QApplication::processEvents(); } }; void rebuild(Floorplan::IndoorMap* im) { Listener l; GridFactory fac(grid); fac.build(im, &l); Importance::addImportance(grid); //Importance::addImportance(grid, 400); } }; #endif // GRIDMODEL_H