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: