mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
158 lines
4.6 KiB
C++
158 lines
4.6 KiB
C++
#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));
|
||
item->setToolTip(ColumnsTreeSubProc::clmnSP_title, subProc.title);
|
||
|
||
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
||
item->setCheckState(ColumnsTreeSubProc::clmnSP_title, Qt::Checked);
|
||
|
||
treeWidget->addTopLevelItem(item);
|
||
}
|
||
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
}
|