#include "checkertask.h"
#include "specialmessagebox.h"
#include "ui_checkertask.h"
#include "fimtaskswidget.h"
#include "ammtaskswidget.h"
CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent) :
QWidget(parent),
ui(new Ui::CheckerTask),
connectorToServer(connectorToServer),
fimTasksWidget(nullptr),
ammTasksWidget(nullptr),
reportFimWidget(nullptr),
flChanged(false),
id_task(0),
type(TypeChecker::fim_check)
{
ui->setupUi(this);
ui->btnNew->setObjectName("btnNew");
ui->btnCheckup->setObjectName("btnCheckup");
ui->btnWrong->setObjectName("btnWrong");
ui->btnCompleted->setObjectName("btnCompleted");
this->type = type;
if(type == TypeChecker::fim_check)
{
fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(fimTasksWidget);
fimTasksWidget->setMaximumHeight(300);
ui->lblName->setVisible(false);
ui->lblDMcode->setVisible(false);
ui->plainText->setReadOnly(true);
ui->plainText->setObjectName("plainText");
reportFimWidget = new ReportFimWidget(this);
ui->horizontalLayout_ReportWidget->addWidget(reportFimWidget);
}
else if(type == TypeChecker::amm_check)
{
ammTasksWidget = new AMMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(ammTasksWidget);
ui->lblName->setVisible(false);
ui->lblDMcode->setVisible(false);
ui->plainText->setVisible(false);
ui->groupBox_Report->setVisible(false);
ui->btnWrong->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setVisible(false);
ui->btnCheckup->setVisible(false);
}
ui->plainText->setVisible(false);
}
CheckerTask::~CheckerTask()
{
if(fimTasksWidget)
{
delete fimTasksWidget;
fimTasksWidget = nullptr;
}
if(ammTasksWidget)
{
delete ammTasksWidget;
ammTasksWidget = nullptr;
}
if(reportFimWidget)
{
delete reportFimWidget;
reportFimWidget = nullptr;
}
delete ui;
}
void CheckerTask::closeEvent(QCloseEvent *event)
{
}
void CheckerTask::setTask(TaskAmmFim* task)
{
this->task = *task;
id_task = task->getID();
if(type == TypeChecker::fim_check)
{
//Задача
fimTasksWidget->setOneTaskFim(&this->task);
//Репорт
outReport(this->task.report);
reportFimWidget->setReport(this->task.report);
if(this->task.status == "new")
{
ui->btnNew->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(false);
ui->plainText->setVisible(false);
ui->groupBox_Report->setVisible(false);
}
else if(this->task.status == "checkup")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(true);
ui->btnCompleted->setEnabled(true);
}
else if(this->task.status == "failed")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(true);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(true);
}
else if(this->task.status == "completed")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(true);
ui->btnWrong->setEnabled(true);
ui->btnCompleted->setEnabled(false);
}
else
{
ui->btnNew->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(false);
}
}
else if(type == TypeChecker::amm_check)
{
//Задача
ammTasksWidget->setOneTaskAmm(&this->task);
if(this->task.status == "new")
{
ui->btnNew->setEnabled(false);
ui->btnCompleted->setEnabled(true);
}
else
{
ui->btnNew->setEnabled(true);
ui->btnCompleted->setEnabled(false);
}
ui->lblName->setText(task->ammProcedure.title);
ui->lblDMcode->setText(task->ammProcedure.dmCode);
}
//Статус
if(this->task.status == "completed")
{
ui->lblStatusCurrText->setText(tr("completed"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else if(this->task.status == "failed")
{
ui->lblStatusCurrText->setText(tr("failed"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleRed.png")));
}
else if(this->task.status == "checkup")
{
ui->lblStatusCurrText->setText(tr("checkup"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleYellow.png")));
}
else
{
ui->lblStatusCurrText->setText(tr("new"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/new.png")));
}
}
TaskAmmFim CheckerTask::getTask()
{
return this->task;
}
void CheckerTask::setModule(Module *module)
{
this->module = *module;
id_task = this->module.getID();
}
void CheckerTask::outReport(FIMReport report)
{
QString str;
/*
str = QString("Report ID: %1").arg(QString::number(report.id));
ui->plainText->appendHtml(str);
ui->plainText->appendHtml("
");
*/
//Действия обучаемого
str = QString("%1").arg(tr("Trainee's actions:"));
ui->plainText->appendHtml(str);
for(FIMReportItem item : report.itemList)
{
/*
//Item ID
str = QString("
Item ID: %1
").arg(QString::number(item.id)); ui->plainText->appendHtml(str); */ //AMM/FIM str = QString("%1
").arg(item.procedure.doc); ui->plainText->appendHtml(str); //Title str = QString("%1
").arg(item.procedure.title); ui->plainText->appendHtml(str); //DMcode str = QString("%1
").arg(item.procedure.dmCode); ui->plainText->appendHtml(str); //Result str = item.procedure.result; if(str == "viewed") str = tr("viewed"); else if(str == "completed") str = tr("completed"); str = QString("%1
").arg(str); ui->plainText->appendHtml(str); //Text str = QString("%1 %2
").arg(tr("Comment:"), item.text); ui->plainText->appendHtml(str); ui->plainText->appendHtml("WhItem ID: %1
").arg(QString::number(whItem.id)); ui->plainText->appendHtml(str); */ // статус GameObject-а в сцене str = QString("%1
").arg(getStatusStr(whItem.status)); ui->plainText->appendHtml(str); if(whItem.status == 0) flNeedMMEL = true; // имя GameObject-а в сцене //str = QString("%1
").arg(whItem.goName); //ui->plainText->appendHtml(str); // человеческое название прибора str = QString("%1
").arg(whItem.objName); ui->plainText->appendHtml(str); // его код из документации str = QString("%1
").arg(whItem.code); ui->plainText->appendHtml(str); ui->plainText->appendHtml("%1
").arg(strMMEL); ui->plainText->appendHtml(str); if(report.mmel) { strMMEL = tr("The aircraft may operate with its equipment removed in accordance with the \"Master Minimum Equipment List\""); str = QString("%1
").arg(strMMEL); ui->plainText->appendHtml(str); } else { strMMEL = tr("The aircraft cannot be flown with equipment removed in accordance with the \"Master Minimum Equipment List\""); str = QString("%1
").arg(strMMEL); ui->plainText->appendHtml(str); } } } QString CheckerTask::getStatusStr(int status) { switch (status) { //демонтировано case 0: return tr("dismantled"); //неисправно case 1: return tr("faulty"); //заменено на новое со склада case 2: return tr("replaced with a new one from the warehouse"); //unknown default: return "unknown"; } } //НЕВЕРНО void CheckerTask::on_btnWrong_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; status = "failed"; msgString = tr("Change task status?\nThe status will be set:\n'failed'"); } if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } } //ВЫПОЛНЕНО void CheckerTask::on_btnCompleted_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; status = "completed"; msgString = tr("Change task status?\nThe status will be set:\n'completed'"); } else if(type == TypeChecker::amm_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; status = "completed"; msgString = tr("Change task status?\nThe status will be set:\n'completed'"); } if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } } //НОВАЯ void CheckerTask::on_btnNew_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; status = "new"; msgString = tr("Change task status?\nThe status will be set:\n'new'"); } else if(type == TypeChecker::amm_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; status = "new"; msgString = tr("Change task status?\nThe status will be set:\n'new'"); } if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } } //НА ПРОВЕРКЕ void CheckerTask::on_btnCheckup_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; status = "checkup"; msgString = tr("Change task status?\nThe status will be set:\n'checkup'"); } if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } }