mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Перенес формирование Item ов в отдельный поток
This commit is contained in:
@@ -78,6 +78,8 @@ add_library(InstructorsAndTrainees SHARED
|
|||||||
tasks/fimtaskswidget.cpp
|
tasks/fimtaskswidget.cpp
|
||||||
tasks/fimtaskswidget.h
|
tasks/fimtaskswidget.h
|
||||||
tasks/fimtaskswidget.ui
|
tasks/fimtaskswidget.ui
|
||||||
|
tasks/tasktreepreparation.cpp
|
||||||
|
tasks/tasktreepreparation.h
|
||||||
#tasks/tasksAmmFim.cpp
|
#tasks/tasksAmmFim.cpp
|
||||||
#tasks/tasksAmmFim.h
|
#tasks/tasksAmmFim.h
|
||||||
widgets/newversionwidget.cpp
|
widgets/newversionwidget.cpp
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
|||||||
qRegisterMetaType<QList<Group>>("QList<Group>");
|
qRegisterMetaType<QList<Group>>("QList<Group>");
|
||||||
qRegisterMetaType<QList<Computer>>("QList<Computer>");
|
qRegisterMetaType<QList<Computer>>("QList<Computer>");
|
||||||
qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
|
qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
|
||||||
|
qRegisterMetaType<QList<Module*>>("QList<Module*>");
|
||||||
|
qRegisterMetaType<QList<QTreeWidgetItem*>>("QList<QTreeWidgetItem*>");
|
||||||
|
|
||||||
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
|
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ Q_DECLARE_METATYPE(QList<Trainee>)
|
|||||||
Q_DECLARE_METATYPE(QList<Group>)
|
Q_DECLARE_METATYPE(QList<Group>)
|
||||||
Q_DECLARE_METATYPE(QList<Computer>)
|
Q_DECLARE_METATYPE(QList<Computer>)
|
||||||
Q_DECLARE_METATYPE(QList<Classroom>)
|
Q_DECLARE_METATYPE(QList<Classroom>)
|
||||||
|
Q_DECLARE_METATYPE(QList<Module*>)
|
||||||
|
Q_DECLARE_METATYPE(QList<QTreeWidgetItem*>)
|
||||||
|
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class InstructorsAndTraineesWidget;
|
class InstructorsAndTraineesWidget;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
#include <QResizeEvent>
|
||||||
#include "ammtaskswidget.h"
|
#include "ammtaskswidget.h"
|
||||||
#include "ui_ammtaskswidget.h"
|
#include "ui_ammtaskswidget.h"
|
||||||
|
|
||||||
@@ -24,6 +25,20 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
|||||||
ui->btnAssignTaskToTrainee->setEnabled(false);
|
ui->btnAssignTaskToTrainee->setEnabled(false);
|
||||||
|
|
||||||
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
|
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
|
||||||
|
|
||||||
|
threadPreparation = new QThread();
|
||||||
|
taskTreePreparation = new TaskTreePreparation();
|
||||||
|
taskTreePreparation->moveToThread(threadPreparation);
|
||||||
|
threadPreparation->start();
|
||||||
|
threadPreparation->setPriority(QThread::HighestPriority);
|
||||||
|
connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems);
|
||||||
|
connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady);
|
||||||
|
|
||||||
|
waitAnimationWidget = new WaitAnimationWidget;
|
||||||
|
QMovie *movie = new QMovie(":/resources/icons/762.gif");
|
||||||
|
waitAnimationWidget->setParent(this);
|
||||||
|
waitAnimationWidget->initialize(movie,this);
|
||||||
|
waitAnimationWidget->moveToThread(threadPreparation);
|
||||||
}
|
}
|
||||||
|
|
||||||
AMMtasksWidget::~AMMtasksWidget()
|
AMMtasksWidget::~AMMtasksWidget()
|
||||||
@@ -32,6 +47,12 @@ AMMtasksWidget::~AMMtasksWidget()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AMMtasksWidget::resizeEvent(QResizeEvent *event)
|
||||||
|
{
|
||||||
|
QSize size = event->size();
|
||||||
|
waitAnimationWidget->resize(size);
|
||||||
|
}
|
||||||
|
|
||||||
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
||||||
{
|
{
|
||||||
if(current == nullptr)
|
if(current == nullptr)
|
||||||
@@ -85,10 +106,26 @@ void AMMtasksWidget::loadTasksAMM()
|
|||||||
//Обновление дерева
|
//Обновление дерева
|
||||||
treeWidget->clear();
|
treeWidget->clear();
|
||||||
|
|
||||||
|
waitAnimationWidget->showWithPlay();
|
||||||
|
|
||||||
QByteArray array = connectorToServer->getListTaskAmmArray();
|
QByteArray array = connectorToServer->getListTaskAmmArray();
|
||||||
loadAMMtasksFromXML(array);
|
loadAMMtasksFromXML(array);
|
||||||
|
|
||||||
fillTree();
|
//fillTree();
|
||||||
|
signal_prepareListItems(listAllModules);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
|
||||||
|
{
|
||||||
|
//Обновление дерева
|
||||||
|
treeWidget->clear();
|
||||||
|
|
||||||
|
for(QTreeWidgetItem * item : listItems)
|
||||||
|
{
|
||||||
|
treeWidget->addTopLevelItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
waitAnimationWidget->hideWithStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMMtasksWidget::domElementParser(QDomElement element, Module* moduleParent)
|
void AMMtasksWidget::domElementParser(QDomElement element, Module* moduleParent)
|
||||||
@@ -258,11 +295,12 @@ void AMMtasksWidget::fillTree()
|
|||||||
|
|
||||||
for(Module* module : listAllModules)
|
for(Module* module : listAllModules)
|
||||||
{
|
{
|
||||||
addModuleToTreeWidget(module);
|
QTreeWidgetItem* item = addModuleToTreeWidget(module);
|
||||||
|
treeWidget->addTopLevelItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* parentItem)
|
QTreeWidgetItem* AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* parentItem)
|
||||||
{
|
{
|
||||||
QTreeWidgetItem* itemModule = nullptr;
|
QTreeWidgetItem* itemModule = nullptr;
|
||||||
|
|
||||||
@@ -276,7 +314,8 @@ void AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* pare
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
itemModule = new QTreeWidgetItem(treeWidget);
|
//itemModule = new QTreeWidgetItem(treeWidget);
|
||||||
|
itemModule = new QTreeWidgetItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(module->getType() == ModuleType::TYPE_PM)
|
if(module->getType() == ModuleType::TYPE_PM)
|
||||||
@@ -301,6 +340,8 @@ void AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* pare
|
|||||||
|
|
||||||
itemModule->setText(ColumnsTree::clmn_PMorDM, text);
|
itemModule->setText(ColumnsTree::clmn_PMorDM, text);
|
||||||
itemModule->setText(ColumnsTree::clmn_ID, ID);
|
itemModule->setText(ColumnsTree::clmn_ID, ID);
|
||||||
|
|
||||||
|
return itemModule;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <QDomNode>
|
#include <QDomNode>
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "connectortoserver.h"
|
#include "connectortoserver.h"
|
||||||
|
#include "taskTreePreparation.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class AMMtasksWidget;
|
class AMMtasksWidget;
|
||||||
@@ -31,6 +32,9 @@ public:
|
|||||||
treeWidget->clear();
|
treeWidget->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||||
void on_btnUpdateTasks_clicked();
|
void on_btnUpdateTasks_clicked();
|
||||||
@@ -53,10 +57,15 @@ private:
|
|||||||
void reSetHeadTreeWidget();
|
void reSetHeadTreeWidget();
|
||||||
|
|
||||||
void fillTree();
|
void fillTree();
|
||||||
void addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
|
QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
|
||||||
|
|
||||||
void loadTasksAMM();
|
void loadTasksAMM();
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void signal_prepareListItems(QList<Module*> listAllModules);
|
||||||
|
public Q_SLOTS:
|
||||||
|
void slot_listItemsReady(QList<QTreeWidgetItem*> listItems);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::AMMtasksWidget *ui;
|
Ui::AMMtasksWidget *ui;
|
||||||
ConnectorToServer* connectorToServer;
|
ConnectorToServer* connectorToServer;
|
||||||
@@ -65,6 +74,10 @@ private:
|
|||||||
private:
|
private:
|
||||||
QList<Module*> listAllModules;
|
QList<Module*> listAllModules;
|
||||||
QString loginTraineeSelected;
|
QString loginTraineeSelected;
|
||||||
|
|
||||||
|
QThread* threadPreparation;
|
||||||
|
TaskTreePreparation* taskTreePreparation;
|
||||||
|
WaitAnimationWidget *waitAnimationWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AMMTASKSWIDGET_H
|
#endif // AMMTASKSWIDGET_H
|
||||||
|
|||||||
67
InstructorsAndTrainees/tasks/tasktreepreparation.cpp
Normal file
67
InstructorsAndTrainees/tasks/tasktreepreparation.cpp
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#include <QThread>
|
||||||
|
#include <QDebug>
|
||||||
|
#include "tasktreepreparation.h"
|
||||||
|
|
||||||
|
TaskTreePreparation::TaskTreePreparation(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId();
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* itemModule = nullptr;
|
||||||
|
|
||||||
|
QString text;
|
||||||
|
QString ID = QString::number(module->getID());
|
||||||
|
|
||||||
|
if(parentItem)
|
||||||
|
{
|
||||||
|
itemModule = new QTreeWidgetItem();
|
||||||
|
parentItem->addChild(itemModule);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//itemModule = new QTreeWidgetItem(treeWidget);
|
||||||
|
itemModule = new QTreeWidgetItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(module->getType() == ModuleType::TYPE_PM)
|
||||||
|
{
|
||||||
|
PM* PMmodul = static_cast<PM*>(module);
|
||||||
|
text = PMmodul->getLangStructRus().title;
|
||||||
|
|
||||||
|
for(Module* module : PMmodul->getListChildModules())
|
||||||
|
{
|
||||||
|
addModuleToTreeWidget(module, itemModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DM* DMmodul = static_cast<DM*>(module);
|
||||||
|
text = DMmodul->getLangStructRus().techName;
|
||||||
|
|
||||||
|
//itemModule->setFlags(itemModule->flags() | Qt::ItemIsUserCheckable);
|
||||||
|
//itemModule->setCheckState(0, Qt::Checked);
|
||||||
|
itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
itemModule->setText(0, text);
|
||||||
|
itemModule->setText(1, ID);
|
||||||
|
|
||||||
|
return itemModule;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskTreePreparation::slot_prepareListItems(QList<Module *> listAllModules)
|
||||||
|
{
|
||||||
|
qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId();
|
||||||
|
|
||||||
|
listItems.clear();
|
||||||
|
|
||||||
|
for(Module* module : listAllModules)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* item = addModuleToTreeWidget(module);
|
||||||
|
listItems.append(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_EMIT signal_listItemsReady(listItems);
|
||||||
|
}
|
||||||
27
InstructorsAndTrainees/tasks/tasktreepreparation.h
Normal file
27
InstructorsAndTrainees/tasks/tasktreepreparation.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#ifndef TASKTREEPREPARATION_H
|
||||||
|
#define TASKTREEPREPARATION_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QTreeWidgetItem>
|
||||||
|
#include "module.h"
|
||||||
|
|
||||||
|
class TaskTreePreparation : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit TaskTreePreparation(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
public:
|
||||||
|
QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void slot_prepareListItems(QList<Module*> listAllModules);
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void signal_listItemsReady(QList<QTreeWidgetItem*> listItems);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<QTreeWidgetItem*> listItems;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TASKTREEPREPARATION_H
|
||||||
@@ -29,6 +29,11 @@ void WaitAnimationWidget::hideWithStop()
|
|||||||
loadingMovie->stop();
|
loadingMovie->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WaitAnimationWidget::resize(QSize size)
|
||||||
|
{
|
||||||
|
setFixedSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
WaitAnimationWidget::~WaitAnimationWidget()
|
WaitAnimationWidget::~WaitAnimationWidget()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public:
|
|||||||
void initialize(QMovie *movie,QWidget *parent);
|
void initialize(QMovie *movie,QWidget *parent);
|
||||||
void showWithPlay();
|
void showWithPlay();
|
||||||
void hideWithStop();
|
void hideWithStop();
|
||||||
|
void resize(QSize size);
|
||||||
~WaitAnimationWidget();
|
~WaitAnimationWidget();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user