changed drawing for better debuging changed layer editing option to add and delete layers some minor changes
93 lines
2.3 KiB
C++
93 lines
2.3 KiB
C++
#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();
|
|
}
|
|
}
|