From 8ad6d06f186a1317c5a284e7d19cacfc7af008f2 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Fri, 28 Nov 2025 12:32:53 +0300 Subject: [PATCH] closeChildDlg --- .../tasks/ammtaskswidget.cpp | 39 +++++++++++++++---- InstructorsAndTrainees/tasks/ammtaskswidget.h | 9 ++++- InstructorsAndTrainees/tasks/checkertask.cpp | 26 +++++++++++-- InstructorsAndTrainees/tasks/checkertask.h | 3 ++ .../tasks/fimtaskswidget.cpp | 30 +++++++++++--- InstructorsAndTrainees/tasks/fimtaskswidget.h | 8 +++- .../trainees/personalcardtrainee.cpp | 7 ++-- 7 files changed, 100 insertions(+), 22 deletions(-) diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index f66b0d9..4dcee7c 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -22,6 +22,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre waitAnimationWidget(nullptr), dlgCheckerTask(nullptr), dlgListSubProc(nullptr), + specialMessageBox(nullptr), flOnlyActive(false), lastCurrentID(0) { @@ -145,16 +146,19 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event) waitAnimationWidget->resize(size); } -void AMMtasksWidget::closeDlgCheckTask() +void AMMtasksWidget::closeEvent(QCloseEvent *event) +{ + closeChildDlg(); +} + +void AMMtasksWidget::closeChildDlg() { if(dlgCheckerTask) dlgCheckerTask->close(); -} - -void AMMtasksWidget::closeDlgListSubProc() -{ if(dlgListSubProc) dlgListSubProc->close(); + if(specialMessageBox) + specialMessageBox->close(); } void AMMtasksWidget::changeEvent(QEvent *event) @@ -325,10 +329,16 @@ void AMMtasksWidget::slot_UpdateSubProcForDMCode(QString dmCode) lastSelectedTask.listSubProc.clear(); dlgListSubProc->getListCheckedSubProc(&lastSelectedTask.listSubProc); - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")); + if(specialMessageBox->exec() == QDialog::Accepted) { connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &lastSelectedTask); } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } break; } case QDialog::Rejected: @@ -347,10 +357,16 @@ void AMMtasksWidget::slot_UpdateSubProcForDMCode(QString dmCode) { lastSelectedTask.listSubProc.clear(); - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")); + if(specialMessageBox->exec() == QDialog::Accepted) { connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &lastSelectedTask); } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } } } @@ -504,11 +520,18 @@ void AMMtasksWidget::on_btnDelete_clicked() int id = treeItemCurrent->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("The deletion will be irrevocable.\nDelete it anyway?")).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("The deletion will be irrevocable.\nDelete it anyway?")); + + if(specialMessageBox->exec() == QDialog::Accepted) { waitAnimationWidget->showWithPlay(); connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE, id); } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } } } diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 900a4e9..b85ed5e 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -10,6 +10,7 @@ #include "dialogchekertask.h" #include "dialoglistsubproc.h" #include "waitanimationwidget.h" +#include "specialmessagebox.h" namespace Ui { class AMMtasksWidget; @@ -31,8 +32,10 @@ public: public: void resizeEvent(QResizeEvent *event) override; - void closeDlgCheckTask(); - void closeDlgListSubProc(); + void closeEvent(QCloseEvent *event) override; + + void closeChildDlg(); + protected: void changeEvent(QEvent * event) override; @@ -100,6 +103,8 @@ private: DialogListSubProc* dlgListSubProc; + SpecialMessageBox* specialMessageBox; + bool flOnlyActive; //AMM int lastCurrentID; diff --git a/InstructorsAndTrainees/tasks/checkertask.cpp b/InstructorsAndTrainees/tasks/checkertask.cpp index b0ab2ac..77e44f8 100644 --- a/InstructorsAndTrainees/tasks/checkertask.cpp +++ b/InstructorsAndTrainees/tasks/checkertask.cpp @@ -8,6 +8,7 @@ CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, QString type, QWi ui(new Ui::CheckerTask), connectorToServer(connectorToServer), fimTasksWidget(nullptr), + specialMessageBox(nullptr), flChanged(false), id_task(0), type("fim") @@ -48,12 +49,19 @@ CheckerTask::~CheckerTask() delete fimTasksWidget; fimTasksWidget = nullptr; } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } + delete ui; } void CheckerTask::closeEvent(QCloseEvent *event) { - + if(specialMessageBox) + specialMessageBox->close(); } void CheckerTask::setTask(TaskAmmFim* task) @@ -175,12 +183,18 @@ void CheckerTask::on_btnWrong_clicked() msgString = tr("Change task status?\nThe status will be set:\n'new'"); } - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, msgString).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, msgString); + if(specialMessageBox->exec() == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } void CheckerTask::on_btnRight_clicked() @@ -202,10 +216,16 @@ void CheckerTask::on_btnRight_clicked() msgString = tr("Change task status?\nThe status will be set:\n'completed'"); } - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, msgString).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, msgString); + if(specialMessageBox->exec() == QDialog::Accepted) { connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); this->parentWidget()->close(); flChanged = true; } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } diff --git a/InstructorsAndTrainees/tasks/checkertask.h b/InstructorsAndTrainees/tasks/checkertask.h index f08edeb..5468af1 100644 --- a/InstructorsAndTrainees/tasks/checkertask.h +++ b/InstructorsAndTrainees/tasks/checkertask.h @@ -6,6 +6,7 @@ //#include "fimtaskswidget.h" #include "module.h" #include "connectortoserver.h" +#include "specialmessagebox.h" namespace Ui { class CheckerTask; @@ -47,6 +48,8 @@ private: ConnectorToServer* connectorToServer; FIMtasksWidget* fimTasksWidget; + SpecialMessageBox* specialMessageBox; + bool flChanged; int id_task; QString type; diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index c87c9e2..733967e 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -22,6 +22,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre taskTreePreparation(nullptr), waitAnimationWidget(nullptr), dlgCheckerTask(nullptr), + specialMessageBox(nullptr), userName(""), lastCurrentID(0) { @@ -101,9 +102,9 @@ FIMtasksWidget::~FIMtasksWidget() delete treeWidget; if(dlgCheckerTask) - { dlgCheckerTask->close(); - } + if(specialMessageBox) + specialMessageBox->close(); delete ui; } @@ -130,10 +131,17 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event) waitAnimationWidget->resize(size); } -void FIMtasksWidget::closeDlgCheckTask() +void FIMtasksWidget::closeEvent(QCloseEvent *event) +{ + closeChildDlg(); +} + +void FIMtasksWidget::closeChildDlg() { if(dlgCheckerTask) dlgCheckerTask->close(); + if(specialMessageBox) + specialMessageBox->close(); } void FIMtasksWidget::changeEvent(QEvent *event) @@ -393,11 +401,17 @@ void FIMtasksWidget::on_btnDelete_clicked() int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("The deletion will be irrevocable.\nDelete it anyway?")).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("The deletion will be irrevocable.\nDelete it anyway?")); + if(specialMessageBox->exec() == QDialog::Accepted) { waitAnimationWidget->showWithPlay(); connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE, id); } + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } } } @@ -437,8 +451,14 @@ void FIMtasksWidget::on_btnCheck_clicked() void FIMtasksWidget::on_btnAssignTask_clicked() { - if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted) + specialMessageBox = new SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")); + if(specialMessageBox->exec() == QDialog::Accepted) assignTaskFIMtoTrainee(); + if(specialMessageBox) + { + delete specialMessageBox; + specialMessageBox = nullptr; + } } void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask) diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index 34450a3..15347c2 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -8,6 +8,7 @@ #include "tasktreepreparation.h" #include "dialogchekertask.h" #include "waitanimationwidget.h" +#include "specialmessagebox.h" namespace Ui { class FIMtasksWidget; @@ -31,7 +32,10 @@ public: public: void resizeEvent(QResizeEvent *event) override; - void closeDlgCheckTask(); + void closeEvent(QCloseEvent *event) override; + + void closeChildDlg(); + protected: void changeEvent(QEvent * event) override; @@ -88,6 +92,8 @@ private: DialogChekerTask* dlgCheckerTask; + SpecialMessageBox* specialMessageBox; + QString userName; //FIM int lastCurrentID; diff --git a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp index f933ce4..ba2d006 100644 --- a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp +++ b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp @@ -78,10 +78,11 @@ PersonalCardTrainee::~PersonalCardTrainee() void PersonalCardTrainee::closeEvent(QCloseEvent *event) { - fimTasksWidget_personal->closeDlgCheckTask(); - ammTasksWidget_personal->closeDlgCheckTask(); + fimTasksWidget_personal->closeChildDlg(); + fimTasksWidget_common->closeChildDlg(); - ammTasksWidget_common->closeDlgListSubProc(); + ammTasksWidget_personal->closeChildDlg(); + ammTasksWidget_common->closeChildDlg(); } void PersonalCardTrainee::loadInfo()