Files
RRJServer/InstructorsAndTrainees/tasks/listsubproc.cpp

154 lines
4.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <QScrollBar>
#include "listsubproc.h"
#include "ui_listsubproc.h"
ListSubProc::ListSubProc(ConnectorToServer* connectorToServer, QWidget *parent) :
QWidget(parent),
ui(new Ui::ListSubProc),
connectorToServer(connectorToServer),
waitAnimationWidget(nullptr),
treeWidget(nullptr)
{
ui->setupUi(this);
treeWidget = new QTreeWidget();
ui->horizontalLayout_Tree->addWidget(treeWidget);
preparationTreeWidget();
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this);
connect(this->connectorToServer, &ConnectorToServer::signal_UpdateSubProcForDMCode, this, &ListSubProc::slot_UpdateSubProcForDMCode);
}
ListSubProc::~ListSubProc()
{
waitAnimationWidget->hideWithStop();
delete waitAnimationWidget;
delete treeWidget;
delete ui;
}
void ListSubProc::closeEvent(QCloseEvent *event)
{
}
void ListSubProc::resizeEvent(QResizeEvent *event)
{
setWidthColumnsTree();
QSize size = event->size();
waitAnimationWidget->resize(size);
}
void ListSubProc::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
reSetHeadTreeWidget();
}
}
void ListSubProc::setTask(TaskAmmFim *task)
{
this->task = *task;
ui->lbl_Title->setText(task->ammProcedure.title);
ui->lbl_DMCode->setText(task->ammProcedure.dmCode);
waitAnimationWidget->showWithPlay();
if(! connectorToServer->sendQueryListSubProc(this->task.ammProcedure.dmCode))
waitAnimationWidget->hideWithStop();
}
void ListSubProc::preparationTreeWidget()
{
treeWidget->setColumnCount(ColumnsTreeSubProc::clmnSP_count);
reSetHeadTreeWidget();
#ifdef PROJECT_TYPE_DEBUG
treeWidget->setColumnHidden(ColumnsTreeSubProc::clmnSP_canplay, false);
#else
treeWidget->setColumnHidden(ColumnsTreeSubProc::clmnSP_canplay, true);
#endif
}
void ListSubProc::reSetHeadTreeWidget()
{
QStringList listHeaders;
listHeaders = QStringList{tr("Subprocedure"), tr("DM code"), tr("Canplay")};
treeWidget->setHeaderLabels(listHeaders);
}
void ListSubProc::setWidthColumnsTree()
{
listWidthColumn.clear();
treeWidget->setColumnWidth(ColumnsTreeSubProc::clmnSP_title, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeSubProc::clmnSP_code, 250);
listWidthColumn.append(250);
treeWidget->setColumnWidth(ColumnsTreeSubProc::clmnSP_canplay, 50);
listWidthColumn.append(50);
treeWidget->setColumnWidth(ColumnsTreeSubProc::clmnSP_title, calculateWidth_0Column());
}
int ListSubProc::calculateWidth_0Column()
{
int widthHeader = treeWidget->width() - 25;
int width0Column = 0;
int widthSB = 0;
if(treeWidget->verticalScrollBar()->isVisible())
widthSB = treeWidget->verticalScrollBar()->size().width();
int cntColumns = treeWidget->columnCount();
int widthRightColumns = 0;
for (int i = 1; i < cntColumns; i++)
{
if(! treeWidget->isColumnHidden(i))
{//Колонка не скрыта
int w = listWidthColumn.at(i);
widthRightColumns += w;
}
}
width0Column = widthHeader - widthRightColumns - widthSB;
return width0Column;
}
QString ListSubProc::buildCanplay(ModeList modeList)
{
QString canplay = QString("%1/%2/%3/%4").arg(modeList.demo?"+":"-", modeList.train?"+":"-", modeList.exam?"+":"-", modeList.autoM?"+":"-");
return canplay;
}
void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
{
if(this->task.ammProcedure.dmCode == dmCode)
{
QList<SubProc> list = connectorToServer->getListSubProcForDMCode(dmCode);
for(SubProc subProc : list)
{
QTreeWidgetItem* item = new QTreeWidgetItem(treeWidget);
item->setIcon(0, QIcon(":/resources/icons/procedure.png"));
item->setText(ColumnsTreeSubProc::clmnSP_title, subProc.title);
item->setText(ColumnsTreeSubProc::clmnSP_code, subProc.dmCode);
item->setText(ColumnsTreeSubProc::clmnSP_canplay, buildCanplay(subProc.modeList));
treeWidget->addTopLevelItem(item);
}
waitAnimationWidget->hideWithStop();
}
}