mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Предварительно пофиксил замирание крутилки FIM
This commit is contained in:
@@ -14,12 +14,13 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
|
||||
ui(new Ui::FIMtasksWidget),
|
||||
connectorToServer(connectorToServer),
|
||||
treeWidget(nullptr),
|
||||
type(type),
|
||||
userName(""),
|
||||
type(type),
|
||||
loginTraineeSelected(""),
|
||||
idTraineeSelected(0),
|
||||
threadAnimation(nullptr),
|
||||
waitAnimationWidget(nullptr)
|
||||
threadPreparation(nullptr),
|
||||
taskTreePreparation(nullptr),
|
||||
waitAnimationWidget(nullptr),
|
||||
userName("")
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
@@ -27,19 +28,24 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
|
||||
|
||||
treeWidget = new QTreeWidget();
|
||||
ui->horizontalLayout_1->addWidget(treeWidget);
|
||||
//treeWidget->setMinimumSize(400, 400);
|
||||
|
||||
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidget_currentItemChanged);
|
||||
|
||||
preparationTreeWidget();
|
||||
|
||||
//threadAnimation = new QThread();
|
||||
threadPreparation = new QThread();
|
||||
taskTreePreparation = new TaskTreePreparation();
|
||||
taskTreePreparation->moveToThread(threadPreparation);
|
||||
threadPreparation->start();
|
||||
threadPreparation->setPriority(QThread::HighestPriority);
|
||||
connect(this, &FIMtasksWidget::signal_prepareFIMListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItems);
|
||||
connect(this, &FIMtasksWidget::signal_prepareFIMListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareFIMListItemsForTrainee);
|
||||
connect(taskTreePreparation, &TaskTreePreparation::signal_listFIMItemsReady, this, &FIMtasksWidget::slot_FIMlistItemsReady);
|
||||
|
||||
waitAnimationWidget = new WaitAnimationWidget;
|
||||
QMovie *movie = new QMovie(":/resources/icons/762.gif");
|
||||
waitAnimationWidget->setParent(this);
|
||||
waitAnimationWidget->initialize(movie,this);
|
||||
//waitAnimationWidget->moveToThread(threadAnimation);
|
||||
//threadAnimation->start();
|
||||
|
||||
ui->btnDelete->setObjectName("btnDelete");
|
||||
ui->btnDelete->setEnabled(false);
|
||||
@@ -62,9 +68,9 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
|
||||
{
|
||||
ui->btnDelete->setVisible(false);
|
||||
ui->btnCheck->setVisible(false);
|
||||
this->treeWidget->headerItem()->setHidden(true);
|
||||
this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
|
||||
ui->btnAssignTask->setVisible(false);
|
||||
this->treeWidget->headerItem()->setHidden(true);
|
||||
this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -76,15 +82,17 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
|
||||
|
||||
FIMtasksWidget::~FIMtasksWidget()
|
||||
{
|
||||
deleteAllTaskAmmFim();
|
||||
//deleteAllTaskAmmFim(); //TODO
|
||||
|
||||
waitAnimationWidget->hideWithStop();
|
||||
taskTreePreparation->stopParser();
|
||||
|
||||
//threadAnimation->quit();
|
||||
//threadAnimation->wait();
|
||||
threadPreparation->quit();
|
||||
threadPreparation->wait();
|
||||
|
||||
//delete threadAnimation;
|
||||
delete threadPreparation;
|
||||
|
||||
delete taskTreePreparation;
|
||||
delete waitAnimationWidget;
|
||||
delete treeWidget;
|
||||
|
||||
@@ -102,7 +110,8 @@ void FIMtasksWidget::deactivate()
|
||||
void FIMtasksWidget::setOneTaskFim(TaskAmmFim* task)
|
||||
{
|
||||
listTaskAmmFim.append(task);
|
||||
fillTree();
|
||||
//fillTree();
|
||||
//TODO
|
||||
}
|
||||
|
||||
void FIMtasksWidget::resizeEvent(QResizeEvent *event)
|
||||
@@ -112,8 +121,8 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event)
|
||||
|
||||
int width = treeWidget->width();
|
||||
|
||||
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50);
|
||||
treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110);
|
||||
treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_ID, 50);
|
||||
treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_status, 110);
|
||||
|
||||
int widthTitle;
|
||||
if(type == TypeList::listCommon)
|
||||
@@ -121,7 +130,7 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event)
|
||||
else
|
||||
widthTitle = width - (160 + 10);
|
||||
|
||||
treeWidget->setColumnWidth(ColumnsTree::clmn_Title, widthTitle);
|
||||
treeWidget->setColumnWidth(ColumnsTreeFIM::clmnFIM_Title, widthTitle);
|
||||
}
|
||||
|
||||
void FIMtasksWidget::changeEvent(QEvent *event)
|
||||
@@ -139,7 +148,8 @@ void FIMtasksWidget::changeEvent(QEvent *event)
|
||||
}
|
||||
else if(type == TypeList::listForTrainee)
|
||||
if(idTraineeSelected)
|
||||
fillTree();
|
||||
slot_UpdateTasksFIMforTrainee(idTraineeSelected);
|
||||
//fillTree();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +167,7 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
|
||||
QTreeWidgetItem *treeItemParent = current->parent();
|
||||
if(treeItemParent == nullptr)
|
||||
{//Выбрана задача
|
||||
int id = current->text(ColumnsTree::clmn_ID).toInt();
|
||||
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
|
||||
|
||||
TaskAmmFim* task = getTaskByID(id);
|
||||
|
||||
@@ -181,86 +191,7 @@ void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array)
|
||||
{
|
||||
deleteAllTaskAmmFim();
|
||||
|
||||
QDomDocument docTasksDOM;
|
||||
|
||||
docTasksDOM.setContent(array);
|
||||
|
||||
QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks");
|
||||
if(RRJTasksElement.isNull())
|
||||
return;
|
||||
|
||||
QDomElement taskElement = RRJTasksElement.firstChildElement();
|
||||
if(taskElement.isNull())
|
||||
return;
|
||||
|
||||
do
|
||||
{/*task*/
|
||||
QString name = taskElement.nodeName();
|
||||
QDomNamedNodeMap nodeMap = taskElement.attributes();
|
||||
|
||||
if(name == "task")
|
||||
{
|
||||
TaskAmmFim* task = nullptr;
|
||||
task = new TaskAmmFim();
|
||||
|
||||
task->initialize(/*nodeMap.namedItem("id").nodeValue().toInt()*/ TaskAmmFim::lastID++,
|
||||
nodeMap.namedItem("type").nodeValue(),
|
||||
nodeMap.namedItem("title").nodeValue(),
|
||||
nodeMap.namedItem("status").nodeValue(),
|
||||
nodeMap.namedItem("created").nodeValue(),
|
||||
nodeMap.namedItem("changed").nodeValue());
|
||||
|
||||
QDomElement malfunctionElement = taskElement.firstChildElement();
|
||||
if(!malfunctionElement.isNull())
|
||||
{
|
||||
do
|
||||
{/*malfunction*/
|
||||
QString name = malfunctionElement.nodeName();
|
||||
QDomNamedNodeMap nodeMap = malfunctionElement.attributes();
|
||||
|
||||
if(name == "malfunction")
|
||||
{
|
||||
Malfunction malfunction;
|
||||
|
||||
malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(),
|
||||
nodeMap.namedItem("num").nodeValue(),
|
||||
nodeMap.namedItem("description").nodeValue());
|
||||
|
||||
QDomElement signElement = malfunctionElement.firstChildElement();
|
||||
if(!signElement.isNull())
|
||||
{
|
||||
do
|
||||
{/*malfunctionSign*/
|
||||
QString name = signElement.nodeName();
|
||||
QDomNamedNodeMap nodeMap = signElement.attributes();
|
||||
|
||||
if(name == "malfunctionSign")
|
||||
{
|
||||
MalfunctionSign sign;
|
||||
|
||||
sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(),
|
||||
nodeMap.namedItem("description").nodeValue());
|
||||
|
||||
malfunction.addMalfunctionSign(sign);
|
||||
}
|
||||
|
||||
}while(! (signElement = signElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
task->addMalfunction(malfunction);
|
||||
}
|
||||
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
listTaskAmmFim.append(task);
|
||||
}
|
||||
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef OLD_FILL
|
||||
void FIMtasksWidget::fillTree()
|
||||
{
|
||||
//Обновление дерева
|
||||
@@ -351,6 +282,7 @@ void FIMtasksWidget::fillTree()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
|
||||
{
|
||||
deleteAllTaskAmmFim();
|
||||
@@ -363,31 +295,9 @@ void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
|
||||
listTaskAmmFim.append(newTask);
|
||||
}
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
void FIMtasksWidget::preparationTreeWidget()
|
||||
{
|
||||
treeWidget->setColumnCount(clmn_count);
|
||||
|
||||
reSetHeadTreeWidget();
|
||||
|
||||
if(type == TypeList::listCommon || type == TypeList::listOneTask)
|
||||
{
|
||||
treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
|
||||
treeWidget->setColumnHidden(ColumnsTree::clmn_status, true);
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::reSetHeadTreeWidget()
|
||||
{
|
||||
QStringList listHeaders;
|
||||
|
||||
if(type == TypeList::listForTrainee)
|
||||
listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")};
|
||||
else
|
||||
listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")};
|
||||
|
||||
treeWidget->setHeaderLabels(listHeaders);
|
||||
}
|
||||
|
||||
void FIMtasksWidget::slot_NeedUpdateUI()
|
||||
{
|
||||
@@ -410,15 +320,16 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
|
||||
|
||||
void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id)
|
||||
{
|
||||
qDebug() << "SlotUpdateTasksUI" << QThread::currentThreadId();
|
||||
qDebug() << "slot_UpdateTasksFIMforTrainee" << QThread::currentThreadId();
|
||||
if(type == TypeList::listForTrainee)
|
||||
{
|
||||
if(idTraineeSelected == trainee_id)
|
||||
{
|
||||
QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id);
|
||||
prepareListTasksForTrainee(listTask);
|
||||
fillTree();
|
||||
waitAnimationWidget->hideWithStop();
|
||||
emit signal_prepareFIMListItemsForTrainee(listTask, &listTaskAmmFim);
|
||||
//prepareListTasksForTrainee(listTask);
|
||||
//fillTree();
|
||||
//waitAnimationWidget->hideWithStop();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -430,11 +341,27 @@ void FIMtasksWidget::loadTasksFIM()
|
||||
|
||||
waitAnimationWidget->showWithPlay();
|
||||
|
||||
QByteArray array = connectorToServer->getListTaskFimArray();
|
||||
loadFIMtasksFromXML(array);
|
||||
QByteArray arrayFIM = connectorToServer->getListTaskFimArray();
|
||||
|
||||
//loadFIMtasksFromXML(arrayFIM);
|
||||
//собственно обновление дерева
|
||||
fillTree();
|
||||
//fillTree();
|
||||
//waitAnimationWidget->hideWithStop();
|
||||
|
||||
emit signal_prepareFIMListItems(arrayFIM, &listTaskAmmFim);
|
||||
}
|
||||
|
||||
void FIMtasksWidget::slot_FIMlistItemsReady(QList<QTreeWidgetItem *> listItems)
|
||||
{
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
for(QTreeWidgetItem * item : listItems)
|
||||
treeWidget->addTopLevelItem(item);
|
||||
|
||||
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
|
||||
if(item != nullptr)
|
||||
treeWidget->setCurrentItem(item);
|
||||
|
||||
waitAnimationWidget->hideWithStop();
|
||||
}
|
||||
@@ -451,26 +378,29 @@ TaskAmmFim* FIMtasksWidget::getTaskByID(int id)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void FIMtasksWidget::deleteAllTaskAmmFim()
|
||||
void FIMtasksWidget::preparationTreeWidget()
|
||||
{
|
||||
if(type == TypeList::listOneTask)
|
||||
return;
|
||||
treeWidget->setColumnCount(clmnFIM_count);
|
||||
|
||||
for(TaskAmmFim* task: listTaskAmmFim)
|
||||
delete task;
|
||||
reSetHeadTreeWidget();
|
||||
|
||||
listTaskAmmFim.clear();
|
||||
if(type == TypeList::listCommon || type == TypeList::listOneTask)
|
||||
{
|
||||
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_ID, true);
|
||||
treeWidget->setColumnHidden(ColumnsTreeFIM::clmnFIM_status, true);
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask)
|
||||
void FIMtasksWidget::reSetHeadTreeWidget()
|
||||
{
|
||||
for (int i = 0; i < itemTask->childCount(); i++)
|
||||
{
|
||||
QTreeWidgetItem* itemMalfunction = itemTask->child(i);
|
||||
itemMalfunction->setCheckState(0, Qt::Checked);
|
||||
itemMalfunction->setExpanded(false);
|
||||
}
|
||||
itemTask->setExpanded(false);
|
||||
QStringList listHeaders;
|
||||
|
||||
if(type == TypeList::listForTrainee)
|
||||
listHeaders = QStringList{tr("Task FIM"), tr("ID"), tr("Status")};
|
||||
else
|
||||
listHeaders = QStringList{tr("Title"), tr("ID"), tr("Status")};
|
||||
|
||||
treeWidget->setHeaderLabels(listHeaders);
|
||||
}
|
||||
|
||||
void FIMtasksWidget::on_btnUpdateTasks_clicked()
|
||||
@@ -485,7 +415,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
|
||||
if(current == nullptr)
|
||||
return;
|
||||
|
||||
int id = current->text(ColumnsTree::clmn_ID).toInt();
|
||||
int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
|
||||
|
||||
TaskAmmFim* task = getTaskByID(id);
|
||||
|
||||
@@ -510,7 +440,7 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
|
||||
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, trainee_id, &taskNew);
|
||||
|
||||
updateTaskItem(current);
|
||||
updateTaskItem(current); //TODO ?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,7 +454,7 @@ void FIMtasksWidget::on_btnDelete_clicked()
|
||||
if(treeItemParent == nullptr)
|
||||
{//Выбрана задача
|
||||
|
||||
int id = treeItemCurrent->text(ColumnsTree::clmn_ID).toInt();
|
||||
int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
|
||||
|
||||
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||||
{
|
||||
@@ -544,7 +474,7 @@ void FIMtasksWidget::on_btnCheck_clicked()
|
||||
if(treeItemParent == nullptr)
|
||||
{//Выбрана задача
|
||||
|
||||
int id = treeItemCurrent->text(ColumnsTree::clmn_ID).toInt();
|
||||
int id = treeItemCurrent->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
|
||||
|
||||
TaskAmmFim* task = getTaskByID(id);
|
||||
|
||||
@@ -568,3 +498,16 @@ void FIMtasksWidget::on_btnAssignTask_clicked()
|
||||
if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||||
assignTaskFIMtoTrainee();
|
||||
}
|
||||
|
||||
void FIMtasksWidget::updateTaskItem(QTreeWidgetItem *itemTask)
|
||||
{
|
||||
for (int i = 0; i < itemTask->childCount(); i++)
|
||||
{
|
||||
QTreeWidgetItem* itemMalfunction = itemTask->child(i);
|
||||
itemMalfunction->setCheckState(0, Qt::Checked);
|
||||
itemMalfunction->setExpanded(false);
|
||||
}
|
||||
itemTask->setExpanded(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user