#include "bgimagepage3.h"
#include "ui_bgimagepage3.h"

BGImagePage3::BGImagePage3(QWidget *parent) :
    QWizardPage(parent),
    ui(new Ui::BGImagePage3)
{
    ui->setupUi(this);

    //Register fields
    registerField("cbCreateTXMB", ui->cbCreateTXMB);
    registerField("cbCreateTXMP", ui->cbCreateTXMP);
    registerField("leLevelId", ui->leLevelId);
    registerField("leImageName", ui->leImageName);
    registerField("leTXMBName", ui->leTXMBName);
}

BGImagePage3::~BGImagePage3()
{
    delete ui;
}

void BGImagePage3::initializePage()
{
    // To the first time the page is displayed and when the wizard is restarted
    generateImageName();
}

void BGImagePage3::on_cbCreateTXMP_toggled(bool checked)
{
    if(!checked){
        ui->cbCreateTXMB->setDisabled(true);
        ui->cbCreateTXMB->setChecked(false);
    }
    else{
        ui->cbCreateTXMB->setDisabled(false);
    }

}

void BGImagePage3::on_cbCreateTXMB_toggled(bool checked)
{
    if(!checked){
        ui->leTXMBName->setDisabled(true);
        ui->leTXMBName->clear();
    }
    else{
        ui->leTXMBName->setDisabled(false);
    }
}

void BGImagePage3::on_leLevelId_textChanged(const QString &arg1)
{
    if(!arg1.isEmpty() && !Util::Validation::isStringInteger(arg1)){
        Util::Dialogs::showError("Level id must be a number.");
        ui->leLevelId->clear();
        return;
    }

    if(!arg1.trimmed().isEmpty()){
        generateImageName();
    }
}

void BGImagePage3::on_cbTargetForImage_currentIndexChanged(const QString)
{
    generateImageName();
}

void BGImagePage3::generateImageName(){

    QString type = ui->cbTargetForImage->currentText();
    QString backgroundName;
    QString txmbName;
    QString levelNumber = "00";

    if(ui->leLevelId->text().length() == 1){
        levelNumber = ("0" + ui->leLevelId->text());
    }
    else if(ui->leLevelId->text().length() > 1){
        levelNumber = ui->leLevelId->text();
    }

    if(type == "Other"){
        backgroundName = "TXMPother";
        txmbName = "TXMBother";
        ui->leLevelId->clear();
        ui->leLevelId->setEnabled(false);
    }
    else if(type == "Intro Screen"){
        backgroundName = "TXMPlevel" + levelNumber + "_intro_";
        txmbName = "TXMBintro_splash_screen";
        ui->leLevelId->setEnabled(true);
    }
    else if(type == "Win Screen"){
        backgroundName = "TXMPlevel" + levelNumber + "_win_";
        txmbName = "TXMBwin_splash_screen";
        ui->leLevelId->setEnabled(true);
    }
    else if(type == "Loose Screen"){
        backgroundName = "TXMPfail01_";
        txmbName = "TXMBfail_splash_screen";
        ui->leLevelId->clear();
        ui->leLevelId->setEnabled(false);
    }
    else if(type == "Main Menu Screen"){
        backgroundName = "TXMPOni_startup_";
        txmbName = "TXMBpict_mainmenu";
        ui->leLevelId->clear();
        ui->leLevelId->setEnabled(false);
    }
    else if(type == "Options Menu Screen"){
        backgroundName = "TXMPoptions_";
        txmbName = "TXMBpict_options_background";
        ui->leLevelId->clear();
        ui->leLevelId->setEnabled(false);
    }
    else if(type == "Load Level Screen"){
        backgroundName = "TXMPoni_kanji_";
        txmbName = "TXMBpict_loadgame_background";
        ui->leLevelId->clear();
        ui->leLevelId->setEnabled(false);
    }

    ui->leImageName->setText(backgroundName);

    if(ui->cbCreateTXMB->isChecked()){
        ui->leTXMBName->setText(txmbName);
    }
}


bool BGImagePage3::validatePage(){

    QStringList namesList;

    if(ui->leImageName->text().trimmed().isEmpty()){
        Util::Dialogs::showError("You need to input a name to the image!");
        return false;
    }

    if(ui->cbCreateTXMB->isChecked() && ui->leTXMBName->text().trimmed().isEmpty()){
        Util::Dialogs::showError("You need to input a name to the TXMB file!");
        return false;
    }

    return true;
}

