diff --git a/FILES/CSS/styleSheetMain.css b/FILES/CSS/styleSheetMain.css index d5e4990..45f7ba3 100644 --- a/FILES/CSS/styleSheetMain.css +++ b/FILES/CSS/styleSheetMain.css @@ -81,7 +81,7 @@ QToolButton { height: 55px; } -QToolButton#btnSend, QToolButton#btnDelete, QToolButton#btnCheck, QToolButton#btnOnlyActive, +QToolButton#btnSend, QToolButton#btnDelete, QToolButton#btnCheck, QToolButton#btnOnlyActive, QToolButton#btnStatus, QToolButton#btnSave, QToolButton#btnUpdateStyle, QToolButton#btnSetVersion, QToolButton#btnAssignTask, QToolButton#btnCheckDB, QToolButton#btnRepare, QToolButton#btnDocsUpdating, QToolButton#btnAssign { diff --git a/LibDataBaseInterface/databaselms_tasks.cpp b/LibDataBaseInterface/databaselms_tasks.cpp index 080c201..71030b6 100644 --- a/LibDataBaseInterface/databaselms_tasks.cpp +++ b/LibDataBaseInterface/databaselms_tasks.cpp @@ -435,6 +435,54 @@ int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status) return 0; } + if(status == "new") + {//Удаляем отчет + queryStr = QString("SELECT reports.report_id " + "FROM public.reports " + "WHERE fk_task_fim_id = %1 " + "ORDER BY reports.report_id ASC").arg( + QString::number(task_id)); + + int report_id = 0; + + QSqlQuery queryReportsSEL = QSqlQuery(*db); + if(queryExec(queryStr, &queryReportsSEL)) + { + if (queryReportsSEL.first()) + {//Отчет + report_id = queryReportsSEL.value(0).toInt(); + } + } + else + { + resBool = db->rollback(); + return 0; + } + + + queryStr = QString("DELETE FROM public.report_items " + "WHERE fk_report_id = %1 ").arg( + QString::number(report_id)); + + QSqlQuery queryItemsDEL = QSqlQuery(*db); + if(!queryExec(queryStr, &queryItemsDEL)) + { + resBool = db->rollback(); + return 0; + } + + queryStr = QString("DELETE FROM public.reports " + "WHERE report_id = %1 ").arg( + QString::number(report_id)); + + QSqlQuery queryReportsDEL = QSqlQuery(*db); + if(!queryExec(queryStr, &queryReportsDEL)) + { + resBool = db->rollback(); + return 0; + } + } + resBool = db->commit(); return id_trainee; } diff --git a/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc b/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc index a81d934..54493e6 100644 --- a/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc +++ b/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc @@ -56,5 +56,6 @@ resources/icons/eye.png resources/icons/exchange.png resources/icons/link.png + resources/icons/new.png diff --git a/LibInstructorsAndTrainees/messanger/messangerwidget.cpp b/LibInstructorsAndTrainees/messanger/messangerwidget.cpp index c5504f9..1a52713 100644 --- a/LibInstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/LibInstructorsAndTrainees/messanger/messangerwidget.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "instructor.h" #include "messangerwidget.h" #include "ui_messangerwidget.h" @@ -85,6 +86,8 @@ void MessangerWidget::addTabDialogMessenger(User user) oneDialogMessenger = new OneDialogMessenger(userLocalGUI, userRemote, this); + oneDialogMessenger->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + ui->verticalLayout_ListMsg->addWidget(oneDialogMessenger); //Обновляем заголовок diff --git a/LibInstructorsAndTrainees/messanger/messangerwidget.ui b/LibInstructorsAndTrainees/messanger/messangerwidget.ui index 4c8a2a0..c0a8ffd 100644 --- a/LibInstructorsAndTrainees/messanger/messangerwidget.ui +++ b/LibInstructorsAndTrainees/messanger/messangerwidget.ui @@ -85,7 +85,7 @@ - :/resources/icons/circleGray.png + :/resources/icons/circleGray.png @@ -128,7 +128,7 @@ Send - + :/resources/icons/sendMsg.png:/resources/icons/sendMsg.png @@ -149,7 +149,7 @@ - + diff --git a/LibInstructorsAndTrainees/messanger/tabdialogmessenger.cpp b/LibInstructorsAndTrainees/messanger/tabdialogmessenger.cpp index 2c1db93..e6ea6ca 100644 --- a/LibInstructorsAndTrainees/messanger/tabdialogmessenger.cpp +++ b/LibInstructorsAndTrainees/messanger/tabdialogmessenger.cpp @@ -15,6 +15,10 @@ OneDialogMessenger::OneDialogMessenger(User userLocalGUI, User userRemote, QWidg setWordWrap(true); setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn); + + setVerticalScrollMode(ScrollMode::ScrollPerPixel); + + verticalScrollBar()->setSingleStep(10); } OneDialogMessenger::~OneDialogMessenger() diff --git a/LibInstructorsAndTrainees/resources/icons/new — копия (2).png b/LibInstructorsAndTrainees/resources/icons/new — копия (2).png new file mode 100644 index 0000000..3504131 Binary files /dev/null and b/LibInstructorsAndTrainees/resources/icons/new — копия (2).png differ diff --git a/LibInstructorsAndTrainees/resources/icons/new — копия.png b/LibInstructorsAndTrainees/resources/icons/new — копия.png new file mode 100644 index 0000000..2eb82d6 Binary files /dev/null and b/LibInstructorsAndTrainees/resources/icons/new — копия.png differ diff --git a/LibInstructorsAndTrainees/resources/icons/new.png b/LibInstructorsAndTrainees/resources/icons/new.png new file mode 100644 index 0000000..8b621e3 Binary files /dev/null and b/LibInstructorsAndTrainees/resources/icons/new.png differ diff --git a/LibInstructorsAndTrainees/resources/icons/personalCard.png b/LibInstructorsAndTrainees/resources/icons/personalCard.png index 555709c..8c2819c 100644 Binary files a/LibInstructorsAndTrainees/resources/icons/personalCard.png and b/LibInstructorsAndTrainees/resources/icons/personalCard.png differ diff --git a/LibInstructorsAndTrainees/resources/icons/sign — копия.png b/LibInstructorsAndTrainees/resources/icons/sign — копия.png new file mode 100644 index 0000000..62aafba Binary files /dev/null and b/LibInstructorsAndTrainees/resources/icons/sign — копия.png differ diff --git a/LibInstructorsAndTrainees/resources/icons/sign.png b/LibInstructorsAndTrainees/resources/icons/sign.png index 62aafba..2b1f8c4 100644 Binary files a/LibInstructorsAndTrainees/resources/icons/sign.png and b/LibInstructorsAndTrainees/resources/icons/sign.png differ diff --git a/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp b/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp index 7a820fd..9d98b34 100644 --- a/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -21,7 +21,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre threadPreparation(nullptr), taskTreePreparation(nullptr), waitAnimationWidget(nullptr), - dlgCheckerTask(nullptr), + dlgStatusTask(nullptr), dlgListSubProc(nullptr), flOnlyActive(false), lastCurrentID(0) @@ -35,6 +35,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre treeWidget->setObjectName("treeWidget_AMMforTrainee"); ui->horizontalLayout_Tree->addWidget(treeWidget); + treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked); connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked); @@ -63,8 +65,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre ui->btnDelete->setObjectName("btnDelete"); ui->btnDelete->setEnabled(false); - ui->btnCheck->setObjectName("btnCheck"); - ui->btnCheck->setEnabled(false); + ui->btnStatus->setObjectName("btnStatus"); + ui->btnStatus->setEnabled(false); ui->btnOnlyActive->setObjectName("btnOnlyActive"); ui->btnOnlyActive->setEnabled(false); ui->btnAssignTask->setObjectName("btnAssignTask"); @@ -75,7 +77,19 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre if(type == TypeListTreeAMMFIM::listCommon) { ui->btnDelete->setVisible(false); - ui->btnCheck->setVisible(false); + ui->btnStatus->setVisible(false); + } + else if(type == TypeListTreeAMMFIM::listOneTask) + { + ui->btnDelete->setVisible(false); + ui->btnStatus->setVisible(false); + ui->btnAssignTask->setVisible(false); + ui->btnOnlyActive->setVisible(false); + ui->btnDocsUpdating->setVisible(false); + ui->label_DocsActualed->setVisible(false); + ui->label_Actual->setVisible(false); + this->treeWidget->headerItem()->setHidden(true); + this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection); } else { @@ -117,6 +131,13 @@ void AMMtasksWidget::deactivate() idTraineeSelected = 0; } +void AMMtasksWidget::setOneTaskAmm(TaskAmmFim *task) +{ + QList listTask; + listTask.append(*task); + emit signal_prepareAMMListItemsForTrainee(listTask); +} + void AMMtasksWidget::waitAnimationWidgetShowWithPlay() { waitAnimationWidget->showWithPlay(); @@ -153,8 +174,8 @@ void AMMtasksWidget::closeEvent(QCloseEvent *event) void AMMtasksWidget::closeChildDlg() { - if(dlgCheckerTask) - dlgCheckerTask->close(); + if(dlgStatusTask) + dlgStatusTask->close(); if(dlgListSubProc) dlgListSubProc->close(); } @@ -183,7 +204,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) if(item == nullptr) { ui->btnDelete->setEnabled(false); - ui->btnCheck->setEnabled(false); + ui->btnStatus->setEnabled(false); ui->btnAssignTask->setEnabled(false); return; } @@ -204,14 +225,14 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) lastCurrentID = id; ui->btnDelete->setEnabled(false); - ui->btnCheck->setEnabled(false); + ui->btnStatus->setEnabled(false); } else if(this->type == TypeListTreeAMMFIM::listForTrainee) { QTreeWidgetItem *treeItemParent = item->parent(); if(treeItemParent == nullptr) {//Выбрана задача - ui->btnCheck->setEnabled(true); + ui->btnStatus->setEnabled(true); ui->btnDelete->setEnabled(true); int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); @@ -222,7 +243,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) } else { - ui->btnCheck->setEnabled(false); + ui->btnStatus->setEnabled(false); ui->btnDelete->setEnabled(false); } ui->btnAssignTask->setEnabled(false); @@ -282,7 +303,7 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFirst) void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems) { - if(type != TypeListTreeAMMFIM::listForTrainee) + if(type != TypeListTreeAMMFIM::listForTrainee && type != TypeListTreeAMMFIM::listOneTask) { //Обновление дерева treeWidget->clear(); @@ -296,6 +317,13 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems) if(item != nullptr) treeWidget->setCurrentItem(item); */ + QTreeWidgetItem * item = treeWidget->topLevelItem(0); + if(item != nullptr) + { + //treeWidget->setCurrentItem(item); + if(type == TypeListTreeAMMFIM::listOneTask) + treeWidget->expandAll(); + } if(type == TypeListTreeAMMFIM::listForTrainee) setCurrentTask(lastCurrentID); @@ -363,7 +391,7 @@ void AMMtasksWidget::preparationTreeWidget() reSetHeadTreeWidget(); - if(type == TypeListTreeAMMFIM::listCommon) + if(type == TypeListTreeAMMFIM::listCommon || type == TypeListTreeAMMFIM::listOneTask) { treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true); @@ -515,7 +543,7 @@ void AMMtasksWidget::on_btnDelete_clicked() } } -void AMMtasksWidget::on_btnCheck_clicked() +void AMMtasksWidget::on_btnStatus_clicked() { QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem(); @@ -529,17 +557,17 @@ void AMMtasksWidget::on_btnCheck_clicked() if(!task.getID()) return; - dlgCheckerTask = new DialogChekerTask(connectorToServer, "amm", this); - dlgCheckerTask->setTask(&task); - dlgCheckerTask->exec(); + dlgStatusTask = new DialogChekerTask(connectorToServer, CheckerTask::TypeChecker::amm_check, this); + dlgStatusTask->setTask(&task); + dlgStatusTask->exec(); - if(dlgCheckerTask->getFlChanged()) + if(dlgStatusTask->getFlChanged()) waitAnimationWidget->showWithPlay(); - if(dlgCheckerTask) + if(dlgStatusTask) { - delete dlgCheckerTask; - dlgCheckerTask = nullptr; + delete dlgStatusTask; + dlgStatusTask = nullptr; } } } diff --git a/LibInstructorsAndTrainees/tasks/ammtaskswidget.h b/LibInstructorsAndTrainees/tasks/ammtaskswidget.h index 32bba57..4cfb014 100644 --- a/LibInstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/LibInstructorsAndTrainees/tasks/ammtaskswidget.h @@ -26,6 +26,7 @@ public: public: void deactivate(); + void setOneTaskAmm(TaskAmmFim* task); void waitAnimationWidgetShowWithPlay(); void setDocsActualed(bool flActualed); @@ -42,7 +43,7 @@ protected: private Q_SLOTS: void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_btnDelete_clicked(); - void on_btnCheck_clicked(); + void on_btnStatus_clicked(); void on_btnAssignTask_clicked(); void on_btnOnlyActive_clicked(); //AMM @@ -99,7 +100,7 @@ private: TaskAMMFIMTreePreparation* taskTreePreparation; WaitAnimationWidget *waitAnimationWidget; - DialogChekerTask* dlgCheckerTask; + DialogChekerTask* dlgStatusTask; DialogListSubProc* dlgListSubProc; diff --git a/LibInstructorsAndTrainees/tasks/ammtaskswidget.ui b/LibInstructorsAndTrainees/tasks/ammtaskswidget.ui index a15ab3c..0f14cdc 100644 --- a/LibInstructorsAndTrainees/tasks/ammtaskswidget.ui +++ b/LibInstructorsAndTrainees/tasks/ammtaskswidget.ui @@ -133,7 +133,7 @@ - + 50 diff --git a/LibInstructorsAndTrainees/tasks/checkertask.cpp b/LibInstructorsAndTrainees/tasks/checkertask.cpp index a4af13e..8570cc0 100644 --- a/LibInstructorsAndTrainees/tasks/checkertask.cpp +++ b/LibInstructorsAndTrainees/tasks/checkertask.cpp @@ -2,42 +2,53 @@ #include "specialmessagebox.h" #include "ui_checkertask.h" #include "fimtaskswidget.h" +#include "ammtaskswidget.h" -CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent) : +CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent) : QWidget(parent), ui(new Ui::CheckerTask), connectorToServer(connectorToServer), fimTasksWidget(nullptr), + ammTasksWidget(nullptr), flChanged(false), id_task(0), - type("fim") + type(TypeChecker::fim_check) { ui->setupUi(this); + ui->btnNew->setObjectName("btnNew"); + ui->btnCheckup->setObjectName("btnCheckup"); + ui->btnWrong->setObjectName("btnWrong"); + ui->btnCompleted->setObjectName("btnCompleted"); + this->type = type; - if(type == "fim") + if(type == TypeChecker::fim_check) { fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this); - ui->verticalLayout_3->addWidget(fimTasksWidget); + ui->lblName->setVisible(false); ui->lblDMcode->setVisible(false); ui->plainText->setReadOnly(true); ui->plainText->setObjectName("plainText"); } - else + else if(type == TypeChecker::amm_check) { + ammTasksWidget = new AMMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this); + ui->verticalLayout_3->addWidget(ammTasksWidget); + + ui->lblName->setVisible(false); + ui->lblDMcode->setVisible(false); + ui->plainText->setVisible(false); ui->label->setVisible(false); - //ui->label_Task->setVisible(false); - ui->btnRight->setText(tr("Completed")); - ui->btnWrong->setText(tr("New")); - ui->btnWrong->setIcon(QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); - ui->btnRight->setEnabled(false); ui->btnWrong->setEnabled(false); + ui->btnCheckup->setEnabled(false); + ui->btnWrong->setVisible(false); + ui->btnCheckup->setVisible(false); } } @@ -49,6 +60,12 @@ CheckerTask::~CheckerTask() fimTasksWidget = nullptr; } + if(ammTasksWidget) + { + delete ammTasksWidget; + ammTasksWidget = nullptr; + } + delete ui; } @@ -62,20 +79,68 @@ void CheckerTask::setTask(TaskAmmFim* task) this->task = *task; id_task = task->getID(); - if(type == "fim") + if(type == TypeChecker::fim_check) { //Задача fimTasksWidget->setOneTaskFim(&this->task); //Репорт outReport(this->task.report); - } - else if(type == "amm") - { + if(this->task.status == "new") - ui->btnRight->setEnabled(true); - else + { + ui->btnNew->setEnabled(false); + ui->btnCheckup->setEnabled(false); + ui->btnWrong->setEnabled(false); + ui->btnCompleted->setEnabled(false); + + ui->plainText->setVisible(false); + ui->label->setVisible(false); + } + else if(this->task.status == "checkup") + { + ui->btnNew->setEnabled(true); + ui->btnCheckup->setEnabled(false); ui->btnWrong->setEnabled(true); + ui->btnCompleted->setEnabled(true); + } + else if(this->task.status == "failed") + { + ui->btnNew->setEnabled(true); + ui->btnCheckup->setEnabled(true); + ui->btnWrong->setEnabled(false); + ui->btnCompleted->setEnabled(true); + } + else if(this->task.status == "completed") + { + ui->btnNew->setEnabled(true); + ui->btnCheckup->setEnabled(true); + ui->btnWrong->setEnabled(true); + ui->btnCompleted->setEnabled(false); + } + else + { + ui->btnNew->setEnabled(false); + ui->btnCheckup->setEnabled(false); + ui->btnWrong->setEnabled(false); + ui->btnCompleted->setEnabled(false); + } + } + else if(type == TypeChecker::amm_check) + { + //Задача + ammTasksWidget->setOneTaskAmm(&this->task); + + if(this->task.status == "new") + { + ui->btnNew->setEnabled(false); + ui->btnCompleted->setEnabled(true); + } + else + { + ui->btnNew->setEnabled(true); + ui->btnCompleted->setEnabled(false); + } ui->lblName->setText(task->ammProcedure.title); ui->lblDMcode->setText(task->ammProcedure.dmCode); @@ -100,7 +165,7 @@ void CheckerTask::setTask(TaskAmmFim* task) else { ui->lblStatusCurrText->setText(tr("new")); - ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); + ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/new.png"))); } } @@ -157,19 +222,70 @@ void CheckerTask::outReport(FIMReport report) } } +//НЕВЕРНО void CheckerTask::on_btnWrong_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; - if(type == "fim") + if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; status = "failed"; msgString = tr("Change task status?\nThe status will be set:\n'failed'"); } - else + + if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) + { + connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); + this->parentWidget()->close(); + flChanged = true; + } +} + +//ВЫПОЛНЕНО +void CheckerTask::on_btnCompleted_clicked() +{ + TypeQueryToDB typeQuery; + QString status; + QString msgString; + + if(type == TypeChecker::fim_check) + { + typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; + status = "completed"; + msgString = tr("Change task status?\nThe status will be set:\n'completed'"); + } + else if(type == TypeChecker::amm_check) + { + typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; + status = "completed"; + msgString = tr("Change task status?\nThe status will be set:\n'completed'"); + } + + if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) + { + connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status); + this->parentWidget()->close(); + flChanged = true; + } +} + +//НОВАЯ +void CheckerTask::on_btnNew_clicked() +{ + TypeQueryToDB typeQuery; + QString status; + QString msgString; + + if(type == TypeChecker::fim_check) + { + typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; + status = "new"; + msgString = tr("Change task status?\nThe status will be set:\n'new'"); + } + else if(type == TypeChecker::amm_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; status = "new"; @@ -184,23 +300,18 @@ void CheckerTask::on_btnWrong_clicked() } } -void CheckerTask::on_btnRight_clicked() +//НА ПРОВЕРКЕ +void CheckerTask::on_btnCheckup_clicked() { TypeQueryToDB typeQuery; QString status; QString msgString; - if(type == "fim") + if(type == TypeChecker::fim_check) { typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; - status = "completed"; - msgString = tr("Change task status?\nThe status will be set:\n'completed'"); - } - else - { - typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; - status = "completed"; - msgString = tr("Change task status?\nThe status will be set:\n'completed'"); + status = "checkup"; + msgString = tr("Change task status?\nThe status will be set:\n'checkup'"); } if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) diff --git a/LibInstructorsAndTrainees/tasks/checkertask.h b/LibInstructorsAndTrainees/tasks/checkertask.h index 639e55c..995c468 100644 --- a/LibInstructorsAndTrainees/tasks/checkertask.h +++ b/LibInstructorsAndTrainees/tasks/checkertask.h @@ -13,13 +13,21 @@ class CheckerTask; } class FIMtasksWidget; +class AMMtasksWidget; class CheckerTask : public QWidget { Q_OBJECT public: - explicit CheckerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent = nullptr); + enum TypeChecker + { + amm_check, + fim_check + }; + +public: + explicit CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent = nullptr); ~CheckerTask(); void closeEvent(QCloseEvent *event) override; @@ -33,7 +41,9 @@ public: private slots: void on_btnWrong_clicked(); - void on_btnRight_clicked(); + void on_btnCompleted_clicked(); + void on_btnNew_clicked(); + void on_btnCheckup_clicked(); private: void outReport(FIMReport report); @@ -47,10 +57,11 @@ private: private: ConnectorToServer* connectorToServer; FIMtasksWidget* fimTasksWidget; + AMMtasksWidget* ammTasksWidget; bool flChanged; int id_task; - QString type; + TypeChecker type; }; #endif // DIALOGCHECKTASK_H diff --git a/LibInstructorsAndTrainees/tasks/checkertask.ui b/LibInstructorsAndTrainees/tasks/checkertask.ui index 5d3ce90..c54b38d 100644 --- a/LibInstructorsAndTrainees/tasks/checkertask.ui +++ b/LibInstructorsAndTrainees/tasks/checkertask.ui @@ -53,6 +53,9 @@ :/resources/icons/rectGray.png + + true + @@ -159,6 +162,58 @@ + + + + + 50 + 50 + + + + New + + + + :/resources/icons/new.png:/resources/icons/new.png + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon + + + + + + + + 50 + 50 + + + + Checkup + + + + :/resources/icons/circleYellow.png:/resources/icons/circleYellow.png + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon + + + @@ -186,7 +241,7 @@ - + 50 @@ -194,7 +249,7 @@ - Right + Completed diff --git a/LibInstructorsAndTrainees/tasks/dialogchekertask.cpp b/LibInstructorsAndTrainees/tasks/dialogchekertask.cpp index 7c0ad0b..8bd62f8 100644 --- a/LibInstructorsAndTrainees/tasks/dialogchekertask.cpp +++ b/LibInstructorsAndTrainees/tasks/dialogchekertask.cpp @@ -1,7 +1,7 @@ #include #include "dialogchekertask.h" -DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent) : +DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, CheckerTask::TypeChecker type, QWidget *parent) : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowMaximizeButtonHint @@ -13,17 +13,22 @@ DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, QString QHBoxLayout *layout = new QHBoxLayout(this); layout->addWidget(checkerTask); - this->setWindowTitle(tr("Check Task")); - if(type == "fim") + switch (type) { + case CheckerTask::TypeChecker::fim_check: + this->setWindowTitle(tr("Check Task")); this->setMinimumSize(1400, 700); - this->setWindowState(Qt::WindowMaximized); - } - else - { - this->setMinimumSize(400, 200); + //this->setWindowState(Qt::WindowMaximized); + break; + case CheckerTask::TypeChecker::amm_check: + this->setWindowTitle(tr("Status Task")); + this->setMinimumSize(1400, 500); + break; + default: + break; } + this->setModal(true); } diff --git a/LibInstructorsAndTrainees/tasks/dialogchekertask.h b/LibInstructorsAndTrainees/tasks/dialogchekertask.h index 282ffed..f5a9351 100644 --- a/LibInstructorsAndTrainees/tasks/dialogchekertask.h +++ b/LibInstructorsAndTrainees/tasks/dialogchekertask.h @@ -9,7 +9,7 @@ class DialogChekerTask : public QDialog { Q_OBJECT public: - DialogChekerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent = nullptr); + DialogChekerTask(ConnectorToServer* connectorToServer, CheckerTask::TypeChecker type, QWidget *parent = nullptr); ~DialogChekerTask(); void closeEvent(QCloseEvent *event) override; diff --git a/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp b/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp index 70e58b5..08bd9b6 100644 --- a/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -32,6 +32,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre treeWidget = new QTreeWidget(); ui->horizontalLayout_Tree->addWidget(treeWidget); + treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + //connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged); connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked); @@ -191,10 +193,11 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) ui->btnDelete->setEnabled(true); - if(task.status != "new") + ui->btnCheck->setEnabled(true); + /*if(task.status != "new") ui->btnCheck->setEnabled(true); else - ui->btnCheck->setEnabled(false); + ui->btnCheck->setEnabled(false);*/ } else { @@ -422,7 +425,7 @@ void FIMtasksWidget::on_btnCheck_clicked() if(!task.getID()) return; - dlgCheckerTask = new DialogChekerTask(connectorToServer, "fim", this); + dlgCheckerTask = new DialogChekerTask(connectorToServer, CheckerTask::TypeChecker::fim_check, this); dlgCheckerTask->setTask(&task); dlgCheckerTask->exec(); @@ -464,6 +467,7 @@ void FIMtasksWidget::setCurrentTask(int id) if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id) { treeWidget->setCurrentItem(item); + treeWidget->itemClicked(item, 0); return; } } diff --git a/LibInstructorsAndTrainees/tasks/fimtaskswidget.h b/LibInstructorsAndTrainees/tasks/fimtaskswidget.h index 0e60bd0..7260dce 100644 --- a/LibInstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/LibInstructorsAndTrainees/tasks/fimtaskswidget.h @@ -27,7 +27,7 @@ public: public: void deactivate(); - void setOneTaskFim(TaskAmmFim* task); //FIM + void setOneTaskFim(TaskAmmFim* task); void waitAnimationWidgetShowWithPlay(); public: diff --git a/LibInstructorsAndTrainees/tasks/fimtaskswidget.ui b/LibInstructorsAndTrainees/tasks/fimtaskswidget.ui index 8a3fbed..2ccac45 100644 --- a/LibInstructorsAndTrainees/tasks/fimtaskswidget.ui +++ b/LibInstructorsAndTrainees/tasks/fimtaskswidget.ui @@ -54,7 +54,7 @@ Assign - + :/resources/icons/assignTask.png:/resources/icons/assignTask.png @@ -80,7 +80,7 @@ Check - + :/resources/icons/check.png:/resources/icons/check.png @@ -106,7 +106,7 @@ Delete - + :/resources/icons/delete.png:/resources/icons/delete.png @@ -129,7 +129,7 @@ - + diff --git a/LibInstructorsAndTrainees/tasks/listsubproc.cpp b/LibInstructorsAndTrainees/tasks/listsubproc.cpp index e627391..4258eaf 100644 --- a/LibInstructorsAndTrainees/tasks/listsubproc.cpp +++ b/LibInstructorsAndTrainees/tasks/listsubproc.cpp @@ -14,6 +14,8 @@ ListSubProc::ListSubProc(QWidget *parent) : treeWidget = new QTreeWidget(); ui->horizontalLayout_Tree->addWidget(treeWidget); + treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + preparationTreeWidget(); } diff --git a/LibInstructorsAndTrainees/tasks/listsubproc.ui b/LibInstructorsAndTrainees/tasks/listsubproc.ui index c8a2479..7fe6668 100644 --- a/LibInstructorsAndTrainees/tasks/listsubproc.ui +++ b/LibInstructorsAndTrainees/tasks/listsubproc.ui @@ -72,7 +72,7 @@ Assign - + :/resources/icons/circleGreen.png:/resources/icons/circleGreen.png @@ -93,7 +93,7 @@ - + diff --git a/LibInstructorsAndTrainees/tasks/subprocitemwidget.ui b/LibInstructorsAndTrainees/tasks/subprocitemwidget.ui index 827d0fb..6a045cb 100644 --- a/LibInstructorsAndTrainees/tasks/subprocitemwidget.ui +++ b/LibInstructorsAndTrainees/tasks/subprocitemwidget.ui @@ -43,6 +43,15 @@ QFrame::Sunken + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + true + diff --git a/LibInstructorsAndTrainees/tasks/tasktreepreparation.cpp b/LibInstructorsAndTrainees/tasks/tasktreepreparation.cpp index 94edffe..3b425b3 100644 --- a/LibInstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/LibInstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -525,13 +525,13 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QListsetText(ColumnsTreeAMM::clmnAMM_status, tr("new")); - item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); + item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/new.png"))); } item->setToolTip(0, text); - if(type == TypeListTreeAMMFIM::listForTrainee) + if(type == TypeListTreeAMMFIM::listForTrainee || type == TypeListTreeAMMFIM::listOneTask) { //Подпроцедуры if(task.listSubProc.count()) @@ -598,7 +598,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) else { itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new")); - itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/new.png"))); } @@ -635,7 +635,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array) itemSign->setText(ColumnsTreeFIM::clmnFIM_Title, sign.description); //itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable); //itemSign->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); - itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png")); + itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png").pixmap(24, 24)); itemSign->setToolTip(ColumnsTreeFIM::clmnFIM_Title, sign.description); itemMalfunction->addChild(itemSign); @@ -691,7 +691,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QListsetText(ColumnsTreeFIM::clmnFIM_status, tr("new")); - itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); + itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/new.png"))); } diff --git a/LibServer/resources/icons/lock.png b/LibServer/resources/icons/lock.png index e970b1e..0cd09ca 100644 Binary files a/LibServer/resources/icons/lock.png and b/LibServer/resources/icons/lock.png differ diff --git a/LibServer/resources/icons/old/lock.png b/LibServer/resources/icons/old/lock.png new file mode 100644 index 0000000..e970b1e Binary files /dev/null and b/LibServer/resources/icons/old/lock.png differ diff --git a/LibServer/resources/icons/old/stop.png b/LibServer/resources/icons/old/stop.png new file mode 100644 index 0000000..d9122fd Binary files /dev/null and b/LibServer/resources/icons/old/stop.png differ diff --git a/LibServer/resources/icons/stop.png b/LibServer/resources/icons/stop.png index d9122fd..286e53f 100644 Binary files a/LibServer/resources/icons/stop.png and b/LibServer/resources/icons/stop.png differ diff --git a/LibServer/serverlmswidget.cpp b/LibServer/serverlmswidget.cpp index ffcedd3..51c9c17 100644 --- a/LibServer/serverlmswidget.cpp +++ b/LibServer/serverlmswidget.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include "serverlmswidget.h" @@ -57,6 +56,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : waitAnimationWidget->initialize(movie,this); waitAnimationWidget->showWithPlay(); + + updateStateOnlyVersion(); } ServerLMSWidget::~ServerLMSWidget() @@ -100,7 +101,9 @@ void ServerLMSWidget::changeEvent(QEvent *event) { ui->retranslateUi(this); // переведём окно заново - updateStateServer(); + updateStateOnlyServer(); + updateStateOnlyDB(); + updateStateOnlyVersion(); } } @@ -137,7 +140,7 @@ void ServerLMSWidget::slot_AddMessageToLog(QString message) void ServerLMSWidget::slot_ErrorPostgreSQL(QString text) { emit signal_Menu_ShowWindow(); - SpecMsgBox::CriticalClose(this, tr("Error PostgreSQL!")); + SpecMsgBox::CriticalClose(this, tr("Error PostgreSQL!") + "\n" + text); } void ServerLMSWidget::slot_UpdateDocs() @@ -161,7 +164,9 @@ void ServerLMSWidget::slot_startInitialization_step1() flStartInitialization = true; - updateStateServer(); + updateStateOnlyServer(); + updateStateOnlyDB(); + updateStateOnlyVersion(); QApplication::restoreOverrideCursor(); @@ -177,13 +182,13 @@ void ServerLMSWidget::slot_startInitialization_step1() void ServerLMSWidget::slot_setVersion(QString versionStr) { this->versionStr = versionStr; - ui->lblVersionText->setText(versionStr); + Logger::instance().log("Set Version: " + versionStr); + updateStateOnlyVersion(); } void ServerLMSWidget::start() { startInitialization_step0(); - } void ServerLMSWidget::slot_BlockAutorization(bool block) @@ -191,15 +196,14 @@ void ServerLMSWidget::slot_BlockAutorization(bool block) if(block) { server->blockAutorization(); - ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png"))); - //emit signal_Tray_ShowMessage(tr("Authorization blocked!")); + Logger::instance().log("Autorization is blocked"); } else { server->unBlockAutorization(); - ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/open.png"))); - //emit signal_Tray_ShowMessage(tr("Authorization unblocked!")); + Logger::instance().log("Autorization is unblocked"); } + updateStateOnlyServer(); } void ServerLMSWidget::slot_LanguageChanged(QString language) @@ -215,28 +219,35 @@ void ServerLMSWidget::on_btnStartServer_clicked() if(server->startServer()) { QApplication::setOverrideCursor(Qt::WaitCursor); - QApplication::restoreOverrideCursor(); ui->btnStartServer->setEnabled(false); ui->btnStopServer->setEnabled(true); slot_BlockAutorization(false); + updateStateOnlyServer(); + emit signal_Tray_ShowMessage(tr("Server is started!")); + + QApplication::restoreOverrideCursor(); } - updateStateServer(); } void ServerLMSWidget::on_btnStopServer_clicked() { if(server->stopServer()) { + QApplication::setOverrideCursor(Qt::WaitCursor); + ui->btnStopServer->setEnabled(false); ui->btnStartServer->setEnabled(true); slot_BlockAutorization(true); + updateStateOnlyServer(); + emit signal_Tray_ShowMessage(tr("Server is stoped!")); + + QApplication::restoreOverrideCursor(); } - updateStateServer(); } void ServerLMSWidget::on_btnSettings_clicked() @@ -271,7 +282,7 @@ void ServerLMSWidget::on_btnSettings_clicked() providerDBLMS->DisConnectionFromDB(); - updateStateServer(); + updateStateOnlyDB(); SpecMsgBox::WarningClose(this, tr("Database settings have been changed.\nThe server will be restarted.")); @@ -292,12 +303,12 @@ void ServerLMSWidget::slot_trySetServerState(PacketType packetType) if (packetType == PacketType::BUSY) { server->blockAutorization(); - updateStateServer(); + updateStateOnlyServer(); } else if (packetType == PacketType::FREE) { server->unBlockAutorization(); - updateStateServer(); + updateStateOnlyServer(); } } @@ -375,41 +386,43 @@ void ServerLMSWidget::startInitialization_step0() processingSystem = new ProcessingSystem(providerDBLMS, updateController, docsUpdater); - dataParser = new DataParser(assetsManager,processingSystem); + dataParser = new DataParser(assetsManager, processingSystem); commonClientHandler = new CommonClientHandler; - connect(this,&ServerLMSWidget::signal_DocsChanged,commonClientHandler, &CommonClientHandler::slot_DocsChanged); - connect(commonClientHandler,&CommonClientHandler::sigSetServerState,this,&ServerLMSWidget::slot_trySetServerState); + connect(this, &ServerLMSWidget::signal_DocsChanged, commonClientHandler, &CommonClientHandler::slot_DocsChanged); + connect(commonClientHandler, &CommonClientHandler::sigSetServerState, this, &ServerLMSWidget::slot_trySetServerState); - server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000); + server = new MultiThreadServer(this, updateController, processingSystem, dataParser, 6000); loggerThread->start(); updateThread->start(); - commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser); - processingSystem->initialize(server,dataParser,commonClientHandler,updateController,chatSystem); - chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap()); + commonClientHandler->initialize(server->getClientsMap(), processingSystem, dataParser); + processingSystem->initialize(server, dataParser, commonClientHandler, updateController, chatSystem); + chatSystem->initialize(commonClientHandler, dataParser, server->getClientsMap()); Logger::instance().moveToThread(loggerThread); Logger::instance().setLoggingType(LoggingType::WIDGET); Logger::instance().setLogToFile(true); - connect(this,&ServerLMSWidget::sigUpdateControllerInitialize,updateController,&UpdateController::initialize/*,Qt::DirectConnection*/); - connect(updateController,&UpdateController::sigInitializeFinished, this,&ServerLMSWidget::slot_startInitialization_step1/*,Qt::DirectConnection*/); - connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection); - connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError); - connect(updateController,&UpdateController::sigUpdateDocs,this,&ServerLMSWidget::slot_UpdateDocs,Qt::AutoConnection); - connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::slot_AddMessageToLog,Qt::QueuedConnection); + connect(this, &ServerLMSWidget::sigUpdateControllerInitialize, updateController, &UpdateController::initialize); + connect(updateController, &UpdateController::sigInitializeFinished, this, &ServerLMSWidget::slot_startInitialization_step1); + connect(this, &ServerLMSWidget::sigCalculateFullHash, updateController, &UpdateController::calculateFullHash, Qt::AutoConnection); + connect(updateController, &UpdateController::sigErrorRequired, this, &ServerLMSWidget::setError); + connect(updateController, &UpdateController::sigUpdateDocs, this, &ServerLMSWidget::slot_UpdateDocs, Qt::AutoConnection); + connect(&Logger::instance(), &Logger::sigLogToWidget, this, &ServerLMSWidget::slot_AddMessageToLog, Qt::QueuedConnection); - connect(assetsManager,&AssetsManager::signal_setVersion, this, &ServerLMSWidget::slot_setVersion); + connect(assetsManager, &AssetsManager::signal_setVersion, this, &ServerLMSWidget::slot_setVersion); - emit sigUpdateControllerInitialize(commonClientHandler,dataParser,assetsManager); + emit sigUpdateControllerInitialize(commonClientHandler, dataParser, assetsManager); } void ServerLMSWidget::tryConnectionToDB() { if(! providerDBLMS->ConnectionToDB()) { + Logger::instance().log("Database connection error!"); + emit signal_Tray_ShowMessage(tr("Database connection error!"), QSystemTrayIcon::Critical); emit signal_Menu_ShowWindow(); @@ -436,34 +449,38 @@ void ServerLMSWidget::tryConnectionToDB() on_btnStartServer_clicked(); } - updateStateServer(); + updateStateOnlyDB(); } -void ServerLMSWidget::updateStateServer() +void ServerLMSWidget::updateStateOnlyServer() { if(server) { if(server->getStateServer() == EStateServer::started) { - ui->lblOnOffText->setText(tr("started")); - ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png"))); + if(server->getStateBlockAutorization() == EStateBlockAutorization::unblocked) + { + ui->lblOnOffText->setText(tr("started")); + ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png"))); + } + else + { + ui->lblOnOffText->setText(tr("started") + ", " + tr("locked")); + ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png"))); + } } else { ui->lblOnOffText->setText(tr("stoped")); - ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); + ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/stop.png"))); } - if(server->getStateBlockAutorization() == EStateBlockAutorization::unblocked) - { - ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/open.png"))); - } - else - { - ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png"))); - } + emit signal_updateStateServer(server->getStateServer(), server->getStateBlockAutorization()); } +} +void ServerLMSWidget::updateStateOnlyDB() +{ if(providerDBLMS) { if(providerDBLMS->DBisConnected()) @@ -486,6 +503,9 @@ void ServerLMSWidget::updateStateServer() ui->btnStartServer->setEnabled(false); } } +} +void ServerLMSWidget::updateStateOnlyVersion() +{ ui->lblVersionText->setText(versionStr); } diff --git a/LibServer/serverlmswidget.h b/LibServer/serverlmswidget.h index f6a5573..aa5a93f 100644 --- a/LibServer/serverlmswidget.h +++ b/LibServer/serverlmswidget.h @@ -82,11 +82,12 @@ signals: void sigRecognize(); void sigCalculateFullHash(); void sigUpdateControllerInitialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager); - QTcpSocket* sigGetSocket(); void signal_DocsChanged(); void signal_hasError(int code); + void signal_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization); + public slots: void slot_LanguageChanged(QString language); void slot_UpdateListClients(); @@ -101,6 +102,8 @@ public slots: void slot_setVersion(QString versionStr); + void slot_trySetServerState(PacketType packetType); + public: QString getLanguage() { @@ -141,8 +144,7 @@ public: private slots: void on_btnStartServer_clicked(); void on_btnStopServer_clicked(); - void on_btnSettings_clicked(); - void slot_trySetServerState(PacketType packetType); + void on_btnSettings_clicked(); private: void setLanguageInterfase(); @@ -153,7 +155,9 @@ private: void tryConnectionToDB(); - void updateStateServer(); + void updateStateOnlyServer(); + void updateStateOnlyDB(); + void updateStateOnlyVersion(); private: Ui::ServerLMSWidget *ui; diff --git a/LibServer/serverlmswidget.ui b/LibServer/serverlmswidget.ui index 24272ee..cf72489 100644 --- a/LibServer/serverlmswidget.ui +++ b/LibServer/serverlmswidget.ui @@ -68,7 +68,7 @@ Start - + :/resources/icons/rocket.png:/resources/icons/rocket.png @@ -109,7 +109,7 @@ Stop - + :/resources/icons/stop.png:/resources/icons/stop.png @@ -148,7 +148,7 @@ Settings - + :/resources/icons/settings.png:/resources/icons/settings.png @@ -250,7 +250,7 @@ - :/resources/icons/circleGray.png + :/resources/icons/circleGray.png true @@ -268,7 +268,7 @@ - 100 + 200 0 @@ -305,7 +305,7 @@ - :/resources/icons/circleGray.png + :/resources/icons/circleGray.png @@ -374,61 +374,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Authorization - - - - - - - - 0 - 0 - - - - - 32 - 32 - - - - - 32 - 32 - - - - - - - :/resources/icons/lock.png - - - true - - - - - @@ -436,8 +381,8 @@ - - + + diff --git a/ProgramAWSinstructorMPS/ProgramAWSinstructorMPS.qrc b/ProgramAWSinstructorMPS/ProgramAWSinstructorMPS.qrc index 491b03b..0b99e1b 100644 --- a/ProgramAWSinstructorMPS/ProgramAWSinstructorMPS.qrc +++ b/ProgramAWSinstructorMPS/ProgramAWSinstructorMPS.qrc @@ -1,6 +1,6 @@ - resources/IcoGUIRRJ.ico resources/PngGUIRRJ.png + resources/IcoGUIRRJ.ico diff --git a/ProgramServerMPS/ProgramServerMPS.qrc b/ProgramServerMPS/ProgramServerMPS.qrc index a5f38ce..67e27b2 100644 --- a/ProgramServerMPS/ProgramServerMPS.qrc +++ b/ProgramServerMPS/ProgramServerMPS.qrc @@ -2,5 +2,8 @@ resources/PngServerRRJ.png resources/IcoServerRRJ.ico + resources/PngServerRRJ_lock.png + resources/PngServerRRJ_start.png + resources/PngServerRRJ_stop.png diff --git a/ProgramServerMPS/mainwindow.cpp b/ProgramServerMPS/mainwindow.cpp index 2a661f0..9f2c547 100644 --- a/ProgramServerMPS/mainwindow.cpp +++ b/ProgramServerMPS/mainwindow.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -30,6 +29,8 @@ MainWindow::MainWindow(QWidget *parent) : connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_ShowWindow, this, &MainWindow::slot_TrayMenu_ShowWindow); connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_HideWindow, this, &MainWindow::slot_TrayMenu_HideWindow); + connect(serverLMSWidget, &ServerLMSWidget::signal_updateStateServer, this, &MainWindow::slot_updateStateServer); + qtLanguageTranslator.load(QString("translations/RRJServer_") + serverLMSWidget->getLanguage(), "."); qApp->installTranslator(&qtLanguageTranslator); @@ -38,7 +39,7 @@ MainWindow::MainWindow(QWidget *parent) : * */ trayIcon = new QSystemTrayIcon(this); //trayIcon->setIcon(this->style()->standardIcon(QStyle::SP_ComputerIcon)); - trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ.png")); + trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_stop.png")); /* После чего создаем контекстное меню для иконки трея*/ trayMenu = new QMenu(this); @@ -66,7 +67,7 @@ MainWindow::MainWindow(QWidget *parent) : slot_Tray_ShowMessage(tr("Starting the server...")); - QTimer::singleShot(1000,this,&MainWindow::slot_LazyInitialization); + QTimer::singleShot(1000, this, &MainWindow::slot_LazyInitialization); } MainWindow::~MainWindow() @@ -151,11 +152,6 @@ void MainWindow::slot_TrayMenu_HideWindow() this->hide(); action_ShowWindow->setEnabled(true); action_HideWindow->setEnabled(false); - - /* - slot_Tray_ShowMessage(tr("The application is minimized to the tray.\n" - "To maximize the application window, click the application icon in the tray.")); - */ } void MainWindow::slot_TrayMenu_Exit() @@ -167,9 +163,26 @@ void MainWindow::slot_TrayMenu_Exit() void MainWindow::slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg) { QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::MessageIcon(iconMsg); - trayIcon->showMessage(tr("Server MPS"), - textMsg, - icon, 100); + trayIcon->showMessage(tr("Server MPS"), textMsg, icon, 100); +} + +void MainWindow::slot_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization) +{ + if(stateServer == EStateServer::started) + { + if(stateBlockAutorization == EStateBlockAutorization::unblocked) + { + trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_start.png")); + } + else + { + trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_lock.png")); + } + } + else + { + trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_stop.png")); + } } void MainWindow::slot_LazyInitialization() @@ -209,7 +222,7 @@ void MainWindow::errorCheck() slot_TrayMenu_ShowWindow(); //выключение с задержкой, так как eventLoop инициализируется позже - QTimer::singleShot(1000,this,&MainWindow::slot_TrayMenu_Exit); + QTimer::singleShot(1000, this, &MainWindow::slot_TrayMenu_Exit); } } diff --git a/ProgramServerMPS/mainwindow.h b/ProgramServerMPS/mainwindow.h index 775f8a3..191d9ff 100644 --- a/ProgramServerMPS/mainwindow.h +++ b/ProgramServerMPS/mainwindow.h @@ -52,11 +52,14 @@ public slots: //Слот вывода сообщения из трея void slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg = QSystemTrayIcon::Information); + //Слот изменения иконки трея о статусе Сервера + void slot_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization); //Слот отложенной инициализации void slot_LazyInitialization(); void slot_hasError(int code); + private: void exit(); void errorCheck(); diff --git a/ProgramServerMPS/resources/PngServerRRJ_lock.png b/ProgramServerMPS/resources/PngServerRRJ_lock.png new file mode 100644 index 0000000..65dae95 Binary files /dev/null and b/ProgramServerMPS/resources/PngServerRRJ_lock.png differ diff --git a/ProgramServerMPS/resources/PngServerRRJ_start.png b/ProgramServerMPS/resources/PngServerRRJ_start.png new file mode 100644 index 0000000..1aa735e Binary files /dev/null and b/ProgramServerMPS/resources/PngServerRRJ_start.png differ diff --git a/ProgramServerMPS/resources/PngServerRRJ_stop.png b/ProgramServerMPS/resources/PngServerRRJ_stop.png new file mode 100644 index 0000000..5521a3e Binary files /dev/null and b/ProgramServerMPS/resources/PngServerRRJ_stop.png differ