#include "MainWindow.h"
#include <QVBoxLayout>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QIntValidator>
#include <QRegExpValidator>
#include <QRegExp>
#include <QRadioButton>
#include <QPushButton>
#include <QVector>
#include "Pregunta.h"
#include "PreguntaSeleccionUnica.h"

MainWindow::MainWindow(QWidget *parent)
    :QMainWindow(parent)
{
    //Creacion del widget que servira de centralWidget
    //y creacion de los layouts
    QWidget* centralWidget = new QWidget(this);
    QVBoxLayout* mainLayout = new QVBoxLayout();
    QHBoxLayout* buttonLayout = new QHBoxLayout();
    editLayout = new QGridLayout();

    //Se le establece un tamanno determinado al MainWindow
    this->setFixedSize(ancho,alto);

    //Se establecen las relaciones entre los layouts
    this->setCentralWidget(centralWidget);
    centralWidget->setLayout(mainLayout);
    mainLayout->addLayout(editLayout);
    mainLayout->addStretch();
    mainLayout->addLayout(buttonLayout);

    //Se crea y agrega en el layout el QLabel que mostrara la pregunta
    etiquetaPregunta = new QLabel();
    editLayout->addWidget(etiquetaPregunta,0,0);
    //etiquetaPuntaje = new QLabel();
    //editLayout->addWidget(etiquetaPuntaje,5,0);

    //Se crea, agrega su validador y agrega al layout el QEditLine que
    //recibira una respuesta numerica
    respuestaNumerica = new QLineEdit();
    respuestaNumerica->setValidator(new QIntValidator(-10,100000,respuestaNumerica));
    editLayout->addWidget(respuestaNumerica,1,0);

    //Se crea, agrega su validador y agrega al layout el QEditLine que
    //recibira una respuesta textual
    respuestaTextual = new QLineEdit();
    respuestaTextual->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z ,.;:!?''""]{1,255}")));
    editLayout->addWidget(respuestaTextual,1,0);

    //Se crean los botones y conexiones de los botones
    //botonSalir y botonContinuar
    QPushButton* botonSalir = new QPushButton("Salir");
    connect(botonSalir, SIGNAL(clicked()), this, SLOT(close()));
    QPushButton* botonContinuar = new QPushButton("Continuar");
    //connect(botonSalir, SIGNAL(clicked()), ,SLOT());
    buttonLayout->addWidget(botonContinuar,0,Qt::AlignCenter);
    buttonLayout->addWidget(botonSalir,0,Qt::AlignRight);
    //crearPartida();

}

MainWindow::~MainWindow()
{
}

void MainWindow::mostrarPregunta(Pregunta* pregunta/*, int puntaje*/){

    limpiarVentana();
    etiquetaPregunta->setText(pregunta->obtenerTexto());
    //etiquetaPuntaje->setNum(puntaje);

    if(pregunta->obtenerTipo() == "numeric"){

        respuestaNumerica->setVisible(true);

    }else if(pregunta->obtenerTipo() == "textual"){

        respuestaTextual->setVisible(true);

    }else{

        QVector<QString> temporal = dynamic_cast<PreguntaSeleccionUnica*>(pregunta)->obtenerOpciones();

        for(int posicion = 1; posicion <= temporal.size(); ++posicion){

            QRadioButton* opcionSeleccion = new QRadioButton(temporal[posicion - 1]);
            editLayout->addWidget(opcionSeleccion,posicion,0);

        }


    }

}
/*
Este metodo altera la forma de mostrar la ventana principal
*/
void MainWindow::crearPartida(){

    QLabel* etiquetaUsuario = new QLabel("Jugador: ");
    editLayout->addWidget(etiquetaUsuario,0,0);
    QLineEdit* usuario = new QLineEdit();
    usuario->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z 0-9.]{1,15}")));
    editLayout->addWidget(usuario,0,1,Qt::AlignRight);

}

void MainWindow::limpiarVentana(){

    respuestaNumerica->setVisible(false);
    respuestaTextual->setVisible(false);

}

