/* * © 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 "LayerTree.h" #include #include #include #include #include "../tree/MapTreeModel.h" #include "../UIHelper.h" LayerTree::LayerTree(QWidget *parent) : QWidget(parent) { QGridLayout* layGrid = new QGridLayout(this); tree = new QTreeView(this); tree->setMinimumSize(150, 200); QWidget* wButtons = new QWidget(); QHBoxLayout* layButtons = new QHBoxLayout(wButtons); btnNew = new QPushButton(this); btnNew->setIcon(UIHelper::getIcon("add")); btnNew->setMaximumSize(32,32); btnNew->setMinimumSize(32,32); btnNew->setEnabled(false); layButtons->addWidget(btnNew); btnDelete = new QPushButton(this); btnDelete->setIcon(UIHelper::getIcon("remove")); btnDelete->setMaximumSize(32,32); btnDelete->setMinimumSize(32,32); btnDelete->setEnabled(false); layButtons->addWidget(btnDelete); layGrid->addWidget(tree, 0,0,1,1); layGrid->addWidget(wButtons, 1, 0, 1, 1); connect(btnNew, SIGNAL(clicked(bool)), this, SLOT(onBtnNew())); connect(btnDelete, SIGNAL(clicked(bool)), this, SLOT(onBtnDelete())); } void LayerTree::expandAll() { tree->expandAll(); } void LayerTree::setModel(MapTreeModel* model) { this->model = model; this->tree->setModel(model); // tree model selection events if (!connect(tree->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)), this, SLOT(onLayerSelected(QModelIndex)))) {throw "error";} } void LayerTree::onLayerSelected(QModelIndex idx) { MapLayer* ml = static_cast(idx.internalPointer()); MMFloors* floors = dynamic_cast(ml); btnNew->setEnabled( floors != nullptr ); MMFloor* floor = dynamic_cast(ml); btnDelete->setEnabled( floor != nullptr ); emit layerSelected(idx); } void LayerTree::onBtnNew() { QModelIndex idx = tree->selectionModel()->selectedIndexes().first(); MapLayer* ml = static_cast(idx.internalPointer()); MMFloors* floors = dynamic_cast(ml); if (floors) { floors->createFloor(); model->getMapModel()->reset(); } } void LayerTree::onBtnDelete() { QModelIndex idx = tree->selectionModel()->selectedIndexes().first(); MapLayer* ml = static_cast(idx.internalPointer()); MMFloor* floor= dynamic_cast(ml); if (floor) { floor->deleteMe(); model->getMapModel()->reset(); } }