diff --git a/InstructorsAndTrainees/resources.qrc b/InstructorsAndTrainees/resources.qrc index 8dcfa09..d2a1133 100644 --- a/InstructorsAndTrainees/resources.qrc +++ b/InstructorsAndTrainees/resources.qrc @@ -43,5 +43,6 @@ resources/icons/762.gif resources/icons/assignTask.png resources/icons/delete.png + resources/icons/filter.png diff --git a/InstructorsAndTrainees/resources/icons/filter.png b/InstructorsAndTrainees/resources/icons/filter.png new file mode 100644 index 0000000..7f4e679 Binary files /dev/null and b/InstructorsAndTrainees/resources/icons/filter.png differ diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index 3525353..0c93034 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -19,7 +19,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty threadAnimation(nullptr), taskTreePreparation(nullptr), waitAnimationWidget(nullptr), - accessAssignTask(false) + accessAssignTask(false), + flOnlyActive(false) { ui->setupUi(this); @@ -55,6 +56,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty ui->btnDelete->setEnabled(false); if(type == TypeList::listCommon) ui->btnDelete->setVisible(false); + else + ui->btnOnlyActive->setVisible(false); } AMMtasksWidget::~AMMtasksWidget() @@ -186,16 +189,17 @@ void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id) } } -void AMMtasksWidget::loadTasksAMM() +void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB) { //Обновление дерева treeWidget->clear(); waitAnimationWidget->showWithPlay(); - QByteArray array = connectorToServer->getListTaskAmmArray(); + if(flRequestFromDB) + /*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray(); - signal_prepareListItems(array, &listAllModules); + emit signal_prepareListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive); } void AMMtasksWidget::slot_listItemsReady(QList listItems) @@ -306,3 +310,19 @@ void AMMtasksWidget::on_btnDelete_clicked() } } } + +void AMMtasksWidget::on_btnOnlyActive_clicked() +{ + if(ui->btnOnlyActive->isChecked()) + { + flOnlyActive = true; + //slot_listItemsReady(listItemsALL, listItemsACTIVE); + } + else + { + flOnlyActive = false; + //slot_listItemsReady(listItemsALL, listItemsACTIVE); + } + //connectorToServer->sendQueryTasksXML("amm"); + loadTasksAMM(false); +} diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index ede4bf9..10f3232 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -50,6 +50,8 @@ private Q_SLOTS: void on_btnDelete_clicked(); + void on_btnOnlyActive_clicked(); + public Q_SLOTS: void slot_AssignTaskAMMtoTrainee(); @@ -68,10 +70,10 @@ private: Module* searchModuleByID(int id); void preparationTreeWidget(); void reSetHeadTreeWidget(); - void loadTasksAMM(); + void loadTasksAMM(bool flRequestFromDB = true); Q_SIGNALS: - void signal_prepareListItems(QByteArray array, QList* listAllModules); + void signal_prepareListItems(QByteArray array, QList* listAllModules, bool flOnlyActive); void signal_prepareListItemsForTrainee(QList listTask, QList* listAllModules); public Q_SLOTS: void slot_listItemsReady(QList listItems); @@ -92,6 +94,10 @@ private: TaskTreePreparation* taskTreePreparation; WaitAnimationWidget *waitAnimationWidget; bool accessAssignTask; + + bool flOnlyActive; + + QByteArray arrayAMM; }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.ui b/InstructorsAndTrainees/tasks/ammtaskswidget.ui index 7ae0b02..9d5f36d 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.ui +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.ui @@ -40,8 +40,43 @@ + + + + + 50 + 50 + + + + Active + + + + :/resources/icons/filter.png:/resources/icons/filter.png + + + + 32 + 32 + + + + true + + + Qt::ToolButtonTextUnderIcon + + + + + + 50 + 50 + + Delete diff --git a/InstructorsAndTrainees/tasks/module.cpp b/InstructorsAndTrainees/tasks/module.cpp index c7c5c32..6a7e716 100644 --- a/InstructorsAndTrainees/tasks/module.cpp +++ b/InstructorsAndTrainees/tasks/module.cpp @@ -5,7 +5,8 @@ int Module::lastID = 0; Module::Module(): type (ModuleType::TYPE_PM), parentModule(nullptr), - ID(0) + ID(0), + isActive(false) { ID = ++lastID; } @@ -38,6 +39,19 @@ Module *Module::getModuleByID(int id) return nullptr; } +void Module::setIsActiveTrue() +{ + this->isActive = true; + + if(parentModule) + parentModule->setIsActiveTrue(); +} + +bool Module::getIsActive() +{ + return this->isActive; +} + PM::PM(): diff --git a/InstructorsAndTrainees/tasks/module.h b/InstructorsAndTrainees/tasks/module.h index 3c5ca8e..009a328 100644 --- a/InstructorsAndTrainees/tasks/module.h +++ b/InstructorsAndTrainees/tasks/module.h @@ -20,11 +20,15 @@ public: void setParentModule(Module* parentModule){ this->parentModule = parentModule; }; Module* getModuleByID(int id); + void setIsActiveTrue(); + bool getIsActive(); + protected: ModuleType type; Module* parentModule; int ID; static int lastID; + bool isActive; }; @@ -47,7 +51,7 @@ public: void setLangStructEng(QString title); void addChildModule(Module* childModule); QList getListChildModules(); - QString pmCode(); + QString pmCode(); private: QString modelIdentCode; @@ -106,7 +110,7 @@ private: QString disassyCodeVariant; QString infoCode; QString infoCodeVariant; - QString itemLocationCode; + QString itemLocationCode; dmLangStruct langRus; dmLangStruct langEng; diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp index cf93f37..c7980c9 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -21,13 +21,16 @@ void TaskTreePreparation::stopParser() flagStop = true; } -QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem) +QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem) { QTreeWidgetItem* itemModule = nullptr; if(flagStop) return itemModule; + if(flOnlyActive && !module->getIsActive()) + return nullptr; + QString text = ""; QString ID = QString::number(module->getID()); QString code = ""; @@ -45,7 +48,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTre for(Module* module : PMmodul->getListChildModules()) { - addModuleToTreeWidget(module, itemModule); + addModuleToTreeWidget(module, flOnlyActive, itemModule); } } else @@ -158,6 +161,10 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa PM* PMmodulParent = static_cast(moduleParent); PMmodulParent->addChildModule(module); } + + //Активность + if(nodeMap.namedItem("active").nodeValue() == "true") + module->setIsActiveTrue(); } else if(name == "rus" || name == "eng") { @@ -201,7 +208,7 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa }while (! (childElement = childElement.nextSiblingElement()).isNull()); } -void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList* listAllModules) +void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList* listAllModules, bool flOnlyActive) { qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId(); @@ -213,7 +220,7 @@ void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList for(Module* module : *this->listAllModules) { - QTreeWidgetItem* item = addModuleToTreeWidget(module); + QTreeWidgetItem* item = addModuleToTreeWidget(module, flOnlyActive); listItems.append(item); } @@ -230,7 +237,6 @@ void TaskTreePreparation::slot_prepareListItemsForTrainee(QList list listItems.clear(); - for(TaskAmmFim task : listTask) { QTreeWidgetItem* item = nullptr; diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h index 047da7a..8cb0847 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.h +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h @@ -25,13 +25,13 @@ public: void stopParser(); private: - QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr); + QTreeWidgetItem* addModuleToTreeWidget(Module* module, bool flOnlyActive = false, QTreeWidgetItem* parentItem = nullptr); void loadAMMtasksFromXML(QByteArray array); void domElementParser(QDomElement element, Module* moduleParent); void deleteAllModuls(); public Q_SLOTS: - void slot_prepareListItems(QByteArray array, QList* listAllModules); + void slot_prepareListItems(QByteArray array, QList* listAllModules, bool flOnlyActive); void slot_prepareListItemsForTrainee(QList listTask, QList* listAllModules); Q_SIGNALS: