#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("
"); } //ui->plainText->appendHtml("
"); //Устройства/приборы bool flNeedMMEL = false; str = QString("%1").arg(tr("Devices/instruments:")); ui->plainText->appendHtml(str); for(FIMReportWarehouseItem whItem : report.warehouseItemList) { /* //WhItem ID str = QString("

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("
"); } //ui->plainText->appendHtml("
"); if(flNeedMMEL) { QString strMMEL = tr("Trainee believes that:"); str = QString("

%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; } }