/* * © Copyright 2014 – Urheberrechtshinweis * Alle Rechte vorbehalten / All Rights Reserved * * Programmcode ist urheberrechtlich geschuetzt. * Das Urheberrecht liegt, soweit nicht ausdruecklich anders gekennzeichnet, bei Frank Ebner. * Keine Verwendung ohne explizite Genehmigung. * (vgl. § 106 ff UrhG / § 97 UrhG) */ #include "../fixC11.h" #include "ElementParamWidget.h" #include "../mapview/model/MapModelElement.h" #include "../mapview/model/MMFloorObstacleLine.h" #include "../mapview/model/MMFloorOutlinePolygon.h" #include "../mapview/model/IHasParams.h" #include "../mapview/model/IHasEditableMeta.h" #include "MetaEditWidget.h" #include "EditFields.h" #include #include #include #include #include #include #include #include //QComboBox* getMaterials() { // using namespace Floorplan; // QComboBox* cmbMaterial = new QComboBox(); // for (int i = 0; i < (int)Material::_END; ++i) { // switch ((Material)i) { // case Material::CONCRETE: cmbMaterial->addItem("Concrete", i); break; // case Material::UNKNOWN: cmbMaterial->addItem("Unknown ", i); break; // case Material::DRYWALL: cmbMaterial->addItem("Drywall", i); break; // case Material::WOOD: cmbMaterial->addItem("Wood", i); break; // case Material::GLASS: cmbMaterial->addItem("Glass", i); break; // case Material::METAL: cmbMaterial->addItem("Metal", i); break; // case Material::METALLIZED_GLAS: cmbMaterial->addItem("Glass (metallized)", i); break; // case Material::_END: throw 1; // } // } // return cmbMaterial; //} //QComboBox* getObstacleTypes() { // using namespace Floorplan; // QComboBox* cmb = new QComboBox(); // for (int i = 0; i < (int)ObstacleType::_END; ++i) { // switch ((ObstacleType)i) { // case ObstacleType::UNKNOWN: cmb->addItem("Unknown ", i); break; // case ObstacleType::WALL: cmb->addItem("Wall", i); break; // case ObstacleType::WINDOW: cmb->addItem("Window", i); break; // case ObstacleType::HANDRAIL:cmb->addItem("Handrail", i); break; // case ObstacleType::PILLAR: cmb->addItem("Pillar", i); break; // case ObstacleType::_END: throw 1; // } // } // return cmb; //} //QComboBox* getOutlineMethods() { // using namespace Floorplan; // QComboBox* cmb = new QComboBox(); // for (int i = 0; i < (int)OutlineMethod::_END; ++i) { // switch ((OutlineMethod)i) { // case OutlineMethod::ADD: cmb->addItem("add", i); break; // case OutlineMethod::REMOVE: cmb->addItem("remove ", i); break; // case OutlineMethod::_END: throw 1; // } // } // return cmb; //} ElementParamWidget::ElementParamWidget(QWidget *parent) : QWidget(parent) { this->lay = new QGridLayout(this); //setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); //lay->setSizeConstraint(QLayout::SetMinAndMaxSize); setMinimumSize(200, 25); setMaximumSize(200, 9999); //setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); //setTitle("MapElement Parameters"); lay = new QGridLayout(); // start empty setElement(nullptr); } void ElementParamWidget::setElement(MapModelElement* el) { this->curElement = el; refresh(); } void ElementParamWidget::refresh() { while ( QWidget* w = this->findChild() ) {delete w;} delete this->layout(); this->lay = new QGridLayout(this); this->setLayout(lay); int r = 0; MapModelElement* el = this->curElement; // // material? -> select in combo-box // { // IHasMaterial* elem = dynamic_cast(el); // if (elem) { // material.cmb = getMaterials(); // material.lbl = new QLabel("material", this); // lay->addWidget(material.lbl,r,0); // lay->addWidget(material.cmb,r,1); // connect(material.cmb , SIGNAL(currentIndexChanged(int)), this, SLOT(onMaterialChange())); // material.cmb->setCurrentIndex((int)elem->getMaterial()); // ++r; // } // } // // obstacle-type? -> select in combo-box // { // IHasObstacleType* elem = dynamic_cast(el); // if (elem) { // obstacleType.cmb = getObstacleTypes(); // obstacleType.lbl = new QLabel("type", this); // lay->addWidget(obstacleType.lbl,r,0); // lay->addWidget(obstacleType.cmb,r,1); // connect(obstacleType.cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(onObstacleTypeChange())); // obstacleType.cmb->setCurrentIndex((int)elem->getObatcleType()); // ++r; // } // } // // has outline method? // { // MMFloorOutlinePolygon* elem = dynamic_cast(el); // if (elem) { // QComboBox* cmb = getOutlineMethods(); // QLabel* lbl = new QLabel("outline", this); // lay->addWidget(lbl,r,0); // lay->addWidget(cmb,r,1); // cmb->setCurrentIndex((int)elem->getMethod()); // connect(cmb, static_cast(&QComboBox::currentIndexChanged), [elem, cmb] (int idx) { // (void) idx; // elem->setMethod( (Floorplan::OutlineMethod) cmb->currentData().toInt() ); // }); // ++r; // } // } { // does the element have "parameters" ? IHasParams* elem = dynamic_cast(el); if (elem) { EditFields::get(this, r, lay, elem); } { // does the element have editable metadata? IHasEditableMeta* elem = dynamic_cast(el); if (elem) { QPushButton* btn = new QPushButton("edit", this); connect(btn, &QPushButton::clicked, [elem] (const bool checked) { (void) checked; if (!elem->getMeta()) {elem->setMeta(new Floorplan::Meta());} // ensure meta-object is present MetaEditWidget* mew = new MetaEditWidget(elem->getMeta()); // edit mew->show(); }); lay->addWidget(new QLabel("Meta", this),r,0); lay->addWidget(btn,r,1); } } } //setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); //lay->setSizeConstraint(QLayout::SetMinimumSize); //setLayout(lay); setMinimumSize(150, 30+r*24); setMaximumSize(250, 30+r*24); //resize(100, 20+r*22); //emit update(); //setVisible(false); //setVisible(true); }