#include <QMessageBox>
#include <QTimer>
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow),
      m_serverLMSWidget(nullptr)
{
    ui->setupUi(this);

    //Задаём два пункта с текстом локалей в комбобоксе
    ui->cmbLanguage->addItems(QStringList() << "English" << "Русский");

    m_serverLMSWidget = new ServerLMSWidget(this);

    ui->verticalLayout_1->addWidget(m_serverLMSWidget);

    connect(this, &MainWindow::signal_LanguageChanged, m_serverLMSWidget, &ServerLMSWidget::slot_LanguageChanged);

    this->move(0, 0);
    this->showNormal();

    errorCheck();
    //this->showMaximized();
}

void MainWindow::exit()
{
    QApplication::exit(0);
}

MainWindow::~MainWindow()
{
    delete m_serverLMSWidget;
    delete ui;
}

void MainWindow::changeEvent(QEvent *event)
{
    // В случае получения события изменения языка приложения
    if (event->type() == QEvent::LanguageChange)
    {// переведём окно заново
        ui->retranslateUi(this);
    }
}

void MainWindow::on_cmbLanguage_currentIndexChanged(const QString &arg1)
{
    QString language;

    if(arg1 == QStringLiteral("English"))
        language = QString("en_EN");
    else
        language = QString("ru_RU");

    qtLanguageTranslator.load(QString("translations/testServerLMS_") + language, ".");
    qApp->installTranslator(&qtLanguageTranslator);

    emit signal_LanguageChanged(language);
}

void MainWindow::errorCheck()
{
    if(m_serverLMSWidget->hasError() == 100)
    {
        QMessageBox msgBox;

        msgBox.setWindowTitle("Ошибка!");
        msgBox.setIcon(QMessageBox::Critical);
        msgBox.setText(tr("No Client files found!"));
        msgBox.setInformativeText(tr("* check Application for the presence of a folder with a build \n"
                                     "* check SharedData for a folder with the base version and the name base"));
        msgBox.setStandardButtons(QMessageBox::Close);
        msgBox.show();
        int ret = msgBox.exec();

        if (ret == QMessageBox::Close)
        {
            //выключение с задержкой, так как eventLoop инициализируется позже
            QTimer::singleShot(1000,this,&MainWindow::exit);
        }
    }
}
