This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
IndoorMap/params/LayerTree.cpp
root e5e19779d5 worked on android port
opengl1 -> es
2018-01-31 17:15:11 +01:00

95 lines
2.3 KiB
C++

#include "../fixC11.h"
#include "LayerTree.h"
#include <QTreeView>
#include <QPushButton>
#include <QHBoxLayout>
#include <QGridLayout>
#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<MapLayer*>(idx.internalPointer());
MMFloors* floors = dynamic_cast<MMFloors*>(ml);
btnNew->setEnabled( floors != nullptr );
MMFloor* floor = dynamic_cast<MMFloor*>(ml);
btnDelete->setEnabled( floor != nullptr );
emit layerSelected(idx);
}
void LayerTree::onBtnNew() {
QModelIndex idx = tree->selectionModel()->selectedIndexes().first();
MapLayer* ml = static_cast<MapLayer*>(idx.internalPointer());
MMFloors* floors = dynamic_cast<MMFloors*>(ml);
if (floors) {
floors->createFloor();
model->getMapModel()->reset();
}
}
void LayerTree::onBtnDelete() {
QModelIndex idx = tree->selectionModel()->selectedIndexes().first();
MapLayer* ml = static_cast<MapLayer*>(idx.internalPointer());
MMFloor* floor= dynamic_cast<MMFloor*>(ml);
if (floor) {
floor->deleteMe();
model->getMapModel()->reset();
}
}