This commit is contained in:
semenov
2026-01-12 10:30:38 +03:00
45 changed files with 594 additions and 2205 deletions

View File

@@ -81,7 +81,7 @@ QToolButton {
height: 55px; height: 55px;
} }
QToolButton#btnSend, QToolButton#btnDelete, QToolButton#btnCheck, QToolButton#btnOnlyActive, QToolButton#btnSend, QToolButton#btnDelete, QToolButton#btnCheck, QToolButton#btnOnlyActive, QToolButton#btnStatus,
QToolButton#btnSave, QToolButton#btnUpdateStyle, QToolButton#btnSetVersion, QToolButton#btnSave, QToolButton#btnUpdateStyle, QToolButton#btnSetVersion,
QToolButton#btnAssignTask, QToolButton#btnCheckDB, QToolButton#btnRepare, QToolButton#btnDocsUpdating, QToolButton#btnAssignTask, QToolButton#btnCheckDB, QToolButton#btnRepare, QToolButton#btnDocsUpdating,
QToolButton#btnAssign { QToolButton#btnAssign {

View File

@@ -435,6 +435,54 @@ int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status)
return 0; return 0;
} }
if(status == "new")
{//Удаляем отчет
queryStr = QString("SELECT reports.report_id "
"FROM public.reports "
"WHERE fk_task_fim_id = %1 "
"ORDER BY reports.report_id ASC").arg(
QString::number(task_id));
int report_id = 0;
QSqlQuery queryReportsSEL = QSqlQuery(*db);
if(queryExec(queryStr, &queryReportsSEL))
{
if (queryReportsSEL.first())
{//Отчет
report_id = queryReportsSEL.value(0).toInt();
}
}
else
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.report_items "
"WHERE fk_report_id = %1 ").arg(
QString::number(report_id));
QSqlQuery queryItemsDEL = QSqlQuery(*db);
if(!queryExec(queryStr, &queryItemsDEL))
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.reports "
"WHERE report_id = %1 ").arg(
QString::number(report_id));
QSqlQuery queryReportsDEL = QSqlQuery(*db);
if(!queryExec(queryStr, &queryReportsDEL))
{
resBool = db->rollback();
return 0;
}
}
resBool = db->commit(); resBool = db->commit();
return id_trainee; return id_trainee;
} }

View File

@@ -56,5 +56,6 @@
<file>resources/icons/eye.png</file> <file>resources/icons/eye.png</file>
<file>resources/icons/exchange.png</file> <file>resources/icons/exchange.png</file>
<file>resources/icons/link.png</file> <file>resources/icons/link.png</file>
<file>resources/icons/new.png</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -3,6 +3,7 @@
#include <QAbstractScrollArea> #include <QAbstractScrollArea>
#include <QMessageBox> #include <QMessageBox>
#include <QLabel> #include <QLabel>
#include <QScrollBar>
#include "instructor.h" #include "instructor.h"
#include "messangerwidget.h" #include "messangerwidget.h"
#include "ui_messangerwidget.h" #include "ui_messangerwidget.h"
@@ -85,6 +86,8 @@ void MessangerWidget::addTabDialogMessenger(User user)
oneDialogMessenger = new OneDialogMessenger(userLocalGUI, userRemote, this); oneDialogMessenger = new OneDialogMessenger(userLocalGUI, userRemote, this);
oneDialogMessenger->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel);
ui->verticalLayout_ListMsg->addWidget(oneDialogMessenger); ui->verticalLayout_ListMsg->addWidget(oneDialogMessenger);
//Обновляем заголовок //Обновляем заголовок

View File

@@ -85,7 +85,7 @@
<string/> <string/>
</property> </property>
<property name="pixmap"> <property name="pixmap">
<pixmap resource="../../ServerLMS/ServerLMS.qrc">:/resources/icons/circleGray.png</pixmap> <pixmap resource="../InstructorsAndTrainees.qrc">:/resources/icons/circleGray.png</pixmap>
</property> </property>
</widget> </widget>
</item> </item>
@@ -128,7 +128,7 @@
<string>Send</string> <string>Send</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/sendMsg.png</normaloff>:/resources/icons/sendMsg.png</iconset> <normaloff>:/resources/icons/sendMsg.png</normaloff>:/resources/icons/sendMsg.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -149,7 +149,7 @@
</layout> </layout>
</widget> </widget>
<resources> <resources>
<include location="../../ServerLMS/ServerLMS.qrc"/> <include location="../InstructorsAndTrainees.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@@ -15,6 +15,10 @@ OneDialogMessenger::OneDialogMessenger(User userLocalGUI, User userRemote, QWidg
setWordWrap(true); setWordWrap(true);
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn); setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
setVerticalScrollMode(ScrollMode::ScrollPerPixel);
verticalScrollBar()->setSingleStep(10);
} }
OneDialogMessenger::~OneDialogMessenger() OneDialogMessenger::~OneDialogMessenger()

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -21,7 +21,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
threadPreparation(nullptr), threadPreparation(nullptr),
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
waitAnimationWidget(nullptr), waitAnimationWidget(nullptr),
dlgCheckerTask(nullptr), dlgStatusTask(nullptr),
dlgListSubProc(nullptr), dlgListSubProc(nullptr),
flOnlyActive(false), flOnlyActive(false),
lastCurrentID(0) lastCurrentID(0)
@@ -35,6 +35,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget->setObjectName("treeWidget_AMMforTrainee"); treeWidget->setObjectName("treeWidget_AMMforTrainee");
ui->horizontalLayout_Tree->addWidget(treeWidget); ui->horizontalLayout_Tree->addWidget(treeWidget);
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked); connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked);
connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked); connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked);
@@ -63,8 +65,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
ui->btnDelete->setObjectName("btnDelete"); ui->btnDelete->setObjectName("btnDelete");
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setObjectName("btnCheck"); ui->btnStatus->setObjectName("btnStatus");
ui->btnCheck->setEnabled(false); ui->btnStatus->setEnabled(false);
ui->btnOnlyActive->setObjectName("btnOnlyActive"); ui->btnOnlyActive->setObjectName("btnOnlyActive");
ui->btnOnlyActive->setEnabled(false); ui->btnOnlyActive->setEnabled(false);
ui->btnAssignTask->setObjectName("btnAssignTask"); ui->btnAssignTask->setObjectName("btnAssignTask");
@@ -75,7 +77,19 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
if(type == TypeListTreeAMMFIM::listCommon) if(type == TypeListTreeAMMFIM::listCommon)
{ {
ui->btnDelete->setVisible(false); ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false); ui->btnStatus->setVisible(false);
}
else if(type == TypeListTreeAMMFIM::listOneTask)
{
ui->btnDelete->setVisible(false);
ui->btnStatus->setVisible(false);
ui->btnAssignTask->setVisible(false);
ui->btnOnlyActive->setVisible(false);
ui->btnDocsUpdating->setVisible(false);
ui->label_DocsActualed->setVisible(false);
ui->label_Actual->setVisible(false);
this->treeWidget->headerItem()->setHidden(true);
this->treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
} }
else else
{ {
@@ -117,6 +131,13 @@ void AMMtasksWidget::deactivate()
idTraineeSelected = 0; idTraineeSelected = 0;
} }
void AMMtasksWidget::setOneTaskAmm(TaskAmmFim *task)
{
QList<TaskAmmFim> listTask;
listTask.append(*task);
emit signal_prepareAMMListItemsForTrainee(listTask);
}
void AMMtasksWidget::waitAnimationWidgetShowWithPlay() void AMMtasksWidget::waitAnimationWidgetShowWithPlay()
{ {
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
@@ -153,8 +174,8 @@ void AMMtasksWidget::closeEvent(QCloseEvent *event)
void AMMtasksWidget::closeChildDlg() void AMMtasksWidget::closeChildDlg()
{ {
if(dlgCheckerTask) if(dlgStatusTask)
dlgCheckerTask->close(); dlgStatusTask->close();
if(dlgListSubProc) if(dlgListSubProc)
dlgListSubProc->close(); dlgListSubProc->close();
} }
@@ -183,7 +204,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
if(item == nullptr) if(item == nullptr)
{ {
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnStatus->setEnabled(false);
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
return; return;
} }
@@ -204,14 +225,14 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
lastCurrentID = id; lastCurrentID = id;
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnStatus->setEnabled(false);
} }
else if(this->type == TypeListTreeAMMFIM::listForTrainee) else if(this->type == TypeListTreeAMMFIM::listForTrainee)
{ {
QTreeWidgetItem *treeItemParent = item->parent(); QTreeWidgetItem *treeItemParent = item->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
ui->btnCheck->setEnabled(true); ui->btnStatus->setEnabled(true);
ui->btnDelete->setEnabled(true); ui->btnDelete->setEnabled(true);
int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
@@ -222,7 +243,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
} }
else else
{ {
ui->btnCheck->setEnabled(false); ui->btnStatus->setEnabled(false);
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
} }
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
@@ -282,7 +303,7 @@ void AMMtasksWidget::loadTasksAMM(bool flRequestFirst)
void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems) void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
{ {
if(type != TypeListTreeAMMFIM::listForTrainee) if(type != TypeListTreeAMMFIM::listForTrainee && type != TypeListTreeAMMFIM::listOneTask)
{ {
//Обновление дерева //Обновление дерева
treeWidget->clear(); treeWidget->clear();
@@ -296,6 +317,13 @@ void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
if(item != nullptr) if(item != nullptr)
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
*/ */
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
{
//treeWidget->setCurrentItem(item);
if(type == TypeListTreeAMMFIM::listOneTask)
treeWidget->expandAll();
}
if(type == TypeListTreeAMMFIM::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee)
setCurrentTask(lastCurrentID); setCurrentTask(lastCurrentID);
@@ -363,7 +391,7 @@ void AMMtasksWidget::preparationTreeWidget()
reSetHeadTreeWidget(); reSetHeadTreeWidget();
if(type == TypeListTreeAMMFIM::listCommon) if(type == TypeListTreeAMMFIM::listCommon || type == TypeListTreeAMMFIM::listOneTask)
{ {
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true); treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true);
@@ -515,7 +543,7 @@ void AMMtasksWidget::on_btnDelete_clicked()
} }
} }
void AMMtasksWidget::on_btnCheck_clicked() void AMMtasksWidget::on_btnStatus_clicked()
{ {
QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem(); QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem();
@@ -529,17 +557,17 @@ void AMMtasksWidget::on_btnCheck_clicked()
if(!task.getID()) if(!task.getID())
return; return;
dlgCheckerTask = new DialogChekerTask(connectorToServer, "amm", this); dlgStatusTask = new DialogChekerTask(connectorToServer, CheckerTask::TypeChecker::amm_check, this);
dlgCheckerTask->setTask(&task); dlgStatusTask->setTask(&task);
dlgCheckerTask->exec(); dlgStatusTask->exec();
if(dlgCheckerTask->getFlChanged()) if(dlgStatusTask->getFlChanged())
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
if(dlgCheckerTask) if(dlgStatusTask)
{ {
delete dlgCheckerTask; delete dlgStatusTask;
dlgCheckerTask = nullptr; dlgStatusTask = nullptr;
} }
} }
} }

View File

@@ -26,6 +26,7 @@ public:
public: public:
void deactivate(); void deactivate();
void setOneTaskAmm(TaskAmmFim* task);
void waitAnimationWidgetShowWithPlay(); void waitAnimationWidgetShowWithPlay();
void setDocsActualed(bool flActualed); void setDocsActualed(bool flActualed);
@@ -42,7 +43,7 @@ protected:
private Q_SLOTS: private Q_SLOTS:
void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column);
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnStatus_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();
void on_btnOnlyActive_clicked(); //AMM void on_btnOnlyActive_clicked(); //AMM
@@ -99,7 +100,7 @@ private:
TaskAMMFIMTreePreparation* taskTreePreparation; TaskAMMFIMTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
DialogChekerTask* dlgCheckerTask; DialogChekerTask* dlgStatusTask;
DialogListSubProc* dlgListSubProc; DialogListSubProc* dlgListSubProc;

View File

@@ -133,7 +133,7 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="btnCheck"> <widget class="QToolButton" name="btnStatus">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>

View File

@@ -2,42 +2,53 @@
#include "specialmessagebox.h" #include "specialmessagebox.h"
#include "ui_checkertask.h" #include "ui_checkertask.h"
#include "fimtaskswidget.h" #include "fimtaskswidget.h"
#include "ammtaskswidget.h"
CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent) : CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::CheckerTask), ui(new Ui::CheckerTask),
connectorToServer(connectorToServer), connectorToServer(connectorToServer),
fimTasksWidget(nullptr), fimTasksWidget(nullptr),
ammTasksWidget(nullptr),
flChanged(false), flChanged(false),
id_task(0), id_task(0),
type("fim") type(TypeChecker::fim_check)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->btnNew->setObjectName("btnNew");
ui->btnCheckup->setObjectName("btnCheckup");
ui->btnWrong->setObjectName("btnWrong");
ui->btnCompleted->setObjectName("btnCompleted");
this->type = type; this->type = type;
if(type == "fim") if(type == TypeChecker::fim_check)
{ {
fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this); fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(fimTasksWidget); ui->verticalLayout_3->addWidget(fimTasksWidget);
ui->lblName->setVisible(false); ui->lblName->setVisible(false);
ui->lblDMcode->setVisible(false); ui->lblDMcode->setVisible(false);
ui->plainText->setReadOnly(true); ui->plainText->setReadOnly(true);
ui->plainText->setObjectName("plainText"); ui->plainText->setObjectName("plainText");
} }
else else if(type == TypeChecker::amm_check)
{ {
ammTasksWidget = new AMMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(ammTasksWidget);
ui->lblName->setVisible(false);
ui->lblDMcode->setVisible(false);
ui->plainText->setVisible(false); ui->plainText->setVisible(false);
ui->label->setVisible(false); ui->label->setVisible(false);
//ui->label_Task->setVisible(false);
ui->btnRight->setText(tr("Completed"));
ui->btnWrong->setText(tr("New"));
ui->btnWrong->setIcon(QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
ui->btnRight->setEnabled(false);
ui->btnWrong->setEnabled(false); ui->btnWrong->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setVisible(false);
ui->btnCheckup->setVisible(false);
} }
} }
@@ -49,6 +60,12 @@ CheckerTask::~CheckerTask()
fimTasksWidget = nullptr; fimTasksWidget = nullptr;
} }
if(ammTasksWidget)
{
delete ammTasksWidget;
ammTasksWidget = nullptr;
}
delete ui; delete ui;
} }
@@ -62,20 +79,68 @@ void CheckerTask::setTask(TaskAmmFim* task)
this->task = *task; this->task = *task;
id_task = task->getID(); id_task = task->getID();
if(type == "fim") if(type == TypeChecker::fim_check)
{ {
//Задача //Задача
fimTasksWidget->setOneTaskFim(&this->task); fimTasksWidget->setOneTaskFim(&this->task);
//Репорт //Репорт
outReport(this->task.report); outReport(this->task.report);
}
else if(type == "amm")
{
if(this->task.status == "new") if(this->task.status == "new")
ui->btnRight->setEnabled(true); {
else ui->btnNew->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(false);
ui->plainText->setVisible(false);
ui->label->setVisible(false);
}
else if(this->task.status == "checkup")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(true); ui->btnWrong->setEnabled(true);
ui->btnCompleted->setEnabled(true);
}
else if(this->task.status == "failed")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(true);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(true);
}
else if(this->task.status == "completed")
{
ui->btnNew->setEnabled(true);
ui->btnCheckup->setEnabled(true);
ui->btnWrong->setEnabled(true);
ui->btnCompleted->setEnabled(false);
}
else
{
ui->btnNew->setEnabled(false);
ui->btnCheckup->setEnabled(false);
ui->btnWrong->setEnabled(false);
ui->btnCompleted->setEnabled(false);
}
}
else if(type == TypeChecker::amm_check)
{
//Задача
ammTasksWidget->setOneTaskAmm(&this->task);
if(this->task.status == "new")
{
ui->btnNew->setEnabled(false);
ui->btnCompleted->setEnabled(true);
}
else
{
ui->btnNew->setEnabled(true);
ui->btnCompleted->setEnabled(false);
}
ui->lblName->setText(task->ammProcedure.title); ui->lblName->setText(task->ammProcedure.title);
ui->lblDMcode->setText(task->ammProcedure.dmCode); ui->lblDMcode->setText(task->ammProcedure.dmCode);
@@ -100,7 +165,7 @@ void CheckerTask::setTask(TaskAmmFim* task)
else else
{ {
ui->lblStatusCurrText->setText(tr("new")); ui->lblStatusCurrText->setText(tr("new"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/new.png")));
} }
} }
@@ -157,19 +222,70 @@ void CheckerTask::outReport(FIMReport report)
} }
} }
//НЕВЕРНО
void CheckerTask::on_btnWrong_clicked() void CheckerTask::on_btnWrong_clicked()
{ {
TypeQueryToDB typeQuery; TypeQueryToDB typeQuery;
QString status; QString status;
QString msgString; QString msgString;
if(type == "fim") if(type == TypeChecker::fim_check)
{ {
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "failed"; status = "failed";
msgString = tr("Change task status?\nThe status will be set:\n'failed'"); msgString = tr("Change task status?\nThe status will be set:\n'failed'");
} }
else
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
//ВЫПОЛНЕНО
void CheckerTask::on_btnCompleted_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
else if(type == TypeChecker::amm_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
//НОВАЯ
void CheckerTask::on_btnNew_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "new";
msgString = tr("Change task status?\nThe status will be set:\n'new'");
}
else if(type == TypeChecker::amm_check)
{ {
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE; typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "new"; status = "new";
@@ -184,23 +300,18 @@ void CheckerTask::on_btnWrong_clicked()
} }
} }
void CheckerTask::on_btnRight_clicked() //НА ПРОВЕРКЕ
void CheckerTask::on_btnCheckup_clicked()
{ {
TypeQueryToDB typeQuery; TypeQueryToDB typeQuery;
QString status; QString status;
QString msgString; QString msgString;
if(type == "fim") if(type == TypeChecker::fim_check)
{ {
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE; typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "completed"; status = "checkup";
msgString = tr("Change task status?\nThe status will be set:\n'completed'"); msgString = tr("Change task status?\nThe status will be set:\n'checkup'");
}
else
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
} }
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted) if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)

View File

@@ -13,13 +13,21 @@ class CheckerTask;
} }
class FIMtasksWidget; class FIMtasksWidget;
class AMMtasksWidget;
class CheckerTask : public QWidget class CheckerTask : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit CheckerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent = nullptr); enum TypeChecker
{
amm_check,
fim_check
};
public:
explicit CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent = nullptr);
~CheckerTask(); ~CheckerTask();
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;
@@ -33,7 +41,9 @@ public:
private slots: private slots:
void on_btnWrong_clicked(); void on_btnWrong_clicked();
void on_btnRight_clicked(); void on_btnCompleted_clicked();
void on_btnNew_clicked();
void on_btnCheckup_clicked();
private: private:
void outReport(FIMReport report); void outReport(FIMReport report);
@@ -47,10 +57,11 @@ private:
private: private:
ConnectorToServer* connectorToServer; ConnectorToServer* connectorToServer;
FIMtasksWidget* fimTasksWidget; FIMtasksWidget* fimTasksWidget;
AMMtasksWidget* ammTasksWidget;
bool flChanged; bool flChanged;
int id_task; int id_task;
QString type; TypeChecker type;
}; };
#endif // DIALOGCHECKTASK_H #endif // DIALOGCHECKTASK_H

View File

@@ -53,6 +53,9 @@
<property name="pixmap"> <property name="pixmap">
<pixmap resource="../InstructorsAndTrainees.qrc">:/resources/icons/rectGray.png</pixmap> <pixmap resource="../InstructorsAndTrainees.qrc">:/resources/icons/rectGray.png</pixmap>
</property> </property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@@ -159,6 +162,58 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QToolButton" name="btnNew">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text">
<string>New</string>
</property>
<property name="icon">
<iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/new.png</normaloff>:/resources/icons/new.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnCheckup">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text">
<string>Checkup</string>
</property>
<property name="icon">
<iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/circleYellow.png</normaloff>:/resources/icons/circleYellow.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item> <item>
<widget class="QToolButton" name="btnWrong"> <widget class="QToolButton" name="btnWrong">
<property name="minimumSize"> <property name="minimumSize">
@@ -186,7 +241,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QToolButton" name="btnRight"> <widget class="QToolButton" name="btnCompleted">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@@ -194,7 +249,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>Right</string> <string>Completed</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../InstructorsAndTrainees.qrc"> <iconset resource="../InstructorsAndTrainees.qrc">

View File

@@ -1,7 +1,7 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include "dialogchekertask.h" #include "dialogchekertask.h"
DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent) : DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, CheckerTask::TypeChecker type, QWidget *parent) :
QDialog(parent, QDialog(parent,
Qt::WindowSystemMenuHint Qt::WindowSystemMenuHint
| Qt::WindowMaximizeButtonHint | Qt::WindowMaximizeButtonHint
@@ -13,17 +13,22 @@ DialogChekerTask::DialogChekerTask(ConnectorToServer* connectorToServer, QString
QHBoxLayout *layout = new QHBoxLayout(this); QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(checkerTask); layout->addWidget(checkerTask);
this->setWindowTitle(tr("Check Task"));
if(type == "fim") switch (type)
{ {
case CheckerTask::TypeChecker::fim_check:
this->setWindowTitle(tr("Check Task"));
this->setMinimumSize(1400, 700); this->setMinimumSize(1400, 700);
this->setWindowState(Qt::WindowMaximized); //this->setWindowState(Qt::WindowMaximized);
} break;
else case CheckerTask::TypeChecker::amm_check:
{ this->setWindowTitle(tr("Status Task"));
this->setMinimumSize(400, 200); this->setMinimumSize(1400, 500);
break;
default:
break;
} }
this->setModal(true); this->setModal(true);
} }

View File

@@ -9,7 +9,7 @@ class DialogChekerTask : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
DialogChekerTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent = nullptr); DialogChekerTask(ConnectorToServer* connectorToServer, CheckerTask::TypeChecker type, QWidget *parent = nullptr);
~DialogChekerTask(); ~DialogChekerTask();
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;

View File

@@ -32,6 +32,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget = new QTreeWidget(); treeWidget = new QTreeWidget();
ui->horizontalLayout_Tree->addWidget(treeWidget); ui->horizontalLayout_Tree->addWidget(treeWidget);
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
//connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged); //connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged);
connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked); connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked);
@@ -191,10 +193,11 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
ui->btnDelete->setEnabled(true); ui->btnDelete->setEnabled(true);
if(task.status != "new") ui->btnCheck->setEnabled(true);
/*if(task.status != "new")
ui->btnCheck->setEnabled(true); ui->btnCheck->setEnabled(true);
else else
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);*/
} }
else else
{ {
@@ -422,7 +425,7 @@ void FIMtasksWidget::on_btnCheck_clicked()
if(!task.getID()) if(!task.getID())
return; return;
dlgCheckerTask = new DialogChekerTask(connectorToServer, "fim", this); dlgCheckerTask = new DialogChekerTask(connectorToServer, CheckerTask::TypeChecker::fim_check, this);
dlgCheckerTask->setTask(&task); dlgCheckerTask->setTask(&task);
dlgCheckerTask->exec(); dlgCheckerTask->exec();
@@ -464,6 +467,7 @@ void FIMtasksWidget::setCurrentTask(int id)
if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id) if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
treeWidget->itemClicked(item, 0);
return; return;
} }
} }

View File

@@ -27,7 +27,7 @@ public:
public: public:
void deactivate(); void deactivate();
void setOneTaskFim(TaskAmmFim* task); //FIM void setOneTaskFim(TaskAmmFim* task);
void waitAnimationWidgetShowWithPlay(); void waitAnimationWidgetShowWithPlay();
public: public:

View File

@@ -54,7 +54,7 @@
<string>Assign</string> <string>Assign</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources.qrc"> <iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/assignTask.png</normaloff>:/resources/icons/assignTask.png</iconset> <normaloff>:/resources/icons/assignTask.png</normaloff>:/resources/icons/assignTask.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -80,7 +80,7 @@
<string>Check</string> <string>Check</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources.qrc"> <iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/check.png</normaloff>:/resources/icons/check.png</iconset> <normaloff>:/resources/icons/check.png</normaloff>:/resources/icons/check.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -106,7 +106,7 @@
<string>Delete</string> <string>Delete</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources.qrc"> <iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/delete.png</normaloff>:/resources/icons/delete.png</iconset> <normaloff>:/resources/icons/delete.png</normaloff>:/resources/icons/delete.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -129,7 +129,7 @@
</layout> </layout>
</widget> </widget>
<resources> <resources>
<include location="../resources.qrc"/> <include location="../InstructorsAndTrainees.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@@ -14,6 +14,8 @@ ListSubProc::ListSubProc(QWidget *parent) :
treeWidget = new QTreeWidget(); treeWidget = new QTreeWidget();
ui->horizontalLayout_Tree->addWidget(treeWidget); ui->horizontalLayout_Tree->addWidget(treeWidget);
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
preparationTreeWidget(); preparationTreeWidget();
} }

View File

@@ -72,7 +72,7 @@
<string>Assign</string> <string>Assign</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../../ServerLMS/ServerLMS.qrc"> <iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/circleGreen.png</normaloff>:/resources/icons/circleGreen.png</iconset> <normaloff>:/resources/icons/circleGreen.png</normaloff>:/resources/icons/circleGreen.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -93,7 +93,7 @@
</layout> </layout>
</widget> </widget>
<resources> <resources>
<include location="../../ServerLMS/ServerLMS.qrc"/> <include location="../InstructorsAndTrainees.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@@ -43,6 +43,15 @@
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Sunken</enum> <enum>QFrame::Sunken</enum>
</property> </property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScroll">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@@ -525,13 +525,13 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmm
else else
{ {
item->setText(ColumnsTreeAMM::clmnAMM_status, tr("new")); item->setText(ColumnsTreeAMM::clmnAMM_status, tr("new"));
item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); item->setIcon(ColumnsTreeAMM::clmnAMM_status, QIcon(QStringLiteral(":/resources/icons/new.png")));
} }
item->setToolTip(0, text); item->setToolTip(0, text);
if(type == TypeListTreeAMMFIM::listForTrainee) if(type == TypeListTreeAMMFIM::listForTrainee || type == TypeListTreeAMMFIM::listOneTask)
{ {
//Подпроцедуры //Подпроцедуры
if(task.listSubProc.count()) if(task.listSubProc.count())
@@ -598,7 +598,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array)
else else
{ {
itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new")); itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new"));
itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/new.png")));
} }
@@ -635,7 +635,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array)
itemSign->setText(ColumnsTreeFIM::clmnFIM_Title, sign.description); itemSign->setText(ColumnsTreeFIM::clmnFIM_Title, sign.description);
//itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable); //itemSign->setFlags(itemSign->flags() | Qt::ItemIsUserCheckable);
//itemSign->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked); //itemSign->setCheckState(ColumnsTreeFIM::clmnFIM_Title, Qt::Checked);
itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png")); itemSign->setIcon(ColumnsTreeFIM::clmnFIM_Title, QIcon(":/resources/icons/sign.png").pixmap(24, 24));
itemSign->setToolTip(ColumnsTreeFIM::clmnFIM_Title, sign.description); itemSign->setToolTip(ColumnsTreeFIM::clmnFIM_Title, sign.description);
itemMalfunction->addChild(itemSign); itemMalfunction->addChild(itemSign);
@@ -691,7 +691,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmm
else else
{ {
itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new")); itemTask->setText(ColumnsTreeFIM::clmnFIM_status, tr("new"));
itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); itemTask->setIcon(ColumnsTreeFIM::clmnFIM_status, QIcon(QStringLiteral(":/resources/icons/new.png")));
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -2,7 +2,6 @@
#include <QXmlStreamReader> #include <QXmlStreamReader>
#include <QXmlStreamAttribute> #include <QXmlStreamAttribute>
#include <QFile> #include <QFile>
#include <QMessageBox>
#include <QThread> #include <QThread>
#include <QErrorMessage> #include <QErrorMessage>
#include "serverlmswidget.h" #include "serverlmswidget.h"
@@ -57,6 +56,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
waitAnimationWidget->initialize(movie,this); waitAnimationWidget->initialize(movie,this);
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
updateStateOnlyVersion();
} }
ServerLMSWidget::~ServerLMSWidget() ServerLMSWidget::~ServerLMSWidget()
@@ -100,7 +101,9 @@ void ServerLMSWidget::changeEvent(QEvent *event)
{ {
ui->retranslateUi(this); // переведём окно заново ui->retranslateUi(this); // переведём окно заново
updateStateServer(); updateStateOnlyServer();
updateStateOnlyDB();
updateStateOnlyVersion();
} }
} }
@@ -137,7 +140,7 @@ void ServerLMSWidget::slot_AddMessageToLog(QString message)
void ServerLMSWidget::slot_ErrorPostgreSQL(QString text) void ServerLMSWidget::slot_ErrorPostgreSQL(QString text)
{ {
emit signal_Menu_ShowWindow(); emit signal_Menu_ShowWindow();
SpecMsgBox::CriticalClose(this, tr("Error PostgreSQL!")); SpecMsgBox::CriticalClose(this, tr("Error PostgreSQL!") + "\n" + text);
} }
void ServerLMSWidget::slot_UpdateDocs() void ServerLMSWidget::slot_UpdateDocs()
@@ -161,7 +164,9 @@ void ServerLMSWidget::slot_startInitialization_step1()
flStartInitialization = true; flStartInitialization = true;
updateStateServer(); updateStateOnlyServer();
updateStateOnlyDB();
updateStateOnlyVersion();
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
@@ -177,13 +182,13 @@ void ServerLMSWidget::slot_startInitialization_step1()
void ServerLMSWidget::slot_setVersion(QString versionStr) void ServerLMSWidget::slot_setVersion(QString versionStr)
{ {
this->versionStr = versionStr; this->versionStr = versionStr;
ui->lblVersionText->setText(versionStr); Logger::instance().log("Set Version: " + versionStr);
updateStateOnlyVersion();
} }
void ServerLMSWidget::start() void ServerLMSWidget::start()
{ {
startInitialization_step0(); startInitialization_step0();
} }
void ServerLMSWidget::slot_BlockAutorization(bool block) void ServerLMSWidget::slot_BlockAutorization(bool block)
@@ -191,15 +196,14 @@ void ServerLMSWidget::slot_BlockAutorization(bool block)
if(block) if(block)
{ {
server->blockAutorization(); server->blockAutorization();
ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png"))); Logger::instance().log("Autorization is blocked");
//emit signal_Tray_ShowMessage(tr("Authorization blocked!"));
} }
else else
{ {
server->unBlockAutorization(); server->unBlockAutorization();
ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/open.png"))); Logger::instance().log("Autorization is unblocked");
//emit signal_Tray_ShowMessage(tr("Authorization unblocked!"));
} }
updateStateOnlyServer();
} }
void ServerLMSWidget::slot_LanguageChanged(QString language) void ServerLMSWidget::slot_LanguageChanged(QString language)
@@ -215,28 +219,35 @@ void ServerLMSWidget::on_btnStartServer_clicked()
if(server->startServer()) if(server->startServer())
{ {
QApplication::setOverrideCursor(Qt::WaitCursor); QApplication::setOverrideCursor(Qt::WaitCursor);
QApplication::restoreOverrideCursor();
ui->btnStartServer->setEnabled(false); ui->btnStartServer->setEnabled(false);
ui->btnStopServer->setEnabled(true); ui->btnStopServer->setEnabled(true);
slot_BlockAutorization(false); slot_BlockAutorization(false);
updateStateOnlyServer();
emit signal_Tray_ShowMessage(tr("Server is started!")); emit signal_Tray_ShowMessage(tr("Server is started!"));
QApplication::restoreOverrideCursor();
} }
updateStateServer();
} }
void ServerLMSWidget::on_btnStopServer_clicked() void ServerLMSWidget::on_btnStopServer_clicked()
{ {
if(server->stopServer()) if(server->stopServer())
{ {
QApplication::setOverrideCursor(Qt::WaitCursor);
ui->btnStopServer->setEnabled(false); ui->btnStopServer->setEnabled(false);
ui->btnStartServer->setEnabled(true); ui->btnStartServer->setEnabled(true);
slot_BlockAutorization(true); slot_BlockAutorization(true);
updateStateOnlyServer();
emit signal_Tray_ShowMessage(tr("Server is stoped!")); emit signal_Tray_ShowMessage(tr("Server is stoped!"));
QApplication::restoreOverrideCursor();
} }
updateStateServer();
} }
void ServerLMSWidget::on_btnSettings_clicked() void ServerLMSWidget::on_btnSettings_clicked()
@@ -271,7 +282,7 @@ void ServerLMSWidget::on_btnSettings_clicked()
providerDBLMS->DisConnectionFromDB(); providerDBLMS->DisConnectionFromDB();
updateStateServer(); updateStateOnlyDB();
SpecMsgBox::WarningClose(this, tr("Database settings have been changed.\nThe server will be restarted.")); SpecMsgBox::WarningClose(this, tr("Database settings have been changed.\nThe server will be restarted."));
@@ -292,12 +303,12 @@ void ServerLMSWidget::slot_trySetServerState(PacketType packetType)
if (packetType == PacketType::BUSY) if (packetType == PacketType::BUSY)
{ {
server->blockAutorization(); server->blockAutorization();
updateStateServer(); updateStateOnlyServer();
} }
else if (packetType == PacketType::FREE) else if (packetType == PacketType::FREE)
{ {
server->unBlockAutorization(); server->unBlockAutorization();
updateStateServer(); updateStateOnlyServer();
} }
} }
@@ -375,41 +386,43 @@ void ServerLMSWidget::startInitialization_step0()
processingSystem = new ProcessingSystem(providerDBLMS, updateController, docsUpdater); processingSystem = new ProcessingSystem(providerDBLMS, updateController, docsUpdater);
dataParser = new DataParser(assetsManager,processingSystem); dataParser = new DataParser(assetsManager, processingSystem);
commonClientHandler = new CommonClientHandler; commonClientHandler = new CommonClientHandler;
connect(this,&ServerLMSWidget::signal_DocsChanged,commonClientHandler, &CommonClientHandler::slot_DocsChanged); connect(this, &ServerLMSWidget::signal_DocsChanged, commonClientHandler, &CommonClientHandler::slot_DocsChanged);
connect(commonClientHandler,&CommonClientHandler::sigSetServerState,this,&ServerLMSWidget::slot_trySetServerState); connect(commonClientHandler, &CommonClientHandler::sigSetServerState, this, &ServerLMSWidget::slot_trySetServerState);
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000); server = new MultiThreadServer(this, updateController, processingSystem, dataParser, 6000);
loggerThread->start(); loggerThread->start();
updateThread->start(); updateThread->start();
commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser); commonClientHandler->initialize(server->getClientsMap(), processingSystem, dataParser);
processingSystem->initialize(server,dataParser,commonClientHandler,updateController,chatSystem); processingSystem->initialize(server, dataParser, commonClientHandler, updateController, chatSystem);
chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap()); chatSystem->initialize(commonClientHandler, dataParser, server->getClientsMap());
Logger::instance().moveToThread(loggerThread); Logger::instance().moveToThread(loggerThread);
Logger::instance().setLoggingType(LoggingType::WIDGET); Logger::instance().setLoggingType(LoggingType::WIDGET);
Logger::instance().setLogToFile(true); Logger::instance().setLogToFile(true);
connect(this,&ServerLMSWidget::sigUpdateControllerInitialize,updateController,&UpdateController::initialize/*,Qt::DirectConnection*/); connect(this, &ServerLMSWidget::sigUpdateControllerInitialize, updateController, &UpdateController::initialize);
connect(updateController,&UpdateController::sigInitializeFinished, this,&ServerLMSWidget::slot_startInitialization_step1/*,Qt::DirectConnection*/); connect(updateController, &UpdateController::sigInitializeFinished, this, &ServerLMSWidget::slot_startInitialization_step1);
connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection); connect(this, &ServerLMSWidget::sigCalculateFullHash, updateController, &UpdateController::calculateFullHash, Qt::AutoConnection);
connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError); connect(updateController, &UpdateController::sigErrorRequired, this, &ServerLMSWidget::setError);
connect(updateController,&UpdateController::sigUpdateDocs,this,&ServerLMSWidget::slot_UpdateDocs,Qt::AutoConnection); connect(updateController, &UpdateController::sigUpdateDocs, this, &ServerLMSWidget::slot_UpdateDocs, Qt::AutoConnection);
connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::slot_AddMessageToLog,Qt::QueuedConnection); connect(&Logger::instance(), &Logger::sigLogToWidget, this, &ServerLMSWidget::slot_AddMessageToLog, Qt::QueuedConnection);
connect(assetsManager,&AssetsManager::signal_setVersion, this, &ServerLMSWidget::slot_setVersion); connect(assetsManager, &AssetsManager::signal_setVersion, this, &ServerLMSWidget::slot_setVersion);
emit sigUpdateControllerInitialize(commonClientHandler,dataParser,assetsManager); emit sigUpdateControllerInitialize(commonClientHandler, dataParser, assetsManager);
} }
void ServerLMSWidget::tryConnectionToDB() void ServerLMSWidget::tryConnectionToDB()
{ {
if(! providerDBLMS->ConnectionToDB()) if(! providerDBLMS->ConnectionToDB())
{ {
Logger::instance().log("Database connection error!");
emit signal_Tray_ShowMessage(tr("Database connection error!"), QSystemTrayIcon::Critical); emit signal_Tray_ShowMessage(tr("Database connection error!"), QSystemTrayIcon::Critical);
emit signal_Menu_ShowWindow(); emit signal_Menu_ShowWindow();
@@ -436,34 +449,38 @@ void ServerLMSWidget::tryConnectionToDB()
on_btnStartServer_clicked(); on_btnStartServer_clicked();
} }
updateStateServer(); updateStateOnlyDB();
} }
void ServerLMSWidget::updateStateServer() void ServerLMSWidget::updateStateOnlyServer()
{ {
if(server) if(server)
{ {
if(server->getStateServer() == EStateServer::started) if(server->getStateServer() == EStateServer::started)
{ {
ui->lblOnOffText->setText(tr("started")); if(server->getStateBlockAutorization() == EStateBlockAutorization::unblocked)
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png"))); {
ui->lblOnOffText->setText(tr("started"));
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else
{
ui->lblOnOffText->setText(tr("started") + ", " + tr("locked"));
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png")));
}
} }
else else
{ {
ui->lblOnOffText->setText(tr("stoped")); ui->lblOnOffText->setText(tr("stoped"));
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/stop.png")));
} }
if(server->getStateBlockAutorization() == EStateBlockAutorization::unblocked) emit signal_updateStateServer(server->getStateServer(), server->getStateBlockAutorization());
{
ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/open.png")));
}
else
{
ui->lblBlockAuth->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png")));
}
} }
}
void ServerLMSWidget::updateStateOnlyDB()
{
if(providerDBLMS) if(providerDBLMS)
{ {
if(providerDBLMS->DBisConnected()) if(providerDBLMS->DBisConnected())
@@ -486,6 +503,9 @@ void ServerLMSWidget::updateStateServer()
ui->btnStartServer->setEnabled(false); ui->btnStartServer->setEnabled(false);
} }
} }
}
void ServerLMSWidget::updateStateOnlyVersion()
{
ui->lblVersionText->setText(versionStr); ui->lblVersionText->setText(versionStr);
} }

View File

@@ -82,11 +82,12 @@ signals:
void sigRecognize(); void sigRecognize();
void sigCalculateFullHash(); void sigCalculateFullHash();
void sigUpdateControllerInitialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager); void sigUpdateControllerInitialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager);
QTcpSocket* sigGetSocket();
void signal_DocsChanged(); void signal_DocsChanged();
void signal_hasError(int code); void signal_hasError(int code);
void signal_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization);
public slots: public slots:
void slot_LanguageChanged(QString language); void slot_LanguageChanged(QString language);
void slot_UpdateListClients(); void slot_UpdateListClients();
@@ -101,6 +102,8 @@ public slots:
void slot_setVersion(QString versionStr); void slot_setVersion(QString versionStr);
void slot_trySetServerState(PacketType packetType);
public: public:
QString getLanguage() QString getLanguage()
{ {
@@ -141,8 +144,7 @@ public:
private slots: private slots:
void on_btnStartServer_clicked(); void on_btnStartServer_clicked();
void on_btnStopServer_clicked(); void on_btnStopServer_clicked();
void on_btnSettings_clicked(); void on_btnSettings_clicked();
void slot_trySetServerState(PacketType packetType);
private: private:
void setLanguageInterfase(); void setLanguageInterfase();
@@ -153,7 +155,9 @@ private:
void tryConnectionToDB(); void tryConnectionToDB();
void updateStateServer(); void updateStateOnlyServer();
void updateStateOnlyDB();
void updateStateOnlyVersion();
private: private:
Ui::ServerLMSWidget *ui; Ui::ServerLMSWidget *ui;

View File

@@ -68,7 +68,7 @@
<string>Start</string> <string>Start</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="ServerLMS.qrc"> <iconset resource="Server.qrc">
<normaloff>:/resources/icons/rocket.png</normaloff>:/resources/icons/rocket.png</iconset> <normaloff>:/resources/icons/rocket.png</normaloff>:/resources/icons/rocket.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -109,7 +109,7 @@
<string>Stop</string> <string>Stop</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="ServerLMS.qrc"> <iconset resource="Server.qrc">
<normaloff>:/resources/icons/stop.png</normaloff>:/resources/icons/stop.png</iconset> <normaloff>:/resources/icons/stop.png</normaloff>:/resources/icons/stop.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -148,7 +148,7 @@
<string>Settings</string> <string>Settings</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../InstructorsAndTrainees/InstructorsAndTrainees.qrc"> <iconset resource="../LibInstructorsAndTrainees/InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/settings.png</normaloff>:/resources/icons/settings.png</iconset> <normaloff>:/resources/icons/settings.png</normaloff>:/resources/icons/settings.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@@ -250,7 +250,7 @@
<string/> <string/>
</property> </property>
<property name="pixmap"> <property name="pixmap">
<pixmap resource="../InstructorsAndTrainees/InstructorsAndTrainees.qrc">:/resources/icons/circleGray.png</pixmap> <pixmap resource="../LibInstructorsAndTrainees/InstructorsAndTrainees.qrc">:/resources/icons/circleGray.png</pixmap>
</property> </property>
<property name="scaledContents"> <property name="scaledContents">
<bool>true</bool> <bool>true</bool>
@@ -268,7 +268,7 @@
<widget class="QLabel" name="lblOnOffText"> <widget class="QLabel" name="lblOnOffText">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>100</width> <width>200</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
@@ -305,7 +305,7 @@
<string/> <string/>
</property> </property>
<property name="pixmap"> <property name="pixmap">
<pixmap resource="../InstructorsAndTrainees/InstructorsAndTrainees.qrc">:/resources/icons/circleGray.png</pixmap> <pixmap resource="../LibInstructorsAndTrainees/InstructorsAndTrainees.qrc">:/resources/icons/circleGray.png</pixmap>
</property> </property>
</widget> </widget>
</item> </item>
@@ -374,61 +374,6 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Block">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Authorization</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblBlockAuth">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="ServerLMS.qrc">:/resources/icons/lock.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
@@ -436,8 +381,8 @@
</layout> </layout>
</widget> </widget>
<resources> <resources>
<include location="../InstructorsAndTrainees/InstructorsAndTrainees.qrc"/> <include location="../LibInstructorsAndTrainees/InstructorsAndTrainees.qrc"/>
<include location="ServerLMS.qrc"/> <include location="Server.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@@ -1,6 +1,6 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>resources/IcoGUIRRJ.ico</file>
<file>resources/PngGUIRRJ.png</file> <file>resources/PngGUIRRJ.png</file>
<file>resources/IcoGUIRRJ.ico</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -2,5 +2,8 @@
<qresource prefix="/"> <qresource prefix="/">
<file>resources/PngServerRRJ.png</file> <file>resources/PngServerRRJ.png</file>
<file>resources/IcoServerRRJ.ico</file> <file>resources/IcoServerRRJ.ico</file>
<file>resources/PngServerRRJ_lock.png</file>
<file>resources/PngServerRRJ_start.png</file>
<file>resources/PngServerRRJ_stop.png</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -1,4 +1,3 @@
#include <QMessageBox>
#include <QTimer> #include <QTimer>
#include <QThread> #include <QThread>
#include <QMenu> #include <QMenu>
@@ -30,6 +29,8 @@ MainWindow::MainWindow(QWidget *parent) :
connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_ShowWindow, this, &MainWindow::slot_TrayMenu_ShowWindow); connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_ShowWindow, this, &MainWindow::slot_TrayMenu_ShowWindow);
connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_HideWindow, this, &MainWindow::slot_TrayMenu_HideWindow); connect(serverLMSWidget, &ServerLMSWidget::signal_Menu_HideWindow, this, &MainWindow::slot_TrayMenu_HideWindow);
connect(serverLMSWidget, &ServerLMSWidget::signal_updateStateServer, this, &MainWindow::slot_updateStateServer);
qtLanguageTranslator.load(QString("translations/RRJServer_") + serverLMSWidget->getLanguage(), "."); qtLanguageTranslator.load(QString("translations/RRJServer_") + serverLMSWidget->getLanguage(), ".");
qApp->installTranslator(&qtLanguageTranslator); qApp->installTranslator(&qtLanguageTranslator);
@@ -38,7 +39,7 @@ MainWindow::MainWindow(QWidget *parent) :
* */ * */
trayIcon = new QSystemTrayIcon(this); trayIcon = new QSystemTrayIcon(this);
//trayIcon->setIcon(this->style()->standardIcon(QStyle::SP_ComputerIcon)); //trayIcon->setIcon(this->style()->standardIcon(QStyle::SP_ComputerIcon));
trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ.png")); trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_stop.png"));
/* После чего создаем контекстное меню для иконки трея*/ /* После чего создаем контекстное меню для иконки трея*/
trayMenu = new QMenu(this); trayMenu = new QMenu(this);
@@ -66,7 +67,7 @@ MainWindow::MainWindow(QWidget *parent) :
slot_Tray_ShowMessage(tr("Starting the server...")); slot_Tray_ShowMessage(tr("Starting the server..."));
QTimer::singleShot(1000,this,&MainWindow::slot_LazyInitialization); QTimer::singleShot(1000, this, &MainWindow::slot_LazyInitialization);
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
@@ -151,11 +152,6 @@ void MainWindow::slot_TrayMenu_HideWindow()
this->hide(); this->hide();
action_ShowWindow->setEnabled(true); action_ShowWindow->setEnabled(true);
action_HideWindow->setEnabled(false); action_HideWindow->setEnabled(false);
/*
slot_Tray_ShowMessage(tr("The application is minimized to the tray.\n"
"To maximize the application window, click the application icon in the tray."));
*/
} }
void MainWindow::slot_TrayMenu_Exit() void MainWindow::slot_TrayMenu_Exit()
@@ -167,9 +163,26 @@ void MainWindow::slot_TrayMenu_Exit()
void MainWindow::slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg) void MainWindow::slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg)
{ {
QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::MessageIcon(iconMsg); QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::MessageIcon(iconMsg);
trayIcon->showMessage(tr("Server MPS"), trayIcon->showMessage(tr("Server MPS"), textMsg, icon, 100);
textMsg, }
icon, 100);
void MainWindow::slot_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization)
{
if(stateServer == EStateServer::started)
{
if(stateBlockAutorization == EStateBlockAutorization::unblocked)
{
trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_start.png"));
}
else
{
trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_lock.png"));
}
}
else
{
trayIcon->setIcon(QPixmap(":/resources/PngServerRRJ_stop.png"));
}
} }
void MainWindow::slot_LazyInitialization() void MainWindow::slot_LazyInitialization()
@@ -209,7 +222,7 @@ void MainWindow::errorCheck()
slot_TrayMenu_ShowWindow(); slot_TrayMenu_ShowWindow();
//выключение с задержкой, так как eventLoop инициализируется позже //выключение с задержкой, так как eventLoop инициализируется позже
QTimer::singleShot(1000,this,&MainWindow::slot_TrayMenu_Exit); QTimer::singleShot(1000, this, &MainWindow::slot_TrayMenu_Exit);
} }
} }

View File

@@ -52,11 +52,14 @@ public slots:
//Слот вывода сообщения из трея //Слот вывода сообщения из трея
void slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg = QSystemTrayIcon::Information); void slot_Tray_ShowMessage(QString textMsg, QSystemTrayIcon::MessageIcon iconMsg = QSystemTrayIcon::Information);
//Слот изменения иконки трея о статусе Сервера
void slot_updateStateServer(EStateServer stateServer, EStateBlockAutorization stateBlockAutorization);
//Слот отложенной инициализации //Слот отложенной инициализации
void slot_LazyInitialization(); void slot_LazyInitialization();
void slot_hasError(int code); void slot_hasError(int code);
private: private:
void exit(); void exit();
void errorCheck(); void errorCheck();

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -34,56 +34,56 @@
<translation>Удалить</translation> <translation>Удалить</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="130"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="151"/>
<source>actual</source> <source>actual</source>
<translation>актуально</translation> <translation>актуально</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="136"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="157"/>
<source>update required</source> <source>update required</source>
<translation>требуется обновление</translation> <translation>требуется обновление</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="402"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="430"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="404"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="432"/>
<source>DM code</source> <source>DM code</source>
<translation>DM код</translation> <translation>DM код</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="402"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="430"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="404"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="432"/>
<source>ID</source> <source>ID</source>
<translation>ID</translation> <translation>ID</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="402"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="430"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="404"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="432"/>
<source>Procedure AMM</source> <source>Procedure AMM</source>
<translation>Процедура AMM</translation> <translation>Процедура AMM</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="402"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="430"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="404"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="432"/>
<source>Canplay</source> <source>Canplay</source>
<translation>Режимы</translation> <translation>Режимы</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.ui" line="144"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.ui" line="144"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="402"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="430"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="404"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="432"/>
<source>Status</source> <source>Status</source>
<translation>Статус</translation> <translation>Статус</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="509"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="537"/>
<source>The deletion will be irrevocable. <source>The deletion will be irrevocable.
Delete it anyway?</source> Delete it anyway?</source>
<translation>Удаление будет безвозвратным. <translation>Удаление будет безвозвратным.
Всё равно удалить?</translation> Всё равно удалить?</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="330"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="358"/>
<location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="352"/> <location filename="../LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp" line="380"/>
<source>Assign this task?</source> <source>Assign this task?</source>
<translation>Назначить эту задачу?</translation> <translation>Назначить эту задачу?</translation>
</message> </message>
@@ -109,73 +109,73 @@ Delete it anyway?</source>
<translation>Задача</translation> <translation>Задача</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="61"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="64"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="89"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="92"/>
<source>Name</source> <source>Name</source>
<translation>Имя</translation> <translation>Имя</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="96"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="99"/>
<source>DM Code</source> <source>DM Code</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="111"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="114"/>
<source>Completion Report</source> <source>Completion Report</source>
<translation>Отчет о выполнении</translation> <translation>Отчет о выполнении</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="171"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="200"/>
<source>Checkup</source>
<translation>На проверке</translation>
</message>
<message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="226"/>
<source>Failed</source> <source>Failed</source>
<translation>Неверно</translation> <translation>Неверно</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="197"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="252"/>
<source>Right</source>
<translation>Верно</translation>
</message>
<message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="35"/>
<source>Completed</source> <source>Completed</source>
<translation>Выполнена</translation> <translation>Выполнена</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="36"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.ui" line="174"/>
<source>New</source> <source>New</source>
<translation>Новая</translation> <translation>Новая</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="146"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="211"/>
<source>viewed</source> <source>viewed</source>
<translation>Просмотрено</translation> <translation>Просмотрено</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="87"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="152"/>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="148"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="213"/>
<source>completed</source> <source>completed</source>
<translation>выполнена</translation> <translation>выполнена</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="92"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="157"/>
<source>failed</source> <source>failed</source>
<translation>неверно</translation> <translation>неверно</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="97"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="162"/>
<source>checkup</source> <source>checkup</source>
<translation>на проверке</translation> <translation>на проверке</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="102"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="167"/>
<source>new</source> <source>new</source>
<translation>новая</translation> <translation>новая</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="170"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="236"/>
<source>Change task status? <source>Change task status?
The status will be set: The status will be set:
&apos;failed&apos;</source> &apos;failed&apos;</source>
@@ -184,7 +184,8 @@ The status will be set:
&apos;неверно&apos;</translation> &apos;неверно&apos;</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="176"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="286"/>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="292"/>
<source>Change task status? <source>Change task status?
The status will be set: The status will be set:
&apos;new&apos;</source> &apos;new&apos;</source>
@@ -193,8 +194,17 @@ The status will be set:
&apos;новая&apos;</translation> &apos;новая&apos;</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="197"/> <location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="314"/>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="203"/> <source>Change task status?
The status will be set:
&apos;checkup&apos;</source>
<translation>Изменить статус задачи?
Будет установлен статус:
&apos;на проверке&apos;</translation>
</message>
<message>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="258"/>
<location filename="../LibInstructorsAndTrainees/tasks/checkertask.cpp" line="264"/>
<source>Change task status? <source>Change task status?
The status will be set: The status will be set:
&apos;completed&apos;</source> &apos;completed&apos;</source>
@@ -328,56 +338,44 @@ The status will be set:
<translation>Восстановить</translation> <translation>Восстановить</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="38"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="39"/>
<source>Installed</source> <source>Installed</source>
<translation>Установлен</translation> <translation>Установлен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="43"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="44"/>
<source>Not installed</source> <source>Not installed</source>
<translation>Не установлен</translation> <translation>Не установлен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="50"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="51"/>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="62"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="63"/>
<source>Exist</source> <source>Exist</source>
<translation>Существует</translation> <translation>Существует</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="55"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="56"/>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="67"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="68"/>
<source>Not exist</source> <source>Not exist</source>
<translation>Не существует</translation> <translation>Не существует</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="83"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="84"/>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="93"/>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="104"/>
<source>Error!</source>
<translation>Ошибка!</translation>
</message>
<message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="83"/>
<source>Install PostgreSQL.</source> <source>Install PostgreSQL.</source>
<translation>Установите PostgreSQL.</translation> <translation>Установите PostgreSQL.</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="93"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="94"/>
<source>Failed to create user!</source> <source>Failed to create user!</source>
<translation>Ошибка создания пользователя!</translation> <translation>Ошибка создания пользователя!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="104"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="105"/>
<source>Failed to create Database!</source> <source>Failed to create Database!</source>
<translation>Ошибка создания Базы данных!</translation> <translation>Ошибка создания Базы данных!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="114"/> <location filename="../LibServer/settings/dialogcheckdb.cpp" line="115"/>
<source>Completed!</source>
<translation>Завершено!</translation>
</message>
<message>
<location filename="../LibServer/settings/dialogcheckdb.cpp" line="114"/>
<source>The database has been successfully restored!</source> <source>The database has been successfully restored!</source>
<translation>База данных успешно восстановлена!</translation> <translation>База данных успешно восстановлена!</translation>
</message> </message>
@@ -385,9 +383,14 @@ The status will be set:
<context> <context>
<name>DialogChekerTask</name> <name>DialogChekerTask</name>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/dialogchekertask.cpp" line="16"/> <location filename="../LibInstructorsAndTrainees/tasks/dialogchekertask.cpp" line="20"/>
<source>Check Task</source> <source>Check Task</source>
<translation>Проверка задачи</translation> <translation>Проверка Задачи</translation>
</message>
<message>
<location filename="../LibInstructorsAndTrainees/tasks/dialogchekertask.cpp" line="25"/>
<source>Status Task</source>
<translation>Статус Задачи</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -722,52 +725,45 @@ The status will be set:
<translation>Обновить Docs</translation> <translation>Обновить Docs</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="293"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="294"/>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="343"/>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="348"/>
<source>Error!</source>
<translation>Ошибка!</translation>
</message>
<message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="293"/>
<source>Driver PostgreSQL is not installed!</source> <source>Driver PostgreSQL is not installed!</source>
<translation>Драйвер PostgreSQL не установлен!</translation> <translation>Драйвер PostgreSQL не установлен!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="302"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="303"/>
<source>Superuser PostgreSQL authorization</source> <source>Superuser PostgreSQL authorization</source>
<translation>Авторизация суперпользователя PostgreSQL</translation> <translation>Авторизация суперпользователя PostgreSQL</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="343"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="344"/>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="348"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="349"/>
<source>Error connecting to PostgreSQL!</source> <source>Error connecting to PostgreSQL!</source>
<translation>Ошибка соединения с PostgreSQL!</translation> <translation>Ошибка соединения с PostgreSQL!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="344"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="345"/>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="349"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="350"/>
<source>Possible reasons:</source> <source>Possible reasons:</source>
<translation>Возможные причины:</translation> <translation>Возможные причины:</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="345"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="346"/>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="350"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="351"/>
<source>*superuser PostgreSQL login or password is incorrect;</source> <source>*superuser PostgreSQL login or password is incorrect;</source>
<translation>*логин или пароль суперпользователя PostgreSQL некорректен;</translation> <translation>*логин или пароль суперпользователя PostgreSQL некорректен;</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="346"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="347"/>
<source>*Port is incorrect.</source> <source>*Port is incorrect.</source>
<translation>*Порт некорректен.</translation> <translation>*Порт некорректен.</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="351"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="352"/>
<source>*Port is incorrect;</source> <source>*Port is incorrect;</source>
<translation>*Порт некорректен;</translation> <translation>*Порт некорректен;</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/settings/dialogsettingstray.cpp" line="352"/> <location filename="../LibServer/settings/dialogsettingstray.cpp" line="353"/>
<source>*file &apos;pg_hba.conf&apos; does not contain an entry for the IP address:</source> <source>*file &apos;pg_hba.conf&apos; does not contain an entry for the IP address:</source>
<translation>*файл &apos;pg_hba.conf не содержит записи доступа для IP адреса:</translation> <translation>*файл &apos;pg_hba.conf не содержит записи доступа для IP адреса:</translation>
</message> </message>
@@ -1109,32 +1105,32 @@ The changes will not be accepted.</source>
<translation>Удалить</translation> <translation>Удалить</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="310"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="313"/>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="312"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="315"/>
<source>ID</source> <source>ID</source>
<translation>ID</translation> <translation>ID</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="310"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="313"/>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="312"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="315"/>
<source>Status</source> <source>Status</source>
<translation>Статус</translation> <translation>Статус</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="310"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="313"/>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="312"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="315"/>
<source>Procedure FIM</source> <source>Procedure FIM</source>
<translation>Процедура FIM</translation> <translation>Процедура FIM</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="399"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="402"/>
<source>The deletion will be irrevocable. <source>The deletion will be irrevocable.
Delete it anyway?</source> Delete it anyway?</source>
<translation>Удаление будет безвозвратным. <translation>Удаление будет безвозвратным.
Всё равно удалить?</translation> Всё равно удалить?</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="443"/> <location filename="../LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp" line="446"/>
<source>Assign this task?</source> <source>Assign this task?</source>
<translation>Назначить эту задачу?</translation> <translation>Назначить эту задачу?</translation>
</message> </message>
@@ -1331,7 +1327,7 @@ Please reconnect to the server.</source>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/listsubproc.ui" line="31"/> <location filename="../LibInstructorsAndTrainees/tasks/listsubproc.ui" line="31"/>
<location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="124"/> <location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="126"/>
<source>DM code</source> <source>DM code</source>
<translation>DM код</translation> <translation>DM код</translation>
</message> </message>
@@ -1346,12 +1342,12 @@ Please reconnect to the server.</source>
<translation>Назначить</translation> <translation>Назначить</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="124"/> <location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="126"/>
<source>Subprocedure</source> <source>Subprocedure</source>
<translation>Подпроцедура</translation> <translation>Подпроцедура</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="124"/> <location filename="../LibInstructorsAndTrainees/tasks/listsubproc.cpp" line="126"/>
<source>Canplay</source> <source>Canplay</source>
<translation>Режимы</translation> <translation>Режимы</translation>
</message> </message>
@@ -1364,28 +1360,28 @@ Please reconnect to the server.</source>
<translation>АРМ инструктора Тренажёра процедур технического обслуживания RRJ-95NEW-100</translation> <translation>АРМ инструктора Тренажёра процедур технического обслуживания RRJ-95NEW-100</translation>
</message> </message>
<message> <message>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="170"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="166"/>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="218"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="231"/>
<source>Server MPS</source> <source>Server MPS</source>
<translation>Сервер ТПТО</translation> <translation>Сервер ТПТО</translation>
</message> </message>
<message> <message>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="219"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="232"/>
<source>Expand window</source> <source>Expand window</source>
<translation>Развернуть окно</translation> <translation>Развернуть окно</translation>
</message> </message>
<message> <message>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="220"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="233"/>
<source>Minimize window</source> <source>Minimize window</source>
<translation>Свернуть окно</translation> <translation>Свернуть окно</translation>
</message> </message>
<message> <message>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="221"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="234"/>
<source>Exit</source> <source>Exit</source>
<translation>Выход</translation> <translation>Выход</translation>
</message> </message>
<message> <message>
<location filename="../ProgramServerMPS/mainwindow.cpp" line="67"/> <location filename="../ProgramServerMPS/mainwindow.cpp" line="68"/>
<source>Starting the server...</source> <source>Starting the server...</source>
<translation>Запуск сервера...</translation> <translation>Запуск сервера...</translation>
</message> </message>
@@ -1414,12 +1410,12 @@ Please reconnect to the server.</source>
<translation>Отправить</translation> <translation>Отправить</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/messanger/messangerwidget.cpp" line="120"/> <location filename="../LibInstructorsAndTrainees/messanger/messangerwidget.cpp" line="123"/>
<source>Trainee</source> <source>Trainee</source>
<translation>Обучаемый</translation> <translation>Обучаемый</translation>
</message> </message>
<message> <message>
<location filename="../LibInstructorsAndTrainees/messanger/messangerwidget.cpp" line="129"/> <location filename="../LibInstructorsAndTrainees/messanger/messangerwidget.cpp" line="132"/>
<source>Instructor</source> <source>Instructor</source>
<translation>Инструктор</translation> <translation>Инструктор</translation>
</message> </message>
@@ -1609,92 +1605,81 @@ Please reconnect to the server.</source>
<translation>Версия материалов: </translation> <translation>Версия материалов: </translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.ui" line="395"/> <location filename="../LibServer/serverlmswidget.cpp" line="143"/>
<source>Authorization</source>
<translation>Авторизация</translation>
</message>
<message>
<location filename="../LibServer/serverlmswidget.cpp" line="139"/>
<source>Error PostgreSQL!</source> <source>Error PostgreSQL!</source>
<translation>Ошибка PostgreSQL!</translation> <translation>Ошибка PostgreSQL!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="223"/> <location filename="../LibServer/serverlmswidget.cpp" line="229"/>
<source>Server is started!</source> <source>Server is started!</source>
<translation>Сервер запущен!</translation> <translation>Сервер запущен!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="236"/> <location filename="../LibServer/serverlmswidget.cpp" line="247"/>
<source>Server is stoped!</source> <source>Server is stoped!</source>
<translation>Сервер остановлен!</translation> <translation>Сервер остановлен!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="246"/> <location filename="../LibServer/serverlmswidget.cpp" line="258"/>
<location filename="../LibServer/serverlmswidget.cpp" line="416"/>
<source>Error!</source>
<translation>Ошибка!</translation>
</message>
<message>
<location filename="../LibServer/serverlmswidget.cpp" line="246"/>
<source>Settings file could not be opened:</source> <source>Settings file could not be opened:</source>
<translation>Файл настроек не открыт:</translation> <translation>Файл настроек не открыт:</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="275"/> <location filename="../LibServer/serverlmswidget.cpp" line="287"/>
<location filename="../LibServer/serverlmswidget.cpp" line="338"/>
<source>Warning!</source>
<translation>Внимание!</translation>
</message>
<message>
<location filename="../LibServer/serverlmswidget.cpp" line="275"/>
<source>Database settings have been changed. <source>Database settings have been changed.
The server will be restarted.</source> The server will be restarted.</source>
<translation>Настройки Базы Данных были изменены. <translation>Настройки Базы Данных были изменены.
Сервер будет перезапущен.</translation> Сервер будет перезапущен.</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="338"/> <location filename="../LibServer/serverlmswidget.cpp" line="350"/>
<source>The file could not be opened </source> <source>The file could not be opened </source>
<translation>Файл не может быть открыт </translation> <translation>Файл не может быть открыт </translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="412"/> <location filename="../LibServer/serverlmswidget.cpp" line="426"/>
<location filename="../LibServer/serverlmswidget.cpp" line="416"/> <location filename="../LibServer/serverlmswidget.cpp" line="430"/>
<source>Database connection error!</source> <source>Database connection error!</source>
<translation>Ошибка подключения Базы данных!</translation> <translation>Ошибка подключения Базы данных!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="433"/> <location filename="../LibServer/serverlmswidget.cpp" line="447"/>
<source>Database connection OK!</source> <source>Database connection OK!</source>
<translation>База данных подключена!</translation> <translation>База данных подключена!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="447"/> <location filename="../LibServer/serverlmswidget.cpp" line="463"/>
<location filename="../LibServer/serverlmswidget.cpp" line="468"/>
<source>started</source> <source>started</source>
<translation>запущен</translation> <translation>запущен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="452"/> <location filename="../LibServer/serverlmswidget.cpp" line="468"/>
<source>locked</source>
<translation>заблокирован</translation>
</message>
<message>
<location filename="../LibServer/serverlmswidget.cpp" line="474"/>
<source>stoped</source> <source>stoped</source>
<translation>остановлен</translation> <translation>остановлен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="472"/> <location filename="../LibServer/serverlmswidget.cpp" line="490"/>
<source>connected</source> <source>connected</source>
<translation>подключен</translation> <translation>подключен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.cpp" line="481"/> <location filename="../LibServer/serverlmswidget.cpp" line="499"/>
<source>not connected</source> <source>not connected</source>
<translation>не подключен</translation> <translation>не подключен</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.h" line="114"/> <location filename="../LibServer/serverlmswidget.h" line="117"/>
<source>No Client files found!</source> <source>No Client files found!</source>
<translation>Файлы клиента не найдены!</translation> <translation>Файлы клиента не найдены!</translation>
</message> </message>
<message> <message>
<location filename="../LibServer/serverlmswidget.h" line="115"/> <location filename="../LibServer/serverlmswidget.h" line="118"/>
<source>* check Application for the presence of a folder with a build <source>* check Application for the presence of a folder with a build
* check SharedData for a folder with the base version and the name base</source> * check SharedData for a folder with the base version and the name base</source>
<translation>* проверьте Application на наличие папки со сборкой <translation>* проверьте Application на наличие папки со сборкой