2013-08-17 15:04:48 +00:00
|
|
|
#include "freelayerhelper.h"
|
|
|
|
|
|
|
|
#include <QTableWidget>
|
|
|
|
#include <QPushButton>
|
|
|
|
|
|
|
|
FreeLayerHelper::FreeLayerHelper(Layers* layers, bool reverse)
|
|
|
|
{
|
|
|
|
_table = NULL;
|
|
|
|
_selected = -1;
|
|
|
|
_layers = layers;
|
|
|
|
_reverse = reverse;
|
|
|
|
}
|
|
|
|
|
|
|
|
FreeLayerHelper::~FreeLayerHelper()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::refreshLayers()
|
|
|
|
{
|
|
|
|
if (_table)
|
|
|
|
{
|
|
|
|
int selected = _selected;
|
|
|
|
|
|
|
|
emit tableUpdateNeeded();
|
|
|
|
|
2013-11-16 18:12:42 +00:00
|
|
|
int n = _layers->count();
|
2013-08-17 15:04:48 +00:00
|
|
|
if (n == 0)
|
|
|
|
{
|
|
|
|
_selected = -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (selected < 0)
|
|
|
|
{
|
|
|
|
_table->clearSelection();
|
|
|
|
emit selectionChanged(-1);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (selected >= n)
|
|
|
|
{
|
|
|
|
selected = n - 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
_table->setCurrentCell(selected, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::setLayerTable(QTableWidget* table)
|
|
|
|
{
|
|
|
|
_table = table;
|
|
|
|
|
|
|
|
connect(table, SIGNAL(currentCellChanged(int, int, int, int)), this, SLOT(tableSelectionChanged(int, int)));
|
|
|
|
|
|
|
|
refreshLayers();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::setAddButton(QPushButton* button)
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(addLayer()));
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::setDelButton(QPushButton* button)
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(deleteLayer()));
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::setDownButton(QPushButton* button)
|
|
|
|
{
|
2013-08-17 16:08:37 +00:00
|
|
|
if (_reverse)
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(moveLayerDown()));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(moveLayerUp()));
|
|
|
|
}
|
2013-08-17 15:04:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::setUpButton(QPushButton* button)
|
|
|
|
{
|
2013-08-17 16:08:37 +00:00
|
|
|
if (_reverse)
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(moveLayerUp()));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(moveLayerDown()));
|
|
|
|
}
|
2013-08-17 15:04:48 +00:00
|
|
|
}
|
|
|
|
|
2013-10-03 21:28:30 +00:00
|
|
|
void FreeLayerHelper::setEditButton(QPushButton* button)
|
|
|
|
{
|
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(startEditing()));
|
|
|
|
}
|
|
|
|
|
2013-08-17 15:04:48 +00:00
|
|
|
void FreeLayerHelper::addLayer()
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
_selected = _layers->addLayer(NULL);
|
2013-08-17 15:04:48 +00:00
|
|
|
emit(layersChanged());
|
|
|
|
refreshLayers();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::deleteLayer()
|
|
|
|
{
|
|
|
|
if (_selected >= 0)
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
_layers->removeLayer(_selected);
|
2013-08-17 15:04:48 +00:00
|
|
|
emit(layersChanged());
|
2013-08-17 16:08:37 +00:00
|
|
|
refreshLayers();
|
2013-08-17 15:04:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::moveLayerDown()
|
|
|
|
{
|
2013-08-17 16:08:37 +00:00
|
|
|
if (_selected > 0)
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
_layers->moveLayer(_selected, _selected - 1);
|
2013-08-17 16:08:37 +00:00
|
|
|
_selected--;
|
|
|
|
emit(layersChanged());
|
|
|
|
refreshLayers();
|
|
|
|
}
|
2013-08-17 15:04:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void FreeLayerHelper::moveLayerUp()
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
if (_selected >= 0 && _selected < _layers->count() - 1)
|
2013-08-17 16:08:37 +00:00
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
_layers->moveLayer(_selected, _selected + 1);
|
2013-08-17 16:08:37 +00:00
|
|
|
_selected++;
|
|
|
|
emit(layersChanged());
|
|
|
|
refreshLayers();
|
|
|
|
}
|
2013-08-17 15:04:48 +00:00
|
|
|
}
|
|
|
|
|
2013-10-03 21:28:30 +00:00
|
|
|
void FreeLayerHelper::startEditing()
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
if (_selected >= 0 && _selected < _layers->count())
|
2013-10-03 21:28:30 +00:00
|
|
|
{
|
|
|
|
emit(editRequired(_selected));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-08-17 15:04:48 +00:00
|
|
|
void FreeLayerHelper::tableSelectionChanged(int row, int)
|
|
|
|
{
|
2013-11-16 18:12:42 +00:00
|
|
|
int n = _layers->count();
|
2013-08-17 15:04:48 +00:00
|
|
|
|
|
|
|
if (n == 0 or row >= n)
|
|
|
|
{
|
|
|
|
_selected = -1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_selected = _reverse ? n - 1 - row : row;
|
|
|
|
}
|
|
|
|
|
|
|
|
emit(selectionChanged(_selected));
|
|
|
|
}
|