Merge branch 'work21' into DEV

This commit is contained in:
2025-09-25 11:50:48 +03:00
12 changed files with 205 additions and 280 deletions

View File

@@ -1,12 +1,15 @@
#include "commonview.h" #include "commonview.h"
#include <QFile> #include <QFile>
#include <QMessageBox> #include <QMessageBox>
#include <QScrollBar>
#include <QResizeEvent>
CommonView::CommonView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent): CommonView::CommonView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent):
QWidget(parent), QWidget(parent),
connectorToServer(connectorToServer), connectorToServer(connectorToServer),
treeWidget(nullptr), treeWidget(nullptr),
TypeUserDB(User::TypeUserDBInstructor),
typeView(type), typeView(type),
archiveVisible(false), archiveVisible(false),
notLoggedInVisible(true), notLoggedInVisible(true),
@@ -48,3 +51,115 @@ void CommonView::setItemColor(QTreeWidgetItem *item, QColor color)
for (int i = 0; i < item->columnCount(); i++) for (int i = 0; i < item->columnCount(); i++)
item->setBackground(i, color); item->setBackground(i, color);
} }
int CommonView::calculateWidth_0Column()
{
int widthHeader = treeWidget->width() - 10;
int width0Column = 0;
int widthSB = 0;
if(treeWidget->verticalScrollBar()->isVisible())
widthSB = treeWidget->verticalScrollBar()->size().width();
int cntColumns = treeWidget->columnCount();
int widthRightColumns = 0;
for (int i = 1; i < cntColumns; i++)
{
if(! treeWidget->isColumnHidden(i))
{//Колонка не скрыта
int w = listWidthColumn.at(i);
widthRightColumns += w;
}
}
width0Column = widthHeader - widthRightColumns - widthSB;
return width0Column;
}
void CommonView::setWidthColumnsTree()
{
listWidthColumn.clear();
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Name, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Login, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Password, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Class, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Computer, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_IP_address, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Administrator, 140);
listWidthColumn.append(140);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Archived, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Logged, 120);
listWidthColumn.append(120);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_ID, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Name, calculateWidth_0Column());
}
void CommonView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Name"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Administrator"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void CommonView::preparationTreeWidget()
{
mtxTreeWidget.lock();
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(typeView == TypeView::onlyView)
{//onlyView
archiveVisible = false;
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Administrator, true);
}
else
{//control
archiveVisible = true;
if(adminMode)
{
#ifdef PROJECT_TYPE_DEBUG
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_ID, false);
#else
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_ID, true);
#endif
}
else
{
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_ID, true);
}
}
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Class, true);
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Computer, true);
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_IP_address, true);
if(TypeUserDB == User::TypeUserDBTrainee)
treeWidget->setColumnHidden(ColumnsTreeUsers::clmn_Administrator, true);
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(ColumnsTreeUsers::clmn_Name, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
}
void CommonView::resizeEvent(QResizeEvent *event)
{
setWidthColumnsTree();
QSize size = event->size();
waitAnimationWidget->resize(size);
}

View File

@@ -27,10 +27,27 @@ public:
objGroup objGroup
}; };
protected:
enum ColumnsTreeUsers{
clmn_Name = 0,
clmn_Login,
clmn_Password,
clmn_Class,
clmn_Computer,
clmn_IP_address,
clmn_Administrator,
clmn_Archived,
clmn_Logged,
clmn_ID,
clmn_count
};
public: public:
CommonView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr); CommonView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr);
~CommonView(); ~CommonView();
void resizeEvent(QResizeEvent *event) override;
public: public:
void setAdminMode(bool adminMode) void setAdminMode(bool adminMode)
{ {
@@ -67,9 +84,20 @@ protected:
void setItemColor(QTreeWidgetItem* item, QColor color); void setItemColor(QTreeWidgetItem* item, QColor color);
void preparationTreeWidget();
private:
int calculateWidth_0Column();
void setWidthColumnsTree();
protected:
void reSetHeadTreeWidget();
protected: protected:
ConnectorToServer* connectorToServer; ConnectorToServer* connectorToServer;
QTreeWidget* treeWidget; QTreeWidget* treeWidget;
QList<int> listWidthColumn;
QString TypeUserDB;
QMutex mtxTreeWidget; QMutex mtxTreeWidget;
TypeView typeView; TypeView typeView;
bool archiveVisible; bool archiveVisible;

View File

@@ -18,7 +18,7 @@ DialogRedactorInstructors::DialogRedactorInstructors(ConnectorToServer* connecto
layout->addWidget(editorInstructors); layout->addWidget(editorInstructors);
this->setWindowTitle(tr("Editor of instructors")); this->setWindowTitle(tr("Editor of instructors"));
this->setMinimumSize(1400, 700); this->setMinimumSize(1400, 700);
this->setWindowState(Qt::WindowMaximized); //this->setWindowState(Qt::WindowMaximized);
this->setModal(true); this->setModal(true);
} }

View File

@@ -112,7 +112,7 @@ void EditorInstructors::on_btnDeleteInstructor_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
if(connectorToServer->isAdminInstructor(id)) if(connectorToServer->isAdminInstructor(id))
{//Это Админ! {//Это Админ!
@@ -145,7 +145,7 @@ void EditorInstructors::on_btnToOrFromArchive_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
Instructor instructor = connectorToServer->getInstructor(id); Instructor instructor = connectorToServer->getInstructor(id);
if(instructor.getID() == 0) if(instructor.getID() == 0)
@@ -194,7 +194,7 @@ void EditorInstructors::on_btnEdit_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt(); int id = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
if(connectorToServer->isLoggedInInstructor(id)) if(connectorToServer->isLoggedInInstructor(id))
{//Инструктор залогирован! {//Инструктор залогирован!
@@ -252,7 +252,7 @@ void EditorInstructors::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран инструктор {//Выбран инструктор
int id = current->text(ColumnsTreeInsructors::clmn_ID).toInt(); int id = current->text(ColumnsTreeUsers::clmn_ID).toInt();
lastCurrentID = id; lastCurrentID = id;

View File

@@ -1,51 +1,14 @@
#include <QHeaderView> #include <QHeaderView>
#include <QTranslator> #include <QTranslator>
#include <QResizeEvent> #include <QResizeEvent>
#include <QScrollBar>
#include "instructorsview.h" #include "instructorsview.h"
InstructorsView::InstructorsView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent): InstructorsView::InstructorsView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent):
CommonView(connectorToServer, type, parent) CommonView(connectorToServer, type, parent)
{ {
typeObject = TypeObject::objInstructor; typeObject = TypeObject::objInstructor;
} TypeUserDB = User::TypeUserDBInstructor;
void InstructorsView::resizeEvent(QResizeEvent *event)
{
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Login, 100);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Password, 100);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Administrator, 140);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Archived, 100);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Logged, 120);
int widthInstructor;
if(typeView == TypeView::onlyView)
{//onlyView
widthInstructor = width - (220 + 10 + 20);
}
else
{//control
if(adminMode)
{
#ifdef PROJECT_TYPE_DEBUG
widthInstructor = width - (610 + 10 + 20);
#else
widthInstructor = width - (560 + 10 + 20);
#endif
}
else
widthInstructor = width - (480 + 10 + 20);
}
if(widthInstructor < 250)
widthInstructor = 250;
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Instructor, widthInstructor);
QSize size = event->size();
waitAnimationWidget->resize(size);
} }
void InstructorsView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee) void InstructorsView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
@@ -59,47 +22,6 @@ void InstructorsView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
} }
} }
void InstructorsView::preparationTreeWidget()
{
mtxTreeWidget.lock();
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(typeView == TypeView::onlyView)
{//onlyView
archiveVisible = false;
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Administrator, true);
}
else
{//control
archiveVisible = true;
if(adminMode)
{
#ifdef PROJECT_TYPE_DEBUG
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, false);
#else
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
#endif
}
else
{
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
}
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(ColumnsTreeInsructors::clmn_Instructor, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
}
void InstructorsView::loadInstructorsFromDB() void InstructorsView::loadInstructorsFromDB()
{ {
mtxTreeWidget.lock(); mtxTreeWidget.lock();
@@ -116,46 +38,46 @@ void InstructorsView::loadInstructorsFromDB()
{ {
QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget); QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget);
ItemInstructor->setText(ColumnsTreeInsructors::clmn_ID, QString::number(instructor.getID())); ItemInstructor->setText(ColumnsTreeUsers::clmn_ID, QString::number(instructor.getID()));
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Instructor, instructor.getName()); ItemInstructor->setText(ColumnsTreeUsers::clmn_Name, instructor.getName());
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Login, instructor.getLogin()); ItemInstructor->setText(ColumnsTreeUsers::clmn_Login, instructor.getLogin());
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, instructor.getPassword()); ItemInstructor->setText(ColumnsTreeUsers::clmn_Password, instructor.getPassword());
//Сокрытие пароля //Сокрытие пароля
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, QStringLiteral("******")); ItemInstructor->setText(ColumnsTreeUsers::clmn_Password, QStringLiteral("******"));
if(instructor.getArchived()) if(instructor.getArchived())
{//Архивный {//Архивный
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("yes")); ItemInstructor->setText(ColumnsTreeUsers::clmn_Archived, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/archive.png"))); ItemInstructor->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/archive.png")));
setItemColorArchive(ItemInstructor); setItemColorArchive(ItemInstructor);
} }
else else
{//Не Архивный {//Не Архивный
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("no")); ItemInstructor->setText(ColumnsTreeUsers::clmn_Archived, tr("no"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/instructor.png"))); ItemInstructor->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/instructor.png")));
setItemColorNoArchive(ItemInstructor); setItemColorNoArchive(ItemInstructor);
} }
if(instructor.getIsAdmin()) if(instructor.getIsAdmin())
{//Админ {//Админ
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("yes")); ItemInstructor->setText(ColumnsTreeUsers::clmn_Administrator, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/admin.png"))); ItemInstructor->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/admin.png")));
} }
else else
{//Не Админ {//Не Админ
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("no")); ItemInstructor->setText(ColumnsTreeUsers::clmn_Administrator, tr("no"));
} }
if(instructor.getLoggedIn()) if(instructor.getLoggedIn())
{//Залогинен {//Залогинен
//ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("yes")); //ItemInstructor->setText(ColumnsTreeUsers::clmn_Logged, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); ItemInstructor->setIcon(ColumnsTreeUsers::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
} }
else else
{//Не Залогинен {//Не Залогинен
//ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("no")); //ItemInstructor->setText(ColumnsTreeUsers::clmn_Logged, tr("no"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); ItemInstructor->setIcon(ColumnsTreeUsers::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
} }
//Скрываем архивных (при необходимости) //Скрываем архивных (при необходимости)
@@ -181,26 +103,20 @@ void InstructorsView::loadInstructorsFromDB()
setCurrentInstructor(lastCurrentID); setCurrentInstructor(lastCurrentID);
treeWidget->sortItems(ColumnsTreeInsructors::clmn_Instructor, Qt::SortOrder::AscendingOrder); treeWidget->sortItems(ColumnsTreeUsers::clmn_Name, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock(); mtxTreeWidget.unlock();
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
} }
void InstructorsView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void InstructorsView::setCurrentInstructor(int id) void InstructorsView::setCurrentInstructor(int id)
{ {
for(int i = 0; i < treeWidget->topLevelItemCount(); i++) for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{ {
QTreeWidgetItem * item = treeWidget->topLevelItem(i); QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr) if(item != nullptr)
if(item->text(ColumnsTreeInsructors::clmn_ID).toInt() == id) if(item->text(ColumnsTreeUsers::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
return; return;

View File

@@ -13,32 +13,13 @@ class InstructorsView: public CommonView
public: public:
InstructorsView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr); InstructorsView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr);
protected:
enum ColumnsTreeInsructors{
clmn_Instructor = 0,
clmn_Login,
clmn_Password,
clmn_Administrator,
clmn_Archived,
clmn_Logged,
clmn_ID,
clmn_count
};
public:
void resizeEvent(QResizeEvent *event) override;
public Q_SLOTS: public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса //Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee); void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee);
protected: protected:
virtual void updateButtons(){}; virtual void updateButtons(){};
void preparationTreeWidget();
void loadInstructorsFromDB(); void loadInstructorsFromDB();
void reSetHeadTreeWidget();
void setCurrentInstructor(int id); void setCurrentInstructor(int id);
}; };

View File

@@ -82,7 +82,7 @@ void ViewerInstructors::on_treeWidgetItemClicked(QTreeWidgetItem *item, int colu
//if(current->childCount() == 0) //if(current->childCount() == 0)
{//Выбран обучаемый {//Выбран обучаемый
QString login = item->text(ColumnsTreeInsructors::clmn_Login); QString login = item->text(ColumnsTreeUsers::clmn_Login);
//if(login != "") //if(login != "")
{ {
int newCurrentID = connectorToServer->getIdInstructorByLogin(login); int newCurrentID = connectorToServer->getIdInstructorByLogin(login);

View File

@@ -18,7 +18,7 @@ DialogRedactorTrainees::DialogRedactorTrainees(ConnectorToServer* connectorToSer
layout->addWidget(editorTraineesGroups); layout->addWidget(editorTraineesGroups);
this->setWindowTitle(tr("Editor of trainees")); this->setWindowTitle(tr("Editor of trainees"));
this->setMinimumSize(1400, 700); this->setMinimumSize(1400, 700);
this->setWindowState(Qt::WindowMaximized); //this->setWindowState(Qt::WindowMaximized);
this->setModal(true); this->setModal(true);
} }

View File

@@ -115,7 +115,7 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent(); QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
if(connectorToServer->getListTraineesInGroup(id_group).count() > 0) if(connectorToServer->getListTraineesInGroup(id_group).count() > 0)
{ {
@@ -143,7 +143,7 @@ void EditorTrainees::on_btnNewTrainee_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent(); QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа. Можно добавить Обучаемого {//Выбрана группа. Можно добавить Обучаемого
int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
Trainee trainee; Trainee trainee;
Trainee trainee_edit; Trainee trainee_edit;
@@ -219,8 +219,8 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
if(treeItemParent != nullptr) if(treeItemParent != nullptr)
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
int id_group = treeItemParent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = treeItemParent->text(ColumnsTreeUsers::clmn_ID).toInt();
if(connectorToServer->isLoggedInTrainee(id_trainee)) if(connectorToServer->isLoggedInTrainee(id_trainee))
{//Обучаемый залогирован! {//Обучаемый залогирован!
@@ -247,7 +247,7 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
if(treeItemParent != nullptr) if(treeItemParent != nullptr)
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
Trainee trainee = connectorToServer->getTrainee(id_trainee); Trainee trainee = connectorToServer->getTrainee(id_trainee);
if(trainee.getID() == 0) if(trainee.getID() == 0)
@@ -288,7 +288,7 @@ void EditorTrainees::on_btnEdit_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
Group group = connectorToServer->getGroup(id_group); Group group = connectorToServer->getGroup(id_group);
if(group.getID() == 0) if(group.getID() == 0)
@@ -305,7 +305,7 @@ void EditorTrainees::on_btnEdit_clicked()
else else
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeUsers::clmn_ID).toInt();
if(connectorToServer->isLoggedInTrainee(id_trainee)) if(connectorToServer->isLoggedInTrainee(id_trainee))
{//Обучаемый залогирован! {//Обучаемый залогирован!
@@ -388,7 +388,7 @@ void EditorTrainees::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q
QTreeWidgetItem *treeItemParent = current->parent(); QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = current->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = current->text(ColumnsTreeUsers::clmn_ID).toInt();
lastCurrentID = id_group; lastCurrentID = id_group;
typeObject = TypeObject::objGroup; typeObject = TypeObject::objGroup;
@@ -423,7 +423,7 @@ void EditorTrainees::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, Q
} }
else else
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = current->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_trainee = current->text(ColumnsTreeUsers::clmn_ID).toInt();
lastCurrentID = id_trainee; lastCurrentID = id_trainee;
typeObject = TypeObject::objTrainee; typeObject = TypeObject::objTrainee;

View File

@@ -6,47 +6,7 @@ TraineesView::TraineesView(ConnectorToServer* connectorToServer, TypeView type,
CommonView(connectorToServer, type, parent) CommonView(connectorToServer, type, parent)
{ {
typeObject = TypeObject::objTrainee; typeObject = TypeObject::objTrainee;
} TypeUserDB = User::TypeUserDBTrainee;
void TraineesView::resizeEvent(QResizeEvent *event)
{
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Login, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Password, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Class, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Computer, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_IP_address, 130);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Archived, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Logged, 120);
int widthTrainee;
if(typeView == TypeView::onlyView)
{//onlyView
widthTrainee = width - (220 + 10 + 20);
}
else
{//control
if(adminMode)
{
#ifdef PROJECT_TYPE_DEBUG
widthTrainee = width - (470 + 10 + 20);
#else
widthTrainee = width - (420 + 10 + 20);
#endif
}
else
widthTrainee = width - (440 + 10 + 20);
}
if(widthTrainee < 250)
widthTrainee = 250;
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Trainee, widthTrainee);
QSize size = event->size();
waitAnimationWidget->resize(size);
} }
void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee) void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
@@ -60,54 +20,6 @@ void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
} }
} }
void TraineesView::preparationTreeWidget()
{
mtxTreeWidget.lock();
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(typeView == TypeView::onlyView)
{//onlyView
archiveVisible = false;
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Class, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Computer, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_IP_address, true);
}
else
{//control
archiveVisible = true;
if(adminMode)
{
#ifdef PROJECT_TYPE_DEBUG
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, false);
#else
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
#endif
}
else
{
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
}
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Class, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Computer, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_IP_address, true);
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
}
void TraineesView::loadTraineesFromDB() void TraineesView::loadTraineesFromDB()
{ {
mtxTreeWidget.lock(); mtxTreeWidget.lock();
@@ -127,9 +39,9 @@ void TraineesView::loadTraineesFromDB()
//Группа //Группа
int cntChildsNotArchived = 0; int cntChildsNotArchived = 0;
QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget); QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget);
ItemGroup->setText(ColumnsTreeTrainees::clmn_ID, QString::number(group.getID())); ItemGroup->setText(ColumnsTreeUsers::clmn_ID, QString::number(group.getID()));
ItemGroup->setText(ColumnsTreeTrainees::clmn_Trainee, group.getName()); ItemGroup->setText(ColumnsTreeUsers::clmn_Name, group.getName());
ItemGroup->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/group.png"))); ItemGroup->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/group.png")));
setItemColor(ItemGroup, QColor(220, 220, 220)); setItemColor(ItemGroup, QColor(220, 220, 220));
//ItemGroup->set Property("greenButton", QVariant(true)); //ItemGroup->set Property("greenButton", QVariant(true));
@@ -143,40 +55,40 @@ void TraineesView::loadTraineesFromDB()
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem(); QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(ColumnsTreeTrainees::clmn_ID, QString::number(trainee.getID())); ItemTrainee->setText(ColumnsTreeUsers::clmn_ID, QString::number(trainee.getID()));
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Trainee, trainee.getName()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Name, trainee.getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Login, trainee.getLogin()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Login, trainee.getLogin());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, trainee.getPassword()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Password, trainee.getPassword());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Class, trainee.getComputer().getClassroom().getName()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Class, trainee.getComputer().getClassroom().getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Computer, trainee.getComputer().getName()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Computer, trainee.getComputer().getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_IP_address, trainee.getComputer().getIpAddress()); ItemTrainee->setText(ColumnsTreeUsers::clmn_IP_address, trainee.getComputer().getIpAddress());
//Сокрытие пароля //Сокрытие пароля
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, QStringLiteral("******")); ItemTrainee->setText(ColumnsTreeUsers::clmn_Password, QStringLiteral("******"));
if(trainee.getArchived()) if(trainee.getArchived())
{//Архивный {//Архивный
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("yes")); ItemTrainee->setText(ColumnsTreeUsers::clmn_Archived, tr("yes"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/archive.png"))); ItemTrainee->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/archive.png")));
setItemColorArchive(ItemTrainee); setItemColorArchive(ItemTrainee);
} }
else else
{//Не Архивный {//Не Архивный
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("no")); ItemTrainee->setText(ColumnsTreeUsers::clmn_Archived, tr("no"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/trainee.png"))); ItemTrainee->setIcon(ColumnsTreeUsers::clmn_Name, QIcon(QStringLiteral(":/resources/icons/trainee.png")));
setItemColorNoArchive(ItemTrainee); setItemColorNoArchive(ItemTrainee);
cntChildsNotArchived++; cntChildsNotArchived++;
} }
if(trainee.getLoggedIn()) if(trainee.getLoggedIn())
{//Залогинен {//Залогинен
//ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("yes")); //ItemTrainee->setText(ColumnsTreeUsers::clmn_Logged, tr("yes"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); ItemTrainee->setIcon(ColumnsTreeUsers::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
} }
else else
{//Не Залогинен {//Не Залогинен
//ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("no")); //ItemTrainee->setText(ColumnsTreeUsers::clmn_Logged, tr("no"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); ItemTrainee->setIcon(ColumnsTreeUsers::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
} }
ItemGroup->addChild(ItemTrainee); ItemGroup->addChild(ItemTrainee);
@@ -215,19 +127,13 @@ void TraineesView::loadTraineesFromDB()
else else
setCurrentTrainee(lastCurrentID); setCurrentTrainee(lastCurrentID);
treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder); treeWidget->sortItems(ColumnsTreeUsers::clmn_Name, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock(); mtxTreeWidget.unlock();
waitAnimationWidget->hideWithStop(); waitAnimationWidget->hideWithStop();
} }
void TraineesView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void TraineesView::setCurrentGroup(int id) void TraineesView::setCurrentGroup(int id)
{ {
typeObject = TypeObject::objGroup; typeObject = TypeObject::objGroup;
@@ -236,7 +142,7 @@ void TraineesView::setCurrentGroup(int id)
{ {
QTreeWidgetItem * item = treeWidget->topLevelItem(i); QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr) if(item != nullptr)
if(item->text(ColumnsTreeTrainees::clmn_ID).toInt() == id) if(item->text(ColumnsTreeUsers::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
return; return;
@@ -263,7 +169,7 @@ void TraineesView::setCurrentTrainee(int id)
{ {
QTreeWidgetItem * itemChild = item->child(j); QTreeWidgetItem * itemChild = item->child(j);
if(itemChild != nullptr) if(itemChild != nullptr)
if(itemChild->text(ColumnsTreeTrainees::clmn_ID).toInt() == id) if(itemChild->text(ColumnsTreeUsers::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(itemChild); treeWidget->setCurrentItem(itemChild);
return; return;

View File

@@ -13,34 +13,13 @@ class TraineesView: public CommonView
public: public:
TraineesView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr); TraineesView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent = nullptr);
protected:
enum ColumnsTreeTrainees{
clmn_Trainee = 0,
clmn_Login,
clmn_Password,
clmn_Class,
clmn_Computer,
clmn_IP_address,
clmn_Archived,
clmn_Logged,
clmn_ID,
clmn_count
};
public:
void resizeEvent(QResizeEvent *event) override;
public Q_SLOTS: public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса //Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee); void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee);
protected: protected:
virtual void updateButtons(){}; virtual void updateButtons(){};
void preparationTreeWidget();
void loadTraineesFromDB(); void loadTraineesFromDB();
void reSetHeadTreeWidget();
void setCurrentGroup(int id); void setCurrentGroup(int id);
void setCurrentTrainee(int id); void setCurrentTrainee(int id);
}; };

View File

@@ -116,7 +116,7 @@ void ViewerTrainees::on_itemDoubleClicked(QTreeWidgetItem *item, int column)
if(item->childCount() == 0) if(item->childCount() == 0)
{//Выбран обучаемый {//Выбран обучаемый
QString login = item->text(ColumnsTreeTrainees::clmn_Login); QString login = item->text(ColumnsTreeUsers::clmn_Login);
if(login != "") if(login != "")
{ {
int id_trainee = connectorToServer->getIdTraineeByLogin(login); int id_trainee = connectorToServer->getIdTraineeByLogin(login);
@@ -145,7 +145,7 @@ void ViewerTrainees::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
{//Выбран обучаемый {//Выбран обучаемый
typeObject = TypeObject::objTrainee; typeObject = TypeObject::objTrainee;
QString login = item->text(ColumnsTreeTrainees::clmn_Login); QString login = item->text(ColumnsTreeUsers::clmn_Login);
//if(login != "") //if(login != "")
{ {
int newCurrentID = connectorToServer->getIdTraineeByLogin(login); int newCurrentID = connectorToServer->getIdTraineeByLogin(login);
@@ -162,7 +162,7 @@ void ViewerTrainees::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
{//Выбрана группа {//Выбрана группа
typeObject = TypeObject::objGroup; typeObject = TypeObject::objGroup;
int id_group = item->text(ColumnsTreeTrainees::clmn_ID).toInt(); int id_group = item->text(ColumnsTreeUsers::clmn_ID).toInt();
lastCurrentID = id_group; lastCurrentID = id_group;
typeObject = TypeObject::objGroup; typeObject = TypeObject::objGroup;