mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Merge branch 'work' into merge-task-and-verController
This commit is contained in:
@@ -78,6 +78,8 @@ add_library(InstructorsAndTrainees SHARED
|
||||
tasks/fimtaskswidget.cpp
|
||||
tasks/fimtaskswidget.h
|
||||
tasks/fimtaskswidget.ui
|
||||
tasks/tasktreepreparation.cpp
|
||||
tasks/tasktreepreparation.h
|
||||
#tasks/tasksAmmFim.cpp
|
||||
#tasks/tasksAmmFim.h
|
||||
widgets/newversionwidget.cpp
|
||||
|
||||
@@ -39,6 +39,10 @@ public:
|
||||
{
|
||||
this->authComplited = authComplited;
|
||||
}
|
||||
void clearTree()
|
||||
{
|
||||
treeWidget->clear();
|
||||
}
|
||||
|
||||
protected:
|
||||
void setArchiveVisible(bool archiveVisible)
|
||||
|
||||
@@ -54,13 +54,12 @@ void DataParser::createFileDataList(QList<FileData> fileDataList,QString filenam
|
||||
file.close();
|
||||
}
|
||||
|
||||
void DataParser::createAuthMessage(ClientAutorization *auth)
|
||||
QByteArray DataParser::createAuthMessage(ClientAutorization *auth)
|
||||
{
|
||||
authPassCache = auth; //кэширование даных авторизации, для сохранения при успешном заходе
|
||||
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
@@ -74,14 +73,13 @@ void DataParser::createAuthMessage(ClientAutorization *auth)
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
return array;
|
||||
}
|
||||
|
||||
void DataParser::createToClientMessage(ToClientMessage *toClientMessage)
|
||||
QByteArray DataParser::createToClientMessage(ToClientMessage *toClientMessage)
|
||||
{
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
@@ -95,16 +93,15 @@ void DataParser::createToClientMessage(ToClientMessage *toClientMessage)
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void* data)
|
||||
QByteArray DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void* data)
|
||||
{
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
@@ -195,14 +192,13 @@ void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
return array;
|
||||
}
|
||||
|
||||
void DataParser::createQueryTasksXMLMessage(QString type)
|
||||
QByteArray DataParser::createQueryTasksXMLMessage(QString type)
|
||||
{
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
@@ -214,14 +210,13 @@ void DataParser::createQueryTasksXMLMessage(QString type)
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
return array;
|
||||
}
|
||||
|
||||
void DataParser::createDeAuthMessage(ClientDeAutorization *deAuth)
|
||||
QByteArray DataParser::createDeAuthMessage(ClientDeAutorization *deAuth)
|
||||
{
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QXmlStreamWriter xmlWriter(&file);
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
@@ -233,7 +228,7 @@ void DataParser::createDeAuthMessage(ClientDeAutorization *deAuth)
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
file.close();
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,11 +21,13 @@ public:
|
||||
void createServerSettings(QString server,QString port);
|
||||
void saveClientSettrings(QString language,bool isAutoStart);
|
||||
void createFileDataList(QList<FileData> fileDataList,QString filename);
|
||||
void createAuthMessage(ClientAutorization *auth);
|
||||
void createToClientMessage(ToClientMessage *toClientMessage);
|
||||
void createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
||||
void createQueryTasksXMLMessage(QString type);
|
||||
void createDeAuthMessage(ClientDeAutorization *deAuth);
|
||||
|
||||
QByteArray createAuthMessage(ClientAutorization *auth);
|
||||
QByteArray createToClientMessage(ToClientMessage *toClientMessage);
|
||||
QByteArray createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
||||
QByteArray createQueryTasksXMLMessage(QString type);
|
||||
QByteArray createDeAuthMessage(ClientDeAutorization *deAuth);
|
||||
|
||||
void createAuthData(ServerAuthorization *serverAuth);
|
||||
void createAuthDataOffline(QString username,QString pass);
|
||||
void addRunData(QList<int> displays);
|
||||
|
||||
@@ -31,21 +31,14 @@ void SendSystem::sendDisable()
|
||||
socket->waitForBytesWritten();
|
||||
}
|
||||
|
||||
void SendSystem::sendXMLmsgGUItoServer()
|
||||
void SendSystem::sendXMLmsgGUItoServer(QByteArray array)
|
||||
{
|
||||
QDataStream stream(socket);
|
||||
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
|
||||
QByteArray array = file.readAll();
|
||||
|
||||
stream << PacketType::TYPE_XMLANSWER;
|
||||
stream << array;
|
||||
socket->waitForBytesWritten();
|
||||
|
||||
file.close();
|
||||
}
|
||||
|
||||
void SendSystem::sendFileBlock(QString path)
|
||||
|
||||
@@ -14,7 +14,7 @@ class SendSystem :public QObject
|
||||
public:
|
||||
explicit SendSystem(QObject* parent = nullptr);
|
||||
void setSocket(QTcpSocket *socket);
|
||||
void sendXMLmsgGUItoServer();
|
||||
void sendXMLmsgGUItoServer(QByteArray array);
|
||||
void sendDisable();
|
||||
void sendFileBlock(QString path);
|
||||
void sendFolderBlock(QString path);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define DATAS_H
|
||||
|
||||
#include <QString>
|
||||
#include "typeQueryToDB.h"
|
||||
|
||||
class ServerSettings{
|
||||
public:
|
||||
@@ -41,7 +42,7 @@ class ClientDeAutorization{
|
||||
public:
|
||||
QString Login;
|
||||
};
|
||||
|
||||
/*
|
||||
enum TypeQueryToDB{
|
||||
TYPE_QUERY_GET_ALL_LISTS,
|
||||
TYPE_QUERY_NEW_INSTRUCTOR,
|
||||
@@ -56,6 +57,7 @@ enum TypeQueryToDB{
|
||||
TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE,
|
||||
TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE
|
||||
};
|
||||
*/
|
||||
|
||||
class ClientQueryToDB{
|
||||
public:
|
||||
|
||||
@@ -28,8 +28,8 @@ bool ConnectorToServer::authorizationInstructorLocal(QString login, QString pass
|
||||
autorization->Password = password;
|
||||
autorization->TypeClient = TypeClientAutorization::TYPE_GUI;
|
||||
|
||||
dataParser->createAuthMessage(autorization);
|
||||
emit signal_sendXMLmsgGUItoServer();
|
||||
QByteArray array = dataParser->createAuthMessage(autorization);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -44,8 +44,8 @@ bool ConnectorToServer::deAuthorizationInstructorLocal(QString login)
|
||||
ClientDeAutorization *deAutorization = new ClientDeAutorization;
|
||||
deAutorization->Login = login;
|
||||
|
||||
dataParser->createDeAuthMessage(deAutorization);
|
||||
emit signal_sendXMLmsgGUItoServer();
|
||||
QByteArray array = dataParser->createDeAuthMessage(deAutorization);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -60,8 +60,8 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* dat
|
||||
ClientQueryToDB *queryToDB = new ClientQueryToDB;
|
||||
queryToDB->typeQuery = typeQuery;
|
||||
|
||||
dataParser->createQueryToDBMessage(queryToDB, id, data);
|
||||
emit signal_sendXMLmsgGUItoServer();
|
||||
QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -78,8 +78,8 @@ bool ConnectorToServer::sendMessageForClient(int id, QString login, QString text
|
||||
toClientMessage->Login = login;
|
||||
toClientMessage->Text = text;
|
||||
|
||||
dataParser->createToClientMessage(toClientMessage);
|
||||
emit signal_sendXMLmsgGUItoServer();
|
||||
QByteArray array = dataParser->createToClientMessage(toClientMessage);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -91,8 +91,8 @@ bool ConnectorToServer::sendQueryTasksXML(QString type)
|
||||
return false;
|
||||
}
|
||||
|
||||
dataParser->createQueryTasksXMLMessage(type);
|
||||
emit signal_sendXMLmsgGUItoServer();
|
||||
QByteArray array = dataParser->createQueryTasksXMLMessage(type);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ signals:
|
||||
SendSystem *sendSystem,
|
||||
QThread *thread);
|
||||
|
||||
void signal_sendXMLmsgGUItoServer();
|
||||
void signal_sendXMLmsgGUItoServer(QByteArray array);
|
||||
|
||||
void sigLoginResult(ServerAuthorization * serverAuth);
|
||||
void sigDeLoginResult(ServerDeAuthorization * serverDeAuth);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <QMessageBox>
|
||||
#include <QThread>
|
||||
#include "instructorsandtraineeswidget.h"
|
||||
#include "ui_instructorsandtraineeswidget.h"
|
||||
#include "dialogauthorizationinstructor.h"
|
||||
@@ -26,6 +27,10 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
qRegisterMetaType<QList<Group>>("QList<Group>");
|
||||
qRegisterMetaType<QList<Computer>>("QList<Computer>");
|
||||
qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
|
||||
qRegisterMetaType<QList<Module*>>("QList<Module*>");
|
||||
qRegisterMetaType<QList<QTreeWidgetItem*>>("QList<QTreeWidgetItem*>");
|
||||
|
||||
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
|
||||
|
||||
connectorToServer = new ConnectorToServer(this);
|
||||
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
|
||||
@@ -38,8 +43,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
connect(viewerInstructors, &ViewerInstructors::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
|
||||
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||||
//connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||||
//connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||||
|
||||
connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer);
|
||||
|
||||
@@ -52,7 +57,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);
|
||||
|
||||
messangerWidget = new MessangerWidget(this);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
//connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
|
||||
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
|
||||
connect(messangerWidget, &MessangerWidget::signal_msgToClientReady, connectorToServer, &ConnectorToServer::slot_msgToClientReady);
|
||||
@@ -172,7 +177,11 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
|
||||
|
||||
updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName);
|
||||
connectorToServer->setLoginName(nameInstructorLoggedInLocal);
|
||||
QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
||||
|
||||
connectorToServer->sendQueryTasksXML("fim");
|
||||
connectorToServer->sendQueryTasksXML("amm");
|
||||
|
||||
//QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -194,12 +203,12 @@ void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *ser
|
||||
viewerInstructors->setAuthComplited(false);
|
||||
viewerTrainees->setAuthComplited(false);
|
||||
|
||||
Q_EMIT signal_NeedUpdateUI(true, false);
|
||||
//Q_EMIT signal_NeedUpdateUI(true, false);
|
||||
|
||||
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
|
||||
updateLabelLoggedInInstructor("","");
|
||||
|
||||
QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!"));
|
||||
//QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -221,8 +230,18 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||||
{//Сервер отключен
|
||||
ui->btnConnectionToServer->setEnabled(true);
|
||||
ui->btnAuthorizationInstructor->setEnabled(false);
|
||||
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
|
||||
ui->btnAuthorizationInstructor->setChecked(false);
|
||||
ui->btnSetVersion->hide();
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
|
||||
|
||||
viewerTrainees->clearTree();
|
||||
viewerInstructors->clearTree();
|
||||
|
||||
ammTasksWidget->clearTree();
|
||||
fimTasksWidget->clearTree();
|
||||
|
||||
messangerWidget->clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,6 +301,9 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
|
||||
{//Авторизация Инструктора локальная (Администратора)
|
||||
if(authorizationInstructorDialog(this))
|
||||
{
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
}
|
||||
else
|
||||
ui->btnAuthorizationInstructor->setChecked(false);
|
||||
@@ -292,6 +314,17 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
|
||||
{
|
||||
if(deAuthorizationInstructor(loginInstructorLoggedInLocal))
|
||||
{
|
||||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||||
disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
|
||||
viewerTrainees->clearTree();
|
||||
viewerInstructors->clearTree();
|
||||
|
||||
ammTasksWidget->clearTree();
|
||||
fimTasksWidget->clearTree();
|
||||
|
||||
messangerWidget->clear();
|
||||
}
|
||||
else
|
||||
ui->btnAuthorizationInstructor->setChecked(true);
|
||||
|
||||
@@ -16,6 +16,9 @@ Q_DECLARE_METATYPE(QList<Trainee>)
|
||||
Q_DECLARE_METATYPE(QList<Group>)
|
||||
Q_DECLARE_METATYPE(QList<Computer>)
|
||||
Q_DECLARE_METATYPE(QList<Classroom>)
|
||||
Q_DECLARE_METATYPE(QList<Module*>)
|
||||
Q_DECLARE_METATYPE(QList<QTreeWidgetItem*>)
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class InstructorsAndTraineesWidget;
|
||||
|
||||
@@ -130,6 +130,12 @@ int MessangerWidget::getIndexTab(QString login)
|
||||
return -1;
|
||||
}
|
||||
|
||||
void MessangerWidget::clear()
|
||||
{
|
||||
listTrainees.clear();
|
||||
actualizationTabsDialogMessenger();
|
||||
}
|
||||
|
||||
void MessangerWidget::on_btnSend_clicked()
|
||||
{
|
||||
QString text = ui->editMsg->toPlainText();
|
||||
|
||||
@@ -37,6 +37,8 @@ public:
|
||||
|
||||
int getIndexTab(QString login);
|
||||
|
||||
void clear();
|
||||
|
||||
private slots:
|
||||
void on_btnSend_clicked();
|
||||
void on_tabWidget_currentChanged(int index);
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#include <QXmlStreamReader>
|
||||
#include <QDomDocument>
|
||||
#include <QMessageBox>
|
||||
#include <QThread>
|
||||
#include <QResizeEvent>
|
||||
#include "ammtaskswidget.h"
|
||||
#include "ui_ammtaskswidget.h"
|
||||
|
||||
@@ -9,10 +11,17 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
QWidget(parent),
|
||||
ui(new Ui::AMMtasksWidget),
|
||||
connectorToServer(connectorToServer),
|
||||
loginTraineeSelected("")
|
||||
treeWidget(nullptr),
|
||||
loginTraineeSelected(""),
|
||||
threadPreparation(nullptr),
|
||||
threadAnimation(nullptr),
|
||||
taskTreePreparation(nullptr),
|
||||
waitAnimationWidget(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
|
||||
|
||||
treeWidget = new QTreeWidget();
|
||||
ui->horizontalLayout_1->addWidget(treeWidget);
|
||||
|
||||
@@ -20,15 +29,36 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
|
||||
preparationTreeWidget();
|
||||
|
||||
ui->btnAssignTaskToTrainee->setEnabled(false);
|
||||
ui->btnAssignTaskToTrainee->setEnabled(false);
|
||||
|
||||
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);
|
||||
|
||||
threadAnimation = new QThread();
|
||||
waitAnimationWidget = new WaitAnimationWidget;
|
||||
QMovie *movie = new QMovie(":/resources/icons/762.gif");
|
||||
waitAnimationWidget->setParent(this);
|
||||
waitAnimationWidget->initialize(movie,this);
|
||||
waitAnimationWidget->moveToThread(threadAnimation);
|
||||
threadAnimation->start();
|
||||
}
|
||||
|
||||
AMMtasksWidget::~AMMtasksWidget()
|
||||
{
|
||||
deleteAllModuls();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void AMMtasksWidget::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QSize size = event->size();
|
||||
waitAnimationWidget->resize(size);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
||||
{
|
||||
if(current == nullptr)
|
||||
@@ -67,11 +97,13 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
|
||||
|
||||
void AMMtasksWidget::slot_NeedUpdateUI()
|
||||
{
|
||||
qDebug() << "AMMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId();
|
||||
loadTasksAMM();
|
||||
}
|
||||
|
||||
void AMMtasksWidget::slot_traineeSelected(QString login)
|
||||
{
|
||||
qDebug() << "AMMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId();
|
||||
loginTraineeSelected = login;
|
||||
}
|
||||
|
||||
@@ -80,138 +112,22 @@ void AMMtasksWidget::loadTasksAMM()
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
waitAnimationWidget->showWithPlay();
|
||||
|
||||
QByteArray array = connectorToServer->getListTaskAmmArray();
|
||||
loadAMMtasksFromXML(array);
|
||||
|
||||
fillTree();
|
||||
signal_prepareListItems(array, &listAllModules);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::domElementParser(QDomElement element, Module* moduleParent)
|
||||
void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
|
||||
{
|
||||
QString name;
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
QDomElement childElement = element.firstChildElement();
|
||||
if(childElement.isNull())
|
||||
return;
|
||||
for(QTreeWidgetItem * item : listItems)
|
||||
treeWidget->addTopLevelItem(item);
|
||||
|
||||
Module* module = nullptr;
|
||||
|
||||
do
|
||||
{
|
||||
name = childElement.nodeName();
|
||||
|
||||
QDomNamedNodeMap nodeMap = childElement.attributes();
|
||||
|
||||
if(name == "pm")
|
||||
{
|
||||
module = new PM();
|
||||
PM* PMmodul = static_cast<PM*>(module);
|
||||
|
||||
PMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("pmIssuer").nodeValue(),
|
||||
nodeMap.namedItem("pmNumber").nodeValue(),
|
||||
nodeMap.namedItem("pmVolume").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
PMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "dm")
|
||||
{
|
||||
module = new DM();
|
||||
DM* DMmodul = static_cast<DM*>(module);
|
||||
|
||||
DMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("systemDiffCode").nodeValue(),
|
||||
nodeMap.namedItem("systemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSubSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("assyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("infoCode").nodeValue(),
|
||||
nodeMap.namedItem("infoCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("itemLocationCode").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
DMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "rus" || name == "eng")
|
||||
{
|
||||
if(moduleParent)
|
||||
{
|
||||
if(moduleParent->getType() == ModuleType::TYPE_PM)
|
||||
{//PM
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
PMmodulParent->setLangStructRus(nodeMap.namedItem("title").nodeValue());
|
||||
else
|
||||
PMmodulParent->setLangStructEng(nodeMap.namedItem("title").nodeValue());
|
||||
}
|
||||
else
|
||||
{//DM
|
||||
DM* DMmodulParent = static_cast<DM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
DMmodulParent->setLangStructRus(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
else
|
||||
DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
domElementParser(childElement, module);
|
||||
|
||||
if(moduleParent == nullptr)
|
||||
listAllModules.append(module);
|
||||
|
||||
}while (! (childElement = childElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
|
||||
void AMMtasksWidget::loadAMMtasksFromXML(QByteArray array)
|
||||
{
|
||||
deleteAllModuls();
|
||||
|
||||
QDomDocument docTasksDOM;
|
||||
|
||||
docTasksDOM.setContent(array);
|
||||
|
||||
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
|
||||
if(manifestElement.isNull())
|
||||
return;
|
||||
|
||||
domElementParser(manifestElement, nullptr);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::deleteAllModuls()
|
||||
{
|
||||
for(Module* module: listAllModules)
|
||||
{
|
||||
if(module->getType() == ModuleType::TYPE_PM)
|
||||
delete static_cast<PM*>(module);
|
||||
else
|
||||
delete static_cast<DM*>(module);
|
||||
}
|
||||
listAllModules.clear();
|
||||
waitAnimationWidget->hideWithStop();
|
||||
}
|
||||
|
||||
Module *AMMtasksWidget::searchModuleByID(int id)
|
||||
@@ -246,59 +162,6 @@ void AMMtasksWidget::reSetHeadTreeWidget()
|
||||
treeWidget->setHeaderLabels(listHeaders);
|
||||
}
|
||||
|
||||
void AMMtasksWidget::fillTree()
|
||||
{
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
for(Module* module : listAllModules)
|
||||
{
|
||||
addModuleToTreeWidget(module);
|
||||
}
|
||||
}
|
||||
|
||||
void AMMtasksWidget::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);
|
||||
}
|
||||
|
||||
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(ColumnsTree::clmn_PMorDM, text);
|
||||
itemModule->setText(ColumnsTree::clmn_ID, ID);
|
||||
}
|
||||
|
||||
|
||||
void AMMtasksWidget::on_btnUpdateTasks_clicked()
|
||||
{
|
||||
connectorToServer->sendQueryTasksXML("amm");
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <QDomNode>
|
||||
#include "module.h"
|
||||
#include "connectortoserver.h"
|
||||
#include "taskTreePreparation.h"
|
||||
|
||||
namespace Ui {
|
||||
class AMMtasksWidget;
|
||||
@@ -25,10 +26,18 @@ public:
|
||||
explicit AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr);
|
||||
~AMMtasksWidget();
|
||||
|
||||
public:
|
||||
void clearTree()
|
||||
{
|
||||
treeWidget->clear();
|
||||
}
|
||||
|
||||
public:
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
|
||||
private Q_SLOTS:
|
||||
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||
void on_btnUpdateTasks_clicked();
|
||||
|
||||
void on_btnAssignTaskToTrainee_clicked();
|
||||
|
||||
public Q_SLOTS:
|
||||
@@ -38,19 +47,16 @@ public Q_SLOTS:
|
||||
void slot_traineeSelected(QString login);
|
||||
|
||||
private:
|
||||
void loadAMMtasksFromXML(QByteArray array);
|
||||
void domElementParser(QDomElement element, Module* moduleParent);
|
||||
void deleteAllModuls();
|
||||
Module* searchModuleByID(int id);
|
||||
|
||||
void preparationTreeWidget();
|
||||
void reSetHeadTreeWidget();
|
||||
|
||||
void fillTree();
|
||||
void addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
|
||||
|
||||
void loadTasksAMM();
|
||||
|
||||
Q_SIGNALS:
|
||||
void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules);
|
||||
public Q_SLOTS:
|
||||
void slot_listItemsReady(QList<QTreeWidgetItem*> listItems);
|
||||
|
||||
private:
|
||||
Ui::AMMtasksWidget *ui;
|
||||
ConnectorToServer* connectorToServer;
|
||||
@@ -59,6 +65,11 @@ private:
|
||||
private:
|
||||
QList<Module*> listAllModules;
|
||||
QString loginTraineeSelected;
|
||||
|
||||
QThread* threadPreparation;
|
||||
QThread* threadAnimation;
|
||||
TaskTreePreparation* taskTreePreparation;
|
||||
WaitAnimationWidget *waitAnimationWidget;
|
||||
};
|
||||
|
||||
#endif // AMMTASKSWIDGET_H
|
||||
|
||||
@@ -24,6 +24,12 @@ public:
|
||||
explicit FIMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr);
|
||||
~FIMtasksWidget();
|
||||
|
||||
public:
|
||||
void clearTree()
|
||||
{
|
||||
treeWidget->clear();
|
||||
}
|
||||
|
||||
private Q_SLOTS:
|
||||
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||
void on_btnUpdateTasks_clicked();
|
||||
|
||||
203
InstructorsAndTrainees/tasks/tasktreepreparation.cpp
Normal file
203
InstructorsAndTrainees/tasks/tasktreepreparation.cpp
Normal file
@@ -0,0 +1,203 @@
|
||||
#include <QThread>
|
||||
#include <QDebug>
|
||||
#include "tasktreepreparation.h"
|
||||
|
||||
TaskTreePreparation::TaskTreePreparation(QObject *parent) :
|
||||
QObject(parent),
|
||||
listAllModules(nullptr)
|
||||
{
|
||||
qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId();
|
||||
}
|
||||
|
||||
TaskTreePreparation::~TaskTreePreparation()
|
||||
{
|
||||
deleteAllModuls();
|
||||
}
|
||||
|
||||
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem)
|
||||
{
|
||||
QTreeWidgetItem* itemModule = nullptr;
|
||||
|
||||
QString text;
|
||||
QString ID = QString::number(module->getID());
|
||||
|
||||
itemModule = new QTreeWidgetItem();
|
||||
|
||||
if(parentItem)
|
||||
parentItem->addChild(itemModule);
|
||||
|
||||
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::loadAMMtasksFromXML(QByteArray array)
|
||||
{
|
||||
deleteAllModuls();
|
||||
|
||||
QDomDocument docTasksDOM;
|
||||
|
||||
docTasksDOM.setContent(array);
|
||||
|
||||
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
|
||||
if(manifestElement.isNull())
|
||||
return;
|
||||
|
||||
domElementParser(manifestElement, nullptr);
|
||||
}
|
||||
|
||||
void TaskTreePreparation::deleteAllModuls()
|
||||
{
|
||||
if(listAllModules == nullptr)
|
||||
return;
|
||||
|
||||
for(Module* module: *listAllModules)
|
||||
{
|
||||
if(module->getType() == ModuleType::TYPE_PM)
|
||||
delete static_cast<PM*>(module);
|
||||
else
|
||||
delete static_cast<DM*>(module);
|
||||
}
|
||||
listAllModules->clear();
|
||||
}
|
||||
|
||||
void TaskTreePreparation::domElementParser(QDomElement element, Module* moduleParent)
|
||||
{
|
||||
QString name;
|
||||
|
||||
QDomElement childElement = element.firstChildElement();
|
||||
if(childElement.isNull())
|
||||
return;
|
||||
|
||||
Module* module = nullptr;
|
||||
|
||||
do
|
||||
{
|
||||
name = childElement.nodeName();
|
||||
|
||||
QDomNamedNodeMap nodeMap = childElement.attributes();
|
||||
|
||||
if(name == "pm")
|
||||
{
|
||||
module = new PM();
|
||||
PM* PMmodul = static_cast<PM*>(module);
|
||||
|
||||
PMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("pmIssuer").nodeValue(),
|
||||
nodeMap.namedItem("pmNumber").nodeValue(),
|
||||
nodeMap.namedItem("pmVolume").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
PMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "dm")
|
||||
{
|
||||
module = new DM();
|
||||
DM* DMmodul = static_cast<DM*>(module);
|
||||
|
||||
DMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(),
|
||||
nodeMap.namedItem("systemDiffCode").nodeValue(),
|
||||
nodeMap.namedItem("systemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("subSubSystemCode").nodeValue(),
|
||||
nodeMap.namedItem("assyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCode").nodeValue(),
|
||||
nodeMap.namedItem("disassyCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("infoCode").nodeValue(),
|
||||
nodeMap.namedItem("infoCodeVariant").nodeValue(),
|
||||
nodeMap.namedItem("itemLocationCode").nodeValue());
|
||||
|
||||
if(moduleParent)
|
||||
{
|
||||
DMmodul->setParentModule(moduleParent);
|
||||
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
PMmodulParent->addChildModule(module);
|
||||
}
|
||||
}
|
||||
else if(name == "rus" || name == "eng")
|
||||
{
|
||||
if(moduleParent)
|
||||
{
|
||||
if(moduleParent->getType() == ModuleType::TYPE_PM)
|
||||
{//PM
|
||||
PM* PMmodulParent = static_cast<PM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
PMmodulParent->setLangStructRus(nodeMap.namedItem("title").nodeValue());
|
||||
else
|
||||
PMmodulParent->setLangStructEng(nodeMap.namedItem("title").nodeValue());
|
||||
}
|
||||
else
|
||||
{//DM
|
||||
DM* DMmodulParent = static_cast<DM*>(moduleParent);
|
||||
|
||||
if(name == "rus")
|
||||
DMmodulParent->setLangStructRus(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
else
|
||||
DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(),
|
||||
nodeMap.namedItem("infoName").nodeValue(),
|
||||
nodeMap.namedItem("pdf").nodeValue(),
|
||||
nodeMap.namedItem("bookmark").nodeValue(),
|
||||
nodeMap.namedItem("xml").nodeValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
domElementParser(childElement, module);
|
||||
|
||||
if(moduleParent == nullptr)
|
||||
listAllModules->append(module);
|
||||
|
||||
}while (! (childElement = childElement.nextSiblingElement()).isNull());
|
||||
}
|
||||
|
||||
void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules)
|
||||
{
|
||||
qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId();
|
||||
|
||||
this->listAllModules = listAllModules;
|
||||
|
||||
loadAMMtasksFromXML(array);
|
||||
|
||||
listItems.clear();
|
||||
|
||||
for(Module* module : *this->listAllModules)
|
||||
{
|
||||
QTreeWidgetItem* item = addModuleToTreeWidget(module);
|
||||
listItems.append(item);
|
||||
}
|
||||
|
||||
Q_EMIT signal_listItemsReady(listItems);
|
||||
}
|
||||
33
InstructorsAndTrainees/tasks/tasktreepreparation.h
Normal file
33
InstructorsAndTrainees/tasks/tasktreepreparation.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#ifndef TASKTREEPREPARATION_H
|
||||
#define TASKTREEPREPARATION_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QTreeWidgetItem>
|
||||
#include <QDomElement>
|
||||
#include "module.h"
|
||||
|
||||
class TaskTreePreparation : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TaskTreePreparation(QObject *parent = nullptr);
|
||||
~TaskTreePreparation();
|
||||
|
||||
private:
|
||||
QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr);
|
||||
void loadAMMtasksFromXML(QByteArray array);
|
||||
void domElementParser(QDomElement element, Module* moduleParent);
|
||||
void deleteAllModuls();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules);
|
||||
|
||||
Q_SIGNALS:
|
||||
void signal_listItemsReady(QList<QTreeWidgetItem*> listItems);
|
||||
|
||||
private:
|
||||
QList<QTreeWidgetItem*> listItems;
|
||||
QList<Module*>* listAllModules;
|
||||
};
|
||||
|
||||
#endif // TASKTREEPREPARATION_H
|
||||
@@ -29,6 +29,11 @@ void WaitAnimationWidget::hideWithStop()
|
||||
loadingMovie->stop();
|
||||
}
|
||||
|
||||
void WaitAnimationWidget::resize(QSize size)
|
||||
{
|
||||
setFixedSize(size);
|
||||
}
|
||||
|
||||
WaitAnimationWidget::~WaitAnimationWidget()
|
||||
{
|
||||
delete ui;
|
||||
|
||||
@@ -17,6 +17,7 @@ public:
|
||||
void initialize(QMovie *movie,QWidget *parent);
|
||||
void showWithPlay();
|
||||
void hideWithStop();
|
||||
void resize(QSize size);
|
||||
~WaitAnimationWidget();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user