#include"PreguntaTextual.h"
#include<QRegExpValidator>
#include<QRegExp>
#include<iostream>

PreguntaTextual::PreguntaTextual()
    :PreguntaAbierta("textual")
{
}

PreguntaTextual::~PreguntaTextual()
{
}

bool PreguntaTextual::leerPregunta(const QDomElement& elementos){
    //Evalua si se puede leer una pregunta completamente
    if(! PreguntaAbierta::leerPregunta(elementos)){ //Llama al metodo leerPregunta de la clase padre

        return false;

    }

    int indicePrincipio = 0; //Variable que indica desde donde se comienza a "leer" un QString
    int indiceFinal = 0; //Variable que indica donde esta el caracter buscado y hasta donde se "lee"
    int extension = 0; //Variable que indica la cantidad de caracteres a "leer"
    QString temporal = ""; //Variable que almacena temporalmente la respuesta "extraida"
    //Este DO WHILE se repite hasta haber "leido" la o las posibles respuestas
    do{
        //Se busca la posicionde '|' en respuesta desde la posicion indicada por indicePrincipio
        indiceFinal = respuesta.indexOf("|", indicePrincipio);
        //Se determina la cantidad de caracteres a leer
        extension = indiceFinal - indicePrincipio;
        //Se "extrae" de respuesta desde la posicion que da indicePrincipio la cantidad de caracteres
        //que indica extension
        temporal = respuesta.mid(indicePrincipio, extension);
        temporal = temporal.toLower(); //Se convierte todo a minuscula
        opciones.append(temporal); //Se agrega al vector opciones
        //Se reasigna el valor de indicePricipio una posicion despues del caracter '|'
        indicePrincipio = indiceFinal + 1;
        //Este IF evalua si ya se leyo toda la respuesta y no se (volvio a) encontrar
        //el caracter '|', si la condicion se cumple, "rompe" el DO WHILE
        if(indiceFinal == -1){

            break;

        }


    }while(true);

    return true;

}

int PreguntaTextual::aplicar(const QString& respuestaUsuario){

    for(int contador = 0; contador < opciones.size(); ++contador){

        if(respuestaUsuario.toLower() == (opciones[contador]).toLower()){

            return 10;

        }

    }

    return 0;

}

