From 7c70fc90d634b8b897b3f7d1cc15b8c6da550afa Mon Sep 17 00:00:00 2001 From: krivoshein Date: Thu, 25 Sep 2025 17:56:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=B4=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D0=BE=20=D0=B2=20=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D1=85=20(=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=D1=8B=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=BD=D0=BE=D0=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/ammtaskswidget.cpp | 65 +++++++++----- InstructorsAndTrainees/tasks/ammtaskswidget.h | 5 ++ .../tasks/fimtaskswidget.cpp | 62 +++++++++----- InstructorsAndTrainees/tasks/fimtaskswidget.h | 4 + .../tasks/tasktreepreparation.cpp | 84 +++++++++---------- .../tasks/tasktreepreparation.h | 8 +- 6 files changed, 139 insertions(+), 89 deletions(-) diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index b009b2f..c224bfd 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "ammtaskswidget.h" #include "ui_ammtaskswidget.h" #include "checkertask.h" @@ -112,28 +113,10 @@ void AMMtasksWidget::waitAnimationWidgetShowWithPlay() void AMMtasksWidget::resizeEvent(QResizeEvent *event) { + setWidthColumnsTree(); + QSize size = event->size(); waitAnimationWidget->resize(size); - - int width = treeWidget->width(); - - treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_ID, 50); - treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_code, 250); - treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 130); - - int widthPMorDM; - if(type == TypeListTreeAMMFIM::listCommon) - widthPMorDM = width - (270 + 10); - else - { -#ifdef PROJECT_TYPE_DEBUG - widthPMorDM = width - (430 + 10); -#else - widthPMorDM = width - (380 + 10); -#endif - } - - treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, widthPMorDM); } void AMMtasksWidget::closeDlgCheckTask() @@ -275,14 +258,52 @@ void AMMtasksWidget::reSetHeadTreeWidget() QStringList listHeaders; if(type == TypeListTreeAMMFIM::listForTrainee) - listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")}; + listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("Status"), tr("ID")}; else - listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")}; + listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("Status"), tr("ID")}; treeWidget->setHeaderLabels(listHeaders); } +void AMMtasksWidget::setWidthColumnsTree() +{ + listWidthColumn.clear(); + + treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, 100); + listWidthColumn.append(100); + treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_code, 250); + listWidthColumn.append(250); + treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 130); + listWidthColumn.append(130); + treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_ID, 50); + listWidthColumn.append(50); + + treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, calculateWidth_0Column()); +} + +int AMMtasksWidget::calculateWidth_0Column() +{ + int widthHeader = treeWidget->width() - 20; + int width0Column = 0; + int widthSB = 0; + if(treeWidget->verticalScrollBar()->isVisible()) + widthSB = treeWidget->verticalScrollBar()->size().width(); + int cntColumns = treeWidget->columnCount(); + int widthRightColumns = 0; + for (int i = 1; i < cntColumns; i++) + { + if(! treeWidget->isColumnHidden(i)) + {//Колонка не скрыта + int w = listWidthColumn.at(i); + widthRightColumns += w; + } + } + width0Column = widthHeader - widthRightColumns - widthSB; + + return width0Column; +} + void AMMtasksWidget::assignTaskAMMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 42ccf9b..8cc285f 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -50,6 +50,10 @@ public Q_SLOTS: private: void preparationTreeWidget(); void reSetHeadTreeWidget(); + void setWidthColumnsTree(); + int calculateWidth_0Column(); + + void loadTasksAMM(bool flRequestFirst = true); void assignTaskAMMtoTrainee(); @@ -71,6 +75,7 @@ private: ConnectorToServer* connectorToServer; QTreeWidget* treeWidget; TypeListTreeAMMFIM type; + QList listWidthColumn; int idTraineeSelected; diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index e588013..74e5547 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "fimtaskswidget.h" #include "ui_fimtaskswidget.h" #include "tasksAmmFim.h" @@ -121,27 +122,10 @@ void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task) void FIMtasksWidget::resizeEvent(QResizeEvent *event) { + setWidthColumnsTree(); + QSize size = event->size(); waitAnimationWidget->resize(size); - - int width = treeWidget->width(); - - treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_ID, 50); - treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 130); - - int widthTitle; - if(type == TypeListTreeAMMFIM::listCommon) - widthTitle = width - (20 + 10); - else - { -#ifdef PROJECT_TYPE_DEBUG - widthTitle = width - (180 + 10); -#else - widthTitle = width - (130 + 10); -#endif - } - - treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_Title, widthTitle); } void FIMtasksWidget::closeDlgCheckTask() @@ -311,13 +295,49 @@ void FIMtasksWidget::reSetHeadTreeWidget() QStringList listHeaders; if(type == TypeListTreeAMMFIM::listForTrainee) - listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")}; + listHeaders = QStringList{tr("Task FIM"), tr("Status"), tr("ID")}; else - listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")}; + listHeaders = QStringList{tr("Task FIM"), tr("Status"), tr("ID")}; treeWidget->setHeaderLabels(listHeaders); } +void FIMtasksWidget::setWidthColumnsTree() +{ + listWidthColumn.clear(); + + treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_Title, 100); + listWidthColumn.append(100); + treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 130); + listWidthColumn.append(130); + treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_ID, 50); + listWidthColumn.append(50); + + treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_Title, calculateWidth_0Column()); +} + +int FIMtasksWidget::calculateWidth_0Column() +{ + int widthHeader = treeWidget->width() - 20; + int width0Column = 0; + int widthSB = 0; + if(treeWidget->verticalScrollBar()->isVisible()) + widthSB = treeWidget->verticalScrollBar()->size().width(); + int cntColumns = treeWidget->columnCount(); + int widthRightColumns = 0; + for (int i = 1; i < cntColumns; i++) + { + if(! treeWidget->isColumnHidden(i)) + {//Колонка не скрыта + int w = listWidthColumn.at(i); + widthRightColumns += w; + } + } + width0Column = widthHeader - widthRightColumns - widthSB; + + return width0Column; +} + void FIMtasksWidget::assignTaskFIMtoTrainee() { QTreeWidgetItem *current = treeWidget->currentItem(); diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index 73136e1..e0ade85 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -51,6 +51,9 @@ public Q_SLOTS: private: void preparationTreeWidget(); void reSetHeadTreeWidget(); + void setWidthColumnsTree(); + int calculateWidth_0Column(); + void loadTasksFIM(); void assignTaskFIMtoTrainee(); void updateTaskItem(QTreeWidgetItem *itemTask); @@ -73,6 +76,7 @@ private: ConnectorToServer* connectorToServer; QTreeWidget* treeWidget; TypeListTreeAMMFIM type; + QList listWidthColumn; int idTraineeSelected; diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp index 35776ac..15e9d58 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -499,35 +499,35 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) QTreeWidgetItem* itemTask = new QTreeWidgetItem(); - itemTask->setText(0, task.title); - itemTask->setText(1, QString::number(task.id)); + itemTask->setText(ColumnsTreeFIM::clmnFIM_Title, task.title); + itemTask->setText(ColumnsTreeFIM::clmnFIM_ID, QString::number(task.id)); //itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable); - //itemTask->setCheckState(0, Qt::Checked); + //itemTask->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); if(task.status == "completed") { - itemTask->setText(2, tr("completed")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("completed")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); } else if(task.status == "failed") { - itemTask->setText(2, tr("failed")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("failed")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); } else if(task.status == "checkup") { - itemTask->setText(2, tr("checkup")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("checkup")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); } else { - itemTask->setText(2, tr("new")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); } - itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); - itemTask->setToolTip(0, task.title); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/procedure.png")); + itemTask->setToolTip(ColumnsTreeFIM::clmnFIM_Title, task.title); for (int j = 0; j < task.malfunctionList.count(); j++) @@ -536,15 +536,15 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); - itemMalfunction->setText(0, malfunction.description); + itemMalfunction->setText(ColumnsTreeFIM::clmnFIM_Title, malfunction.description); if(type == TypeListTreeAMMFIM::listCommon) { itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); - itemMalfunction->setCheckState(0, Qt::Checked); + itemMalfunction->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); } - itemMalfunction->setIcon(0, QIcon(":/resources/icons/malfunction.png")); - itemMalfunction->setToolTip(0, malfunction.description); + itemMalfunction->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/malfunction.png")); + itemMalfunction->setToolTip(ColumnsTreeFIM::clmnFIM_Title, malfunction.description); itemTask->addChild(itemMalfunction); @@ -554,11 +554,11 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) QTreeWidgetItem* itemSign = new QTreeWidgetItem(); - itemSign->setText(0, sign.description); + itemSign->setText(ColumnsTreeFIM::clmnFIM_Title, sign.description); //itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable); - //itemSign->setCheckState(0, Qt::Checked); - itemSign->setIcon(0, QIcon(":/resources/icons/sign.png")); - itemSign->setToolTip(0, sign.description); + //itemSign->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); + itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png")); + itemSign->setToolTip(ColumnsTreeFIM::clmnFIM_Title, sign.description); itemMalfunction->addChild(itemSign); } @@ -590,35 +590,35 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QListsetText(0, task.title); - itemTask->setText(1, QString::number(task.id)); + itemTask->setText(ColumnsTreeFIM::clmnFIM_Title, task.title); + itemTask->setText(ColumnsTreeFIM::clmnFIM_ID, QString::number(task.id)); //itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable); - //itemTask->setCheckState(0, Qt::Checked); + //itemTask->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); if(task.status == "completed") { - itemTask->setText(2, tr("completed")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("completed")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); } else if(task.status == "failed") { - itemTask->setText(2, tr("failed")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("failed")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); } else if(task.status == "checkup") { - itemTask->setText(2, tr("checkup")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("checkup")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); } else { - itemTask->setText(2, tr("new")); - itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); + itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new")); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); } - itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); - itemTask->setToolTip(0, task.title); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/procedure.png")); + itemTask->setToolTip(ColumnsTreeFIM::clmnFIM_Title, task.title); for (int j = 0; j < task.malfunctionList.count(); j++) @@ -627,15 +627,15 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QListsetText(0, malfunction.description); + itemMalfunction->setText(ColumnsTreeFIM::clmnFIM_Title, malfunction.description); if(type == TypeListTreeAMMFIM::listCommon) { itemMalfunction->setFlags(itemMalfunction->flags() | Qt::ItemIsUserCheckable); - itemMalfunction->setCheckState(0, Qt::Checked); + itemMalfunction->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); } - itemMalfunction->setIcon(0, QIcon(":/resources/icons/malfunction.png")); - itemMalfunction->setToolTip(0, malfunction.description); + itemMalfunction->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/malfunction.png")); + itemMalfunction->setToolTip(ColumnsTreeFIM::clmnFIM_Title, malfunction.description); itemTask->addChild(itemMalfunction); @@ -645,11 +645,11 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QListsetText(0, sign.description); + itemSign->setText(ColumnsTreeFIM::clmnFIM_Title, sign.description); //itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable); - //itemSign->setCheckState(0, Qt::Checked); - itemSign->setIcon(0, QIcon(":/resources/icons/sign.png")); - itemSign->setToolTip(0, sign.description); + //itemSign->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); + itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png")); + itemSign->setToolTip(ColumnsTreeFIM::clmnFIM_Title, sign.description); itemMalfunction->addChild(itemSign); } diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h index cbed53e..d618dbc 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.h +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h @@ -10,16 +10,16 @@ enum ColumnsTreeAMM{ clmnAMM_PMorDM = 0, - clmnAMM_code, - clmnAMM_ID, + clmnAMM_code, clmnAMM_status, + clmnAMM_ID, clmnAMM_count }; enum ColumnsTreeFIM{ - clmnFIM_Title = 0, - clmnFIM_ID, + clmnFIM_Title = 0, clmnFIM_status, + clmnFIM_ID, clmnFIM_count };