
#include "include/Lights.hpp"
#include "ILightSceneNode.h"

Lights::Lights(QWidget *parent) : QDialog(parent)
{
    ui.setupUi(this);
    
    connect(ui.pushButtonApply, SIGNAL(clicked()), this, SLOT(apply()));
	connect(ui.pushButtonAdd, SIGNAL(clicked()), this, SLOT(lightAdd()));
	connect(ui.pushButtonDelete, SIGNAL(clicked()), this, SLOT(lightDelete()));
	connect(ui.comboBoxID, SIGNAL(activated()), this, SLOT(setID()));
	connect(ui.comboBoxType, SIGNAL(activated()), this, SLOT(lightType()));
}

void Lights::setLightSceneNode(array<scene::ISceneNode *> lights)
{
	lightArray = lights;

	QStringList list;
	QString str;
	while(!list.isEmpty())
		str = list.takeFirst();

	//while(int i = ui.comboBoxID->count())
	//	ui.comboBoxID->removeItem(i-1);
	ui.comboBoxID->clear();

	if(lights.size()){
		for(u32 i = 0; i < lights.size(); i++)
			list.append(str.setNum(i));      //scene->addToDeletionQueue(lights[i]);
		
		ui.comboBoxID->addItems(list);
		

/*
		lightNode = lights[0];
    
		video::SLight data = lightnode->getLightData();
    
		ui.spinBoxAmbientRed->setValue(data.AmbientColor.r);
		ui.spinBoxAmbientGreen->setValue(data.AmbientColor.g);
		ui.spinBoxAmbientBlue->setValue(data.AmbientColor.b);
		
		ui.spinBoxDiffuseRed->setValue(data.DiffuseColor.r);
		ui.spinBoxDiffuseGreen->setValue(data.DiffuseColor.g);
		ui.spinBoxDiffuseBlue->setValue(data.DiffuseColor.b);
    
		ui.spinBoxSpecularRed->setValue(data.SpecularColor.r);
		ui.spinBoxSpecularGreen->setValue(data.SpecularColor.g);
		ui.spinBoxSpecularBlue->setValue(data.SpecularColor.b);
*/
	}
}

void Lights::setID()
{
	//int i = ui.comboBoxID->currentIndex();
/*
	lightNode = (scene::ILightSceneNode*)(lightArray[i]);

		video::SLight data = lightNode->getLightData();

		ui.spinBoxAmbientRed->setValue(data.AmbientColor.r);
		ui.spinBoxAmbientGreen->setValue(data.AmbientColor.g);
		ui.spinBoxAmbientBlue->setValue(data.AmbientColor.b);
	
		ui.spinBoxDiffuseRed->setValue(data.DiffuseColor.r);
		ui.spinBoxDiffuseGreen->setValue(data.DiffuseColor.g);
		ui.spinBoxDiffuseBlue->setValue(data.DiffuseColor.b);
    
		ui.spinBoxSpecularRed->setValue(data.SpecularColor.r);
		ui.spinBoxSpecularGreen->setValue(data.SpecularColor.g);
		ui.spinBoxSpecularBlue->setValue(data.SpecularColor.b);
*/

		ui.lineEditPositionZ->setText("activated");
}

void Lights::apply()
{
	ui.lineEditPositionX->setText("applied");
/*
    video::SLight data;
    
    float r, g, b;
    
    qDebug() << "checked ? " << (ui.checkBoxAmbient->checkState() == Qt::Checked ? "checked" : "not");
    
    r = ui.spinBoxAmbientRed->value();
    g = ui.checkBoxAmbient->checkState() != Qt::Checked ? ui.spinBoxAmbientGreen->value() : r;
    b = ui.checkBoxAmbient->checkState() != Qt::Checked ? ui.spinBoxAmbientBlue->value() : r;
    data.AmbientColor = video::SColorf(r, g, b);
    
    r = ui.spinBoxDiffuseRed->value();
    g = ui.checkBoxDiffuse->checkState() != Qt::Checked ? ui.spinBoxDiffuseGreen->value() : r;
    b = ui.checkBoxDiffuse->checkState() != Qt::Checked ? ui.spinBoxDiffuseBlue->value() : r;
    data.DiffuseColor = video::SColorf(r, g, b);
    
    r = ui.spinBoxSpecularRed->value();
    g = ui.checkBoxSpecular->checkState() != Qt::Checked ? ui.spinBoxSpecularGreen->value() : r;
    b = ui.checkBoxSpecular->checkState() != Qt::Checked ? ui.spinBoxSpecularBlue->value() : r;
    data.SpecularColor = video::SColorf(r, g, b);
    
    data.CastShadows = true;
    data.Radius = 100.0f;
    data.Type = video::ELT_POINT;
    
    lightNode->setLightData(data);
*/

}

void Lights::lightAdd()
{
		ui.lineEditDirectionX->setText("added");
}

void Lights::lightDelete()
{
		ui.lineEditPositionY->setText("deleted");
}
void Lights::lightType()
{
		ui.lineEditDirectionY->setText("type");
}

