ПКМ для FIM AMM

This commit is contained in:
2026-01-19 10:38:23 +03:00
parent 8dd2e386fb
commit 1c44fdb182
10 changed files with 98 additions and 33 deletions

View File

@@ -71,7 +71,7 @@ int CommonView::calculateWidth_0Column()
widthRightColumns += w;
}
}
width0Column = widthHeader - widthRightColumns - widthSB;
width0Column = widthHeader - widthRightColumns - widthSB - 20;
return width0Column;
}
@@ -82,12 +82,6 @@ void CommonView::setWidthColumnsTree()
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Name, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_AMMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_FIMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Login, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Password, 100);
listWidthColumn.append(100);
@@ -102,8 +96,14 @@ void CommonView::setWidthColumnsTree()
listWidthColumn.append(140);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Archived, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_AMMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_FIMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Messages, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Login, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Logged, 80);
listWidthColumn.append(80);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_ID, 40);
@@ -114,7 +114,7 @@ void CommonView::setWidthColumnsTree()
void CommonView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Name"), tr("AMM tasks"), tr("FIM tasks"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Administrator"), tr("Archived"), tr("Messages"), tr("Online"), tr("ID")};
QStringList listHeaders = {tr("Name"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Administrator"), tr("Archived"), tr("AMM tasks"), tr("FIM tasks"), tr("Messages"), tr("Login"), tr("Online"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}

View File

@@ -32,16 +32,16 @@ public:
protected:
enum ColumnsTreeUsers{
clmn_Name = 0,
clmn_AMMtasks,
clmn_FIMtasks,
clmn_Login,
clmn_Password,
clmn_Class,
clmn_Computer,
clmn_IP_address,
clmn_Administrator,
clmn_Archived,
clmn_AMMtasks,
clmn_FIMtasks,
clmn_Messages,
clmn_Login,
clmn_Logged,
clmn_ID,
clmn_count
@@ -92,7 +92,7 @@ protected:
void preparationTreeWidget();
private:
protected:
int calculateWidth_0Column();
void setWidthColumnsTree();

View File

@@ -76,6 +76,7 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAm
mtxAccess.unlock();
emit signal_UpdateTasksAMMforTrainee(trainee_id);
emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
@@ -91,6 +92,7 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAm
mtxAccess.unlock();
emit signal_UpdateTasksFIMforTrainee(trainee_id);
emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)

View File

@@ -86,10 +86,10 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
ui->groupBox_Instructors->setMinimumHeight(200);
ui->groupBox_Instructors->setMaximumHeight(300);
ui->groupBox_Trainees->setMinimumHeight(400);
ui->groupBox_Trainees->setMinimumHeight(500);
ui->groupBox_Trainees->setMinimumWidth(800);
ui->groupBox_Instructors->setMinimumWidth(800);
ui->groupBox_Trainees->setMinimumWidth(900);
ui->groupBox_Instructors->setMinimumWidth(900);
//Доступность кнопок

View File

@@ -37,7 +37,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked);
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidgetCurrentItemChanged);
connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked);
preparationTreeWidget();
@@ -199,9 +199,9 @@ void AMMtasksWidget::changeEvent(QEvent *event)
}
}
void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
void AMMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
if(item == nullptr)
if(current == nullptr)
{
ui->btnDelete->setEnabled(false);
ui->btnStatus->setEnabled(false);
@@ -211,7 +211,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
if(this->type == TypeListTreeAMMFIM::listCommon)
{
int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM)
@@ -229,13 +229,13 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
}
else if(this->type == TypeListTreeAMMFIM::listForTrainee)
{
QTreeWidgetItem *treeItemParent = item->parent();
QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr)
{//Выбрана задача
ui->btnStatus->setEnabled(true);
ui->btnDelete->setEnabled(true);
int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
if(task.getID())

View File

@@ -41,7 +41,7 @@ protected:
void changeEvent(QEvent * event) override;
private Q_SLOTS:
void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column);
void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnDelete_clicked();
void on_btnStatus_clicked();
void on_btnAssignTask_clicked();

View File

@@ -34,8 +34,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
//connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged);
connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked);
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged);
preparationTreeWidget();
@@ -160,9 +159,9 @@ void FIMtasksWidget::changeEvent(QEvent *event)
}
}
void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
if(item == nullptr)
if(current == nullptr)
{
ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false);
@@ -170,10 +169,10 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
return;
}
QTreeWidgetItem *treeItemParent = item->parent();
QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr)
{//Выбрана задача
int id = item->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id);
@@ -201,14 +200,14 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
}
else
{
setCurrentParentTask(item);
//setCurrentParentTask(current);
/*
/**/
ui->btnAssignTask->setEnabled(false);
ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false);
*/
}
}
@@ -469,7 +468,9 @@ void FIMtasksWidget::setCurrentTask(int id)
if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id)
{
treeWidget->setCurrentItem(item);
treeWidget->itemClicked(item, 0);
//treeWidget->itemClicked(item, 0);
//treeWidget->itemChanged(item, 0);
treeWidget->setItemSelected(item, true);
return;
}
}

View File

@@ -40,7 +40,7 @@ protected:
void changeEvent(QEvent * event) override;
private Q_SLOTS:
void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column);
void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnDelete_clicked();
void on_btnCheck_clicked();
void on_btnAssignTask_clicked();

View File

@@ -20,6 +20,56 @@ void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
}
}
QString TraineesView::buildStatisticTasksAMM(QList<TaskAmmFim> listTasks)
{
QString stat = "X/X";
int cntAll = 0;
int cntCompleted = 0;
for(TaskAmmFim task : listTasks)
{
cntAll++;
if(task.status == "completed")
cntCompleted++;
}
stat = QString("%1/%2").arg(
QString::number(cntCompleted),
QString::number(cntAll));
return stat;
}
QString TraineesView::buildStatisticTasksFIM(QList<TaskAmmFim> listTasks)
{
QString stat = "X/X/X";
int cntAll = 0;
int cntCompleted = 0;
int cntCheckup = 0;
int cntFailed = 0;
for(TaskAmmFim task : listTasks)
{
cntAll++;
if(task.status == "completed")
cntCompleted++;
else if(task.status == "checkup")
cntCheckup++;
else if(task.status == "failed")
cntFailed++;
}
stat = QString("%1/%2/%3/%4").arg(
QString::number(cntCompleted),
QString::number(cntFailed),
QString::number(cntCheckup),
QString::number(cntAll));
return stat;
}
void TraineesView::loadTraineesFromDB()
{
mtxTreeWidget.lock();
@@ -51,6 +101,11 @@ void TraineesView::loadTraineesFromDB()
if(trainee.getGroup().getID() != group.getID())
continue;
QList<TaskAmmFim> listAMM = connectorToServer->getListTasksAMMforTrainee(trainee.getID());
QList<TaskAmmFim> listFIM = connectorToServer->getListTasksFIMforTrainee(trainee.getID());
QString statAMM = buildStatisticTasksAMM(listAMM);
QString statFIM = buildStatisticTasksFIM(listFIM);
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(ColumnsTreeUsers::clmn_ID, QString::number(trainee.getID()));
@@ -61,6 +116,9 @@ void TraineesView::loadTraineesFromDB()
ItemTrainee->setText(ColumnsTreeUsers::clmn_Computer, trainee.getComputer().getName());
ItemTrainee->setText(ColumnsTreeUsers::clmn_IP_address, trainee.getComputer().getIpAddress());
ItemTrainee->setText(ColumnsTreeUsers::clmn_AMMtasks, statAMM);
ItemTrainee->setText(ColumnsTreeUsers::clmn_FIMtasks, statFIM);
//Сокрытие пароля
ItemTrainee->setText(ColumnsTreeUsers::clmn_Password, QStringLiteral("******"));

View File

@@ -17,6 +17,10 @@ public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee);
private:
QString buildStatisticTasksAMM(QList<TaskAmmFim> listTasks);
QString buildStatisticTasksFIM(QList<TaskAmmFim> listTasks);
protected:
virtual void updateButtons(){};
void loadTraineesFromDB();