mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Списки отображаются в виде дерева
This commit is contained in:
@@ -15,7 +15,7 @@ DialogListSubProc::DialogListSubProc(ConnectorToServer* connectorToServer, QWidg
|
||||
layout->addWidget(listSubProc);
|
||||
this->setWindowTitle(tr("List subprocedures"));
|
||||
|
||||
this->setMinimumSize(400, 200);
|
||||
this->setMinimumSize(1400, 700);
|
||||
this->setModal(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <QScrollBar>
|
||||
#include "listsubproc.h"
|
||||
#include "ui_listsubproc.h"
|
||||
|
||||
@@ -5,10 +6,16 @@ ListSubProc::ListSubProc(ConnectorToServer* connectorToServer, QWidget *parent)
|
||||
QWidget(parent),
|
||||
ui(new Ui::ListSubProc),
|
||||
connectorToServer(connectorToServer),
|
||||
waitAnimationWidget(nullptr)
|
||||
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);
|
||||
@@ -21,6 +28,7 @@ ListSubProc::~ListSubProc()
|
||||
{
|
||||
waitAnimationWidget->hideWithStop();
|
||||
delete waitAnimationWidget;
|
||||
delete treeWidget;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@@ -31,10 +39,23 @@ 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;
|
||||
@@ -48,6 +69,68 @@ void ListSubProc::setTask(TaskAmmFim *task)
|
||||
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)
|
||||
@@ -56,7 +139,13 @@ void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
|
||||
|
||||
for(SubProc subProc : list)
|
||||
{
|
||||
ui->listWidget->addItem(subProc.dmCode);
|
||||
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();
|
||||
|
||||
@@ -3,7 +3,15 @@
|
||||
|
||||
#include <QWidget>
|
||||
#include <QResizeEvent>
|
||||
#include "connectorToServer.h"
|
||||
#include <QTreeWidget>
|
||||
#include "connectortoserver.h"
|
||||
|
||||
enum ColumnsTreeSubProc{
|
||||
clmnSP_title = 0,
|
||||
clmnSP_code,
|
||||
clmnSP_canplay,
|
||||
clmnSP_count
|
||||
};
|
||||
|
||||
namespace Ui {
|
||||
class ListSubProc;
|
||||
@@ -19,9 +27,17 @@ public:
|
||||
|
||||
void closeEvent(QCloseEvent *event) override;
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
void changeEvent(QEvent * event) override;
|
||||
|
||||
void setTask(TaskAmmFim* task);
|
||||
|
||||
private:
|
||||
void preparationTreeWidget();
|
||||
void reSetHeadTreeWidget();
|
||||
void setWidthColumnsTree();
|
||||
int calculateWidth_0Column();
|
||||
QString buildCanplay(ModeList modeList);
|
||||
|
||||
public slots:
|
||||
void slot_UpdateSubProcForDMCode(QString dmCode);
|
||||
|
||||
@@ -33,6 +49,9 @@ private:
|
||||
TaskAmmFim task;
|
||||
|
||||
WaitAnimationWidget *waitAnimationWidget;
|
||||
|
||||
QTreeWidget* treeWidget;
|
||||
QList<int> listWidthColumn;
|
||||
};
|
||||
|
||||
#endif // LISTSUBPROC_H
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget"/>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_Tree"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
||||
@@ -530,9 +530,6 @@ void ProcessingSystem::processingClientQueryListSubProc(ClientHandler *client, Q
|
||||
QByteArray arrayAnswer = dataParser->getDocsAnswerParser()->listSubProc(list, dmCode);
|
||||
//client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM);
|
||||
client->sendFileBlockByteArray(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM);
|
||||
|
||||
int i = 0;
|
||||
i++;
|
||||
}
|
||||
|
||||
void ProcessingSystem::processingSendMessage(ClientMessage clientMessage)
|
||||
|
||||
Reference in New Issue
Block a user