Объединенные ячейки списка

This commit is contained in:
2025-11-22 22:08:03 +03:00
parent 5bb9816593
commit 394eee5a16
11 changed files with 190 additions and 118 deletions

View File

@@ -50,6 +50,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady);
connect(this, &AMMtasksWidget::signal_stopParserPreparation, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_stopParserPreparation);
connect(this->connectorToServer, &ConnectorToServer::signal_UpdateSubProcForDMCode, this, &AMMtasksWidget::slot_UpdateSubProcForDMCode);
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this);
@@ -68,12 +70,6 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
if(type == TypeListTreeAMMFIM::listCommon)
{
//ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
//ui->horizontalLayout_3->addWidget(ui->btnOnlyActive);
//ui->horizontalLayout_3->addWidget(ui->btnCheck);
//ui->horizontalLayout_3->addWidget(ui->btnDelete);
//ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft);
ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false);
}
@@ -85,12 +81,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
ui->label_DocsActualed->setVisible(false);
ui->label_Actual->setVisible(false);
ui->btnDocsUpdating->setVisible(false);
//ui->verticalLayout->setAlignment(Qt::AlignmentFlag::AlignBottom);
//ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft);
}
//ui->btnCheck->setVisible(false);
}
AMMtasksWidget::~AMMtasksWidget()
@@ -306,6 +297,58 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
ui->btnOnlyActive->setEnabled(true);
}
void AMMtasksWidget::slot_UpdateSubProcForDMCode(QString dmCode)
{
if(lastSelectedTask.ammProcedure.dmCode == dmCode)
{//Его ждем
QList<SubProc> list = connectorToServer->getListSubProcForDMCode(dmCode);
lastSelectedTask.listSubProc = list;
waitAnimationWidget->hideWithStop();
if(lastSelectedTask.listSubProc.count())
{
dlgListSubProc = new DialogListSubProc(this);
dlgListSubProc->setTask(&lastSelectedTask);
switch( dlgListSubProc->exec() )
{
case QDialog::Accepted:
{
//Здесь нужно забрать список отмеченных подпроцедур
lastSelectedTask.listSubProc.clear();
dlgListSubProc->getListCheckedSubProc(&lastSelectedTask.listSubProc);
if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &lastSelectedTask);
}
break;
}
case QDialog::Rejected:
break;
default:
break;
}
if(dlgListSubProc)
{
delete dlgListSubProc;
dlgListSubProc = nullptr;
}
}
else
{
lastSelectedTask.listSubProc.clear();
if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &lastSelectedTask);
}
}
}
}
void AMMtasksWidget::preparationTreeWidget()
{
treeWidget->setColumnCount(clmnAMM_count);
@@ -409,46 +452,24 @@ void AMMtasksWidget::assignTaskAMMtoTrainee()
if(taskNew.getID())
{
//QList<SubProc> listSubProc;
if(selectSubProcForAssignTaskAMM(taskNew, &taskNew.listSubProc))
{
if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &taskNew);
}
}
{}
}
}
bool AMMtasksWidget::selectSubProcForAssignTaskAMM(TaskAmmFim taskNew, QList<SubProc>* listSubProc)
{
bool result = false;
lastSelectedTask = taskNew;
dlgListSubProc = new DialogListSubProc(connectorToServer, this);
dlgListSubProc->setTask(&taskNew);
waitAnimationWidget->showWithPlay();
switch( dlgListSubProc->exec() )
if(! connectorToServer->sendQueryListSubProc(lastSelectedTask.ammProcedure.dmCode))
{
case QDialog::Accepted:
{
//Здесь нужно забрать список отмеченных подпроцедур
result = dlgListSubProc->getListCheckedSubProc(listSubProc);
break;
}
case QDialog::Rejected:
break;
default:
break;
waitAnimationWidget->hideWithStop();
return false;
}
if(dlgListSubProc)
{
delete dlgListSubProc;
dlgListSubProc = nullptr;
}
return result;
return true;
}
void AMMtasksWidget::setCurrentTask(int id)