#include "dialog.h"
#include "ui_dialog.h"
#include "ellipsoids.h"
#include "widget.h"
#include <iostream>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    ui->comboBox->addItem("b");
    ui->comboBox->addItem("e");
    ui->comboBox->addItem("rf");
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_btn_save_ellip_clicked()
{

    //std::cout << "Start adding" << std::endl;
    Ellipsoid* e = new Ellipsoid();

    //TODO Validate input fields
    if(ui->line_name->text().isEmpty())
        return;
    if(ui->line_a->text().isEmpty())
        return;
    if(ui->line_berf->text().isEmpty())
        return;

    bool ok, test_a = true, test_berf = true;
    QLocale::setDefault(QLocale::C);
    // nevim jestli je tohle uplne stastne reseni, ale zajisti to, ze pri konverzi toDouble muze byt desetinny oddelovac jen tecka

    QString a = ui->line_a->text();
    //double ad = a.toDouble(&ok);
    if(!a.toDouble(&ok)) {
        //std::cout << "FALSE 1  " << ad << std::endl;
        test_a = false;
    }

    QString berf = ui->line_berf->text();
    //double berfd = berf.toDouble(&ok);
    if(!berf.toDouble(&ok)) {
        //std::cout << "FALSE 2  " << berfd << std::endl;
        test_berf = false;
    }

    if(!test_a || !test_berf) {
        if(!test_a) {
            QPalette palette_a = ui->line_a->palette();
            palette_a.setColor(ui->line_a->backgroundRole(), Qt::red);
            ui->line_a->setPalette(palette_a);
        }
        if(!test_berf) {
            QPalette palette_berf = ui->line_berf->palette();
            palette_berf.setColor(ui->line_berf->backgroundRole(), Qt::red);
            ui->line_berf->setPalette(palette_berf);
        }
        return;
    }

    //Set all ellipsoid parameters
    e->setDescription(ui->line_name->text());
    e->setName(ui->line_name->text());
    e->setOsaA(ui->line_a->text());

    //std::cout << "OK 1  " << ad << std::endl;
    //std::cout << "OK 2  " << berfd << std::endl;

    QString berf_text = ui->comboBox->currentText();
    if(berf_text == "b") {
        //std::cout << "b" << std::endl;
        e->setOsaB(ui->line_berf->text());
    }
    else if(berf_text == "e") {
        //std::cout << "e" << std::endl;
        e->setE(ui->line_berf->text());
    }
    else {
        //std::cout << "rf" << std::endl;
        e->setRF(ui->line_berf->text());
    }

    //std::cout << "Ellipsoid adding" << std::endl;
    Ellipsoids::getInstance()->addEllipsoid(*e);
    //std::cout << "Ell added";
    Ellipsoids::getInstance()->addDescription(ui->line_name->text());

    // TODO Close Widget and update original UI
    //Widget::getInstance()->updateListEllips();
    this->QDialog::close();
}

void Dialog::on_btn_cancel_ellip_clicked()
{
    //TODO Remember entered values
    this->QDialog::close();
}


void Dialog::on_line_berf_textEdited()
{
    QPalette palette_berf = ui->line_berf->palette();
    palette_berf.setColor(ui->line_berf->backgroundRole(), Qt::white);
    ui->line_berf->setPalette(palette_berf);
}

void Dialog::on_line_a_textEdited()
{
    QPalette palette_a = ui->line_a->palette();
    palette_a.setColor(ui->line_a->backgroundRole(), Qt::white);
    ui->line_a->setPalette(palette_a);
}

