105 lines
2.6 KiB
C++
105 lines
2.6 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 "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();
|
||
}
|
||
}
|