diff --git a/FILES/CSS/styleSheetMain.css b/FILES/CSS/styleSheetMain.css
index 2434ab2..675a54f 100644
--- a/FILES/CSS/styleSheetMain.css
+++ b/FILES/CSS/styleSheetMain.css
@@ -160,16 +160,17 @@ QTreeWidget::item {
}
/*Бранчи*/
QTreeWidget::branch:has-siblings:!adjoins-item {
- border-image: url(:/resources/icons/vline.png) 0;
-
+ border-image: url(:/resources/icons/vline.png) 0;
}
QTreeWidget::branch:has-siblings:adjoins-item {
- border-image: url(:/resources/icons/branch-more.png) 0;
-
+ border-image: url(:/resources/icons/branch-more.png) 0;
}
QTreeWidget::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(:/resources/icons/branch-end.png) 0;
}
+QTreeWidget#treeWidget_AMMforTrainee::branch:!has-children:!has-siblings:adjoins-item {
+ border-image: none;
+}
QTreeWidget::branch:closed:has-children:!has-siblings,
QTreeWidget::branch:closed:has-children:has-siblings {
border-image: none;
@@ -294,7 +295,7 @@ QTabBar QToolButton { /* the scroll buttons are tool buttons */
QListWidget::item {
/*padding: -5px;*/
}
-QListWidget {
+QListWidget#oneDialogMessenger {
/*background: #ddeeff;*/
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt
index cf5c377..b1f98d9 100644
--- a/InstructorsAndTrainees/CMakeLists.txt
+++ b/InstructorsAndTrainees/CMakeLists.txt
@@ -128,6 +128,10 @@ add_library(InstructorsAndTrainees SHARED
tasks/listsubproc.h
tasks/listsubproc.ui
+ tasks/subprocitemwidget.cpp
+ tasks/subprocitemwidget.h
+ tasks/subprocitemwidget.ui
+
widgets/newversionwidget.cpp
widgets/newversionwidget.h
widgets/newversionwidget.ui
diff --git a/InstructorsAndTrainees/messanger/messangerwidget.ui b/InstructorsAndTrainees/messanger/messangerwidget.ui
index 04b4c7d..4c8a2a0 100644
--- a/InstructorsAndTrainees/messanger/messangerwidget.ui
+++ b/InstructorsAndTrainees/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/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp
index b62f52b..2c1db93 100644
--- a/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp
+++ b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp
@@ -8,6 +8,8 @@
OneDialogMessenger::OneDialogMessenger(User userLocalGUI, User userRemote, QWidget *parent):
QListWidget(parent)
{
+ this->setObjectName("oneDialogMessenger");
+
this->userLocalGUI = userLocalGUI;
this->userRemote = userRemote;
diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp
index 9a842b1..f4c4d9d 100644
--- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp
+++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp
@@ -25,11 +25,13 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
flOnlyActive(false),
lastCurrentID(0)
{
- ui->setupUi(this);
+ ui->setupUi(this);
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
treeWidget = new QTreeWidget();
+ if(type == TypeListTreeAMMFIM::listForTrainee)
+ treeWidget->setObjectName("treeWidget_AMMforTrainee");
ui->horizontalLayout_Tree->addWidget(treeWidget);
//connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidgetItemClicked);
@@ -39,8 +41,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
preparationTreeWidget();
threadPreparation = new QThread();
- taskTreePreparation = new TaskAMMFIMTreePreparation(type);
- taskTreePreparation->moveToThread(threadPreparation);
+ taskTreePreparation = new TaskAMMFIMTreePreparation(type, treeWidget);
+ //taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItems);
@@ -281,11 +283,14 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFirst)
void AMMtasksWidget::slot_AMMlistItemsReady(QList listItems)
{
- //Обновление дерева
- treeWidget->clear();
+ if(type != TypeListTreeAMMFIM::listForTrainee)
+ {
+ //Обновление дерева
+ treeWidget->clear();
- for(QTreeWidgetItem * item : listItems)
- treeWidget->addTopLevelItem(item);
+ for(QTreeWidgetItem * item : listItems)
+ treeWidget->addTopLevelItem(item);
+ }
/*
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp
index 2afa32d..0b8e37a 100644
--- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp
+++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp
@@ -38,7 +38,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
preparationTreeWidget();
threadPreparation = new QThread();
- taskTreePreparation = new TaskAMMFIMTreePreparation(type);
+ taskTreePreparation = new TaskAMMFIMTreePreparation(type, treeWidget);
taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority);
diff --git a/InstructorsAndTrainees/tasks/listsubproc.cpp b/InstructorsAndTrainees/tasks/listsubproc.cpp
index f1e047a..e26be0d 100644
--- a/InstructorsAndTrainees/tasks/listsubproc.cpp
+++ b/InstructorsAndTrainees/tasks/listsubproc.cpp
@@ -152,8 +152,8 @@ void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
{
QList list = connectorToServer->getListSubProcForDMCode(dmCode);
- if(!list.count())
- on_btnAssign_clicked();
+ /*if(!list.count())
+ on_btnAssign_clicked();*/
for(SubProc subProc : list)
{
@@ -177,12 +177,12 @@ void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
item->setCheckState(ColumnsTreeSubProc::clmnSP_title, Qt::Unchecked);
- item->setFlags(item->flags() ^ Qt::ItemIsEnabled);
+ //item->setFlags(item->flags() ^ Qt::ItemIsEnabled);
#ifdef PROJECT_TYPE_DEBUG
treeWidget->addTopLevelItem(item);
#else
-
+ item->setFlags(item->flags() ^ Qt::ItemIsEnabled);
#endif
}
}
diff --git a/InstructorsAndTrainees/tasks/subprocitemwidget.cpp b/InstructorsAndTrainees/tasks/subprocitemwidget.cpp
new file mode 100644
index 0000000..9e191b1
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/subprocitemwidget.cpp
@@ -0,0 +1,40 @@
+#include "subprocitemwidget.h"
+#include "ui_subprocitemwidget.h"
+
+SubProcItemWidget::SubProcItemWidget(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::SubProcItemWidget)
+{
+ ui->setupUi(this);
+}
+
+SubProcItemWidget::~SubProcItemWidget()
+{
+ delete ui;
+}
+
+void SubProcItemWidget::setListSubProc(const QList &list)
+{
+ int totalHeight = 0;
+
+ for (SubProc subProc : list)
+ {/*Подпроцедуры*/
+ ui->listWidget->addItem(QString("* %1\n [%2]").arg(subProc.getTitle(), subProc.getDmCode()));
+
+ //Делаем item невыделяемым
+ QListWidgetItem* item = ui->listWidget->item(ui->listWidget->count() - 1);
+ item->setFlags(item->flags() ^ Qt::ItemIsSelectable);
+ }
+
+ //Определяем минимальную высоту списка
+ for(int row = 0; row < ui->listWidget->count(); ++row)
+ {
+ totalHeight += ui->listWidget->sizeHintForRow(row); // Высота каждой строки
+ totalHeight += 10;
+ }
+
+ // Добавляем отступы фрейма (рамки)
+ totalHeight += ui->listWidget->frameWidth() * 2;
+
+ ui->listWidget->setMaximumHeight(totalHeight);
+}
diff --git a/InstructorsAndTrainees/tasks/subprocitemwidget.h b/InstructorsAndTrainees/tasks/subprocitemwidget.h
new file mode 100644
index 0000000..bec2fe5
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/subprocitemwidget.h
@@ -0,0 +1,25 @@
+#ifndef SUBPROCITEMWIDGET_H
+#define SUBPROCITEMWIDGET_H
+
+#include
+#include "module.h"
+
+namespace Ui {
+class SubProcItemWidget;
+}
+
+class SubProcItemWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit SubProcItemWidget(QWidget *parent = nullptr);
+ ~SubProcItemWidget();
+
+ void setListSubProc(const QList& list);
+
+private:
+ Ui::SubProcItemWidget *ui;
+};
+
+#endif // SUBPROCITEMWIDGET_H
diff --git a/InstructorsAndTrainees/tasks/subprocitemwidget.ui b/InstructorsAndTrainees/tasks/subprocitemwidget.ui
new file mode 100644
index 0000000..6dd1583
--- /dev/null
+++ b/InstructorsAndTrainees/tasks/subprocitemwidget.ui
@@ -0,0 +1,54 @@
+
+
+ SubProcItemWidget
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+ -
+
+
-
+
+
+ Subprocedures allowed to be run by the trainee in automatic mode:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Sunken
+
+
+
+
+
+
+
+
+
+
diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp
index e6cb82d..b6943bd 100644
--- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp
+++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp
@@ -1,12 +1,16 @@
#include
#include
#include "tasktreepreparation.h"
+#include "subprocitemwidget.h"
+
+#include
-TaskAMMFIMTreePreparation::TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent) :
+TaskAMMFIMTreePreparation::TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QTreeWidget* treeWidget, QObject *parent) :
QObject(parent),
flagStop(false),
- type(type)
+ type(type),
+ treeWidget(treeWidget)
{
qDebug() << "TaskAMMFIMTreePreparation init thread ID " << QThread::currentThreadId();
}
@@ -477,6 +481,9 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QListclear();
+
mtxAccess.lock();
this->listTasksAMM = listTasks;
@@ -491,6 +498,9 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QListaddTopLevelItem(item);
+
item->setIcon(0, QIcon(":/resources/icons/procedure.png"));
item->setText(ColumnsTreeAMM::clmnAMM_PMorDM, text);
@@ -520,26 +530,22 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QListsetToolTip(0, text);
+
if(type == TypeListTreeAMMFIM::listForTrainee)
{
- for (int j = 0; j < task.listSubProc.count(); j++)
- {/*Подпроцедуры*/
- SubProc subProc = task.listSubProc.at(j);
-
+ //Подпроцедуры
+ if(task.listSubProc.count())
+ {
QTreeWidgetItem* itemSubProc = new QTreeWidgetItem();
+ itemSubProc->setFlags(itemSubProc->flags() ^ Qt::ItemIsSelectable);
- itemSubProc->setText(ColumnsTreeAMM::clmnAMM_PMorDM, subProc.getTitle());
-
- itemSubProc->setIcon(ColumnsTreeAMM::clmnAMM_PMorDM, QIcon(":/resources/icons/link.png"));
- itemSubProc->setToolTip(ColumnsTreeAMM::clmnAMM_PMorDM, subProc.getTitle());
-
- itemSubProc->setText(ColumnsTreeAMM::clmnAMM_code, subProc.getDmCode());
-
- itemSubProc->setText(ColumnsTreeAMM::clmnAMM_canplay, subProc.getModeListStr());
+ SubProcItemWidget* itemWidget = new SubProcItemWidget();
+ itemWidget->setListSubProc(task.listSubProc);
+ //itemWidget->setAutoFillBackground(true);
item->addChild(itemSubProc);
+ treeWidget->setItemWidget(itemSubProc, 0, itemWidget);
}
-
}
listItemsAll.append(item);
diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h
index dd2ec0c..81f3309 100644
--- a/InstructorsAndTrainees/tasks/tasktreepreparation.h
+++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h
@@ -36,7 +36,7 @@ class TaskAMMFIMTreePreparation : public QObject
{
Q_OBJECT
public:
- explicit TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QObject *parent = nullptr);
+ explicit TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QTreeWidget* treeWidget, QObject *parent = nullptr);
~TaskAMMFIMTreePreparation();
public:
@@ -83,6 +83,8 @@ private:
QMutex mtxAccess;
int countItems = 0;
+
+ QTreeWidget* treeWidget;
};
#endif // TASKTREEPREPARATION_H
diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm
index e706762..eaf4daf 100644
Binary files a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm and b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm differ
diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts
index e30577c..2ee04c6 100644
--- a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts
+++ b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts
@@ -34,55 +34,55 @@
Удалить
-
+
actual
актуально
-
+
update required
требуется обновление
-
-
+
+
DM code
DM код
-
-
+
+
ID
ID
-
-
+
+
Procedure AMM
Процедура AMM
-
-
+
+
Canplay
Режимы
-
-
+
+
Status
Статус
-
+
The deletion will be irrevocable.
Delete it anyway?
Удаление будет безвозвратным.
Всё равно удалить?
-
+
Assign this task?
Назначить эту задачу?
@@ -1199,33 +1199,46 @@ Delete it anyway?
Хорошо
+
+ SubProcItemWidget
+
+
+ Form
+ Форма
+
+
+
+ Subprocedures allowed to be run by the trainee in automatic mode:
+ Подпроцедуры, которые разрешено выполнять обучаемому в автоматическом режиме:
+
+
TaskAMMFIMTreePreparation
-
-
-
+
+
+
completed
выполнена
-
-
-
+
+
+
failed
неверно
-
-
-
+
+
+
checkup
на проверке
-
-
-
+
+
+
new
новая