#include #include "traineesview.h" TraineesView::TraineesView(InterfaceDataBaseLMS* dbLMS, TypeView type, bool adminMode, QWidget *parent): CommonView(type, adminMode, parent), dbLMS(dbLMS) { } void TraineesView::preparationTreeWidget(QTreeWidget *tree) { treeWidget = tree; if(treeWidget == nullptr) return; treeWidget->setColumnCount(10); reSetHeadTreeWidget(); treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;")); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_ID, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Trainee, 250); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Login, 100); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Password, 100); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Class, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Computer, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_IP_address, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Archived, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Logged, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Tasks, 200); if(typeView == TypeView::onlyView) {//onlyView treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true); //treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Login, true); treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Password, true); treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true); archiveVisible = false; notLoggedInVisible = true; } else {//control if(adminMode) { archiveVisible = true; notLoggedInVisible = true; } else { treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true); treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true); } } treeWidget->setSortingEnabled(true); treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder); } void TraineesView::loadTraineesFromDB() { QList listGroups; QList listTrainees; //dbTrainees->transactionBegin(); listGroups = dbLMS->getListGroups(); listTrainees = dbLMS->getListTrainees(); //dbTrainees->transactionEnd(); if(treeWidget == nullptr) return; //Обновление дерева treeWidget->clear(); for(Group group : listGroups) { //Группа QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget); ItemGroup->setText(ColumnsTreeTrainees::clmn_ID, QString::number(group.getID())); ItemGroup->setText(ColumnsTreeTrainees::clmn_Trainee, group.getName()); ItemGroup->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/group.png"))); setItemColor(ItemGroup, QColor(170, 190, 170)); //Обучаемые for(Trainee trainee : listTrainees) { if(trainee.getGroup().getID() != group.getID()) continue; QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem(); ItemTrainee->setText(ColumnsTreeTrainees::clmn_ID, QString::number(trainee.getID())); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Trainee, trainee.getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Login, trainee.getLogin()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, trainee.getPassword()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Class, trainee.getComputer().getClassroom().getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Computer, trainee.getComputer().getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_IP_address, trainee.getComputer().getIpAddress()); //Сокрытие пароля ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, QStringLiteral("******")); if(trainee.getArchived()) {//Архивный ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("yes")); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/traineeArchive.png"))); setItemColorArchive(ItemTrainee); } else {//Не Архивный ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("no")); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/trainee.png"))); setItemColorNoArchive(ItemTrainee); } if(trainee.getLoggedIn()) {//Залогинен ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("yes")); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGreen.png"))); } else {//Не Залогинен ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("no")); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGray.png"))); } QString tasksStr; for(Task task: trainee.getTasks()) { tasksStr += task.getName() + QStringLiteral("; "); } ItemTrainee->setText(ColumnsTreeTrainees::clmn_Tasks, tasksStr); ItemGroup->addChild(ItemTrainee); //Скрываем архивных (при необходимости) if(trainee.getArchived()) if(! archiveVisible) ItemTrainee->setHidden(true); //Скрываем незалогиненых (при необходимости) if(! trainee.getLoggedIn()) if(! notLoggedInVisible) ItemTrainee->setHidden(true); } } treeWidget->expandAll(); if(typeView == TypeView::control) { QTreeWidgetItem * item = treeWidget->topLevelItem(0); if(item != nullptr) treeWidget->setCurrentItem(item); } } void TraineesView::reSetHeadTreeWidget() { QStringList listHeaders = {tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("Tasks"), tr("ID")}; treeWidget->setHeaderLabels(listHeaders); }