198 lines
5.8 KiB
C++
198 lines
5.8 KiB
C++
/*
|
||
* © 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 <Indoor/floorplan/v2/Floorplan.h>
|
||
|
||
#include <QLabel>
|
||
#include <QComboBox>
|
||
#include <QGridLayout>
|
||
#include <QLineEdit>
|
||
#include <QPushButton>
|
||
#include <QFileDialog>
|
||
#include <QCheckBox>
|
||
|
||
//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<QWidget*>() ) {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<IHasMaterial*>(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<IHasObstacleType*>(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<MMFloorOutlinePolygon*>(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<void (QComboBox::*)(int)>(&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<IHasParams*>(el);
|
||
if (elem) {
|
||
EditFields::get(this, r, lay, elem);
|
||
}
|
||
|
||
{ // does the element have editable metadata?
|
||
IHasEditableMeta* elem = dynamic_cast<IHasEditableMeta*>(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);
|
||
|
||
|
||
}
|