模板加载优化
This commit is contained in:
parent
c06a876370
commit
71c120ba2f
|
|
@ -41,6 +41,8 @@ signals:
|
||||||
void sig_NewTrack(QString strWellName, QString strSlfName, QString strLineName);//新建道
|
void sig_NewTrack(QString strWellName, QString strSlfName, QString strLineName);//新建道
|
||||||
void sig_NewTrack_No_Line(QString strWellName, QString strTrackName);//新建空白道,没有曲线
|
void sig_NewTrack_No_Line(QString strWellName, QString strTrackName);//新建空白道,没有曲线
|
||||||
void sig_AddLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);//新建曲线
|
void sig_AddLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);//新建曲线
|
||||||
|
void sig_AddLine_Property(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
|
||||||
|
double newLeftScale, double newRightScale, QColor lineColor, double width, Qt::PenStyle lineStyle);//新建曲线,带属性
|
||||||
void sig_delLine(QString strWellName, QString strTrackName, QString strLineName);//删除曲线
|
void sig_delLine(QString strWellName, QString strTrackName, QString strLineName);//删除曲线
|
||||||
//属性
|
//属性
|
||||||
//左刻度
|
//左刻度
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ private:
|
||||||
QtVariantPropertyManager *m_pVariantManager;
|
QtVariantPropertyManager *m_pVariantManager;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strSlfName;
|
QString m_strSlfName;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,11 @@ FormDraw::FormDraw(QWidget *parent, QString strWellName, QString strTrackName) :
|
||||||
|
|
||||||
|
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_AddLine(QString, QString, QString, QString)), this, SLOT(s_addLine(QString, QString, QString, QString)));
|
connect(CallManage::getInstance(), SIGNAL(sig_AddLine(QString, QString, QString, QString)), this, SLOT(s_addLine(QString, QString, QString, QString)));
|
||||||
|
connect(CallManage::getInstance(), SIGNAL(sig_AddLine_Property(QString, QString, QString, QString, double, double, QColor, double, Qt::PenStyle)),
|
||||||
|
this, SLOT(s_AddLine_Property(QString, QString, QString, QString, double, double, QColor, double, Qt::PenStyle)));
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_delLine(QString, QString, QString)), this, SLOT(s_delLine(QString, QString, QString)));
|
connect(CallManage::getInstance(), SIGNAL(sig_delLine(QString, QString, QString)), this, SLOT(s_delLine(QString, QString, QString)));
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, float)), this, SLOT(s_MouseMove(QString, QString, float)));
|
connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, float)), this, SLOT(s_MouseMove(QString, QString, float)));
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_addImageToPlot(QMyCustomPlot*, double, double, QString)), this, SLOT(s_addImageToPlot(QMyCustomPlot*, double, double, QString)));
|
//connect(CallManage::getInstance(), SIGNAL(sig_addImageToPlot(QMyCustomPlot*, double, double, QString)), this, SLOT(s_addImageToPlot(QMyCustomPlot*, double, double, QString)));
|
||||||
|
|
||||||
//s_addLine(1);
|
//s_addLine(1);
|
||||||
|
|
||||||
|
|
@ -134,6 +136,62 @@ void FormDraw::s_addLine(QString strSlfName, QString strWellName, QString strTra
|
||||||
m_listLineName.push_back(strLineName);
|
m_listLineName.push_back(strLineName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FormDraw::s_AddLine_Property(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
|
||||||
|
double newLeftScale, double newRightScale, QColor lineColor, double width, Qt::PenStyle lineStyle)
|
||||||
|
{
|
||||||
|
qDebug() << "FormDraw s_addLine";
|
||||||
|
|
||||||
|
//井名&道名不一致
|
||||||
|
if(m_strWellName == strWellName && m_strTrackName == strTrackName)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_listLineName.contains(strLineName))
|
||||||
|
{
|
||||||
|
qDebug() << "FormDraw strLineName already exist! " << strLineName;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName);
|
||||||
|
//背景设置成透明色
|
||||||
|
curv->setBackground(Qt::transparent);
|
||||||
|
curv->setStyleSheet("background: transparent;");
|
||||||
|
//
|
||||||
|
//QRect rect = this->rect();
|
||||||
|
//curv->setGeometry(rect.left(),rect.top(), rect.width(), rect.height());
|
||||||
|
|
||||||
|
double dHight = 0;
|
||||||
|
dHight = (g_iY2-g_iY1)*100.0/(double)g_iScale * g_dPixelPerCm;
|
||||||
|
|
||||||
|
qDebug() << "FormDraw dHight=" << QString::number((int)dHight-3184);
|
||||||
|
if(dHight>32767)
|
||||||
|
{
|
||||||
|
dHight = 32767;
|
||||||
|
}
|
||||||
|
|
||||||
|
//curv->setMaximumHeight((int)dHight);
|
||||||
|
//curv->setViewport(QRect(0, 0, g_iOneWidth, (int)dHight));//7500-3184
|
||||||
|
curv->setGeometry(0, 0, g_iOneWidth, (int)dHight);//7500-3184
|
||||||
|
|
||||||
|
|
||||||
|
//curv->resize(INT_MAX, INT_MAX); // 使用 INT_MAX 来避免16位整数的限制
|
||||||
|
// QSizePolicy policy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
// curv->setSizePolicy(policy);
|
||||||
|
|
||||||
|
initForm(curv, strSlfName, strLineName,
|
||||||
|
newLeftScale, newRightScale, lineColor, width, lineStyle);
|
||||||
|
curv->show();
|
||||||
|
|
||||||
|
//
|
||||||
|
m_listLineName.push_back(strLineName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void FormDraw::s_delLine(QString strWellName, QString strTrackName, QString strLineName)
|
void FormDraw::s_delLine(QString strWellName, QString strTrackName, QString strLineName)
|
||||||
{
|
{
|
||||||
qDebug() << "FormDraw s_delLine";
|
qDebug() << "FormDraw s_delLine";
|
||||||
|
|
@ -236,8 +294,12 @@ void FormDraw::s_MouseMove(QString strWellName, QString strTrackName, float dep)
|
||||||
void FormDraw::s_addImageToPlot(QMyCustomPlot* customPlot, double left_Low, double right_Hight, const QString imagePath)
|
void FormDraw::s_addImageToPlot(QMyCustomPlot* customPlot, double left_Low, double right_Hight, const QString imagePath)
|
||||||
{
|
{
|
||||||
//井名&道名不一致
|
//井名&道名不一致
|
||||||
if(m_strWellName == customPlot->m_strWellName && m_strTrackName == customPlot->m_strTrackName)
|
if(this->isActiveWindow() //当前活动窗口
|
||||||
|
&& m_strWellName == customPlot->m_strWellName
|
||||||
|
&& m_strTrackName == customPlot->m_strTrackName
|
||||||
|
&& m_listLineName.contains(customPlot->m_strLineName))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -401,7 +463,8 @@ void FormDraw::setupSelectionDemo(QMyCustomPlot *customPlot)
|
||||||
if(right_Hight-left_Low>5)
|
if(right_Hight-left_Low>5)
|
||||||
{
|
{
|
||||||
//添加图形
|
//添加图形
|
||||||
emit CallManage::getInstance()->sig_addImageToPlot(customPlot, left_Low, right_Hight, ":/image/file.png");
|
//emit CallManage::getInstance()->sig_addImageToPlot(customPlot, left_Low, right_Hight, ":/image/file.png");
|
||||||
|
customPlot->addImageToPlot(left_Low, right_Hight, ":/image/file.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -431,7 +494,8 @@ void FormDraw::setupSelectionDemo(QMyCustomPlot *customPlot)
|
||||||
if(right_Hight-left_Low>1)
|
if(right_Hight-left_Low>1)
|
||||||
{
|
{
|
||||||
//添加图形
|
//添加图形
|
||||||
emit CallManage::getInstance()->sig_addImageToPlot(customPlot, left_Low, right_Hight, ":/image/file.png");
|
//emit CallManage::getInstance()->sig_addImageToPlot(customPlot, left_Low, right_Hight, ":/image/file.png");
|
||||||
|
customPlot->addImageToPlot(left_Low, right_Hight, ":/image/file.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -464,7 +528,8 @@ void FormDraw::s_selectionRectAccepted(const QRect &rect, QMouseEvent *event)
|
||||||
// double y2 = widget->yAxis->pixelToCoord(rect.bottom());
|
// double y2 = widget->yAxis->pixelToCoord(rect.bottom());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLineName)
|
void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLineName,
|
||||||
|
double newLeftScale, double newRightScale, QColor lineColor, double width, Qt::PenStyle lineStyle)
|
||||||
{
|
{
|
||||||
CLogIO *logio=new CLogIO();
|
CLogIO *logio=new CLogIO();
|
||||||
logio->Open(strSlfName.toStdString().c_str(),CSlfIO::modeRead);
|
logio->Open(strSlfName.toStdString().c_str(),CSlfIO::modeRead);
|
||||||
|
|
@ -502,12 +567,21 @@ void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLi
|
||||||
QVector<double> x, y;
|
QVector<double> x, y;
|
||||||
for(int i=0; i<count; i++)
|
for(int i=0; i<count; i++)
|
||||||
{
|
{
|
||||||
if(vmax<val[i])vmax=val[i];
|
if(newLeftScale==-9999)
|
||||||
if(vmin>val[i])vmin=val[i];
|
{
|
||||||
|
if(vmax<val[i])vmax=val[i];
|
||||||
|
if(vmin>val[i])vmin=val[i];
|
||||||
|
}
|
||||||
//
|
//
|
||||||
x.append(-(sdep+ rlev*i));
|
x.append(-(sdep+ rlev*i));
|
||||||
y.append(val[i]);
|
y.append(val[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(newLeftScale!=-9999)
|
||||||
|
{
|
||||||
|
vmax = newRightScale;
|
||||||
|
vmin = newLeftScale;
|
||||||
|
}
|
||||||
//赋值
|
//赋值
|
||||||
m_vmax = vmax;
|
m_vmax = vmax;
|
||||||
m_vmin = vmin;
|
m_vmin = vmin;
|
||||||
|
|
@ -566,8 +640,15 @@ void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLi
|
||||||
// x.append(-(sdep+ rlev*i));
|
// x.append(-(sdep+ rlev*i));
|
||||||
// y.append(val[i]);
|
// y.append(val[i]);
|
||||||
// }
|
// }
|
||||||
addRandomGraph(widget, x, y, strSlfName, strLineName);
|
|
||||||
|
|
||||||
|
if(newLeftScale!=-9999)
|
||||||
|
{
|
||||||
|
addRandomGraph(widget, x, y, strSlfName, strLineName,
|
||||||
|
newLeftScale, newRightScale, lineColor, width, lineStyle);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
addRandomGraph(widget, x, y, strSlfName, strLineName);
|
||||||
|
}
|
||||||
|
|
||||||
//支持框选
|
//支持框选
|
||||||
setupSelectionDemo(widget);
|
setupSelectionDemo(widget);
|
||||||
|
|
@ -576,7 +657,8 @@ void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLi
|
||||||
widget->replot();
|
widget->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormDraw::addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName)
|
void FormDraw::addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName,
|
||||||
|
double newLeftScale, double newRightScale, QColor newlineColor, double width, Qt::PenStyle lineStyle)
|
||||||
{
|
{
|
||||||
widget->addGraph();
|
widget->addGraph();
|
||||||
if(strLineName=="")
|
if(strLineName=="")
|
||||||
|
|
@ -586,31 +668,45 @@ void FormDraw::addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<
|
||||||
widget->graph()->setName(strLineName);
|
widget->graph()->setName(strLineName);
|
||||||
widget->graph()->setData(x, y);
|
widget->graph()->setData(x, y);
|
||||||
|
|
||||||
widget->graph()->setLineStyle((QCPGraph::LineStyle)(1));//曲线
|
if(newLeftScale!=-9999)
|
||||||
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(std::rand()%5+1));
|
{
|
||||||
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(QCPGraph::lsLine));//曲线
|
widget->graph()->setLineStyle((QCPGraph::LineStyle)(lineStyle));//曲线
|
||||||
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(QCPGraph::lsImpulse));//杆状
|
|
||||||
|
|
||||||
// if (std::rand()%100 > 50)
|
widget->graph()->setScatterStyle(QCPScatterStyle((QCPScatterStyle::ScatterShape)(1)));
|
||||||
// widget->graph()->setScatterStyle(QCPScatterStyle((QCPScatterStyle::ScatterShape)(std::rand()%14+1)));
|
|
||||||
|
|
||||||
widget->graph()->setScatterStyle(QCPScatterStyle((QCPScatterStyle::ScatterShape)(1)));
|
QPen graphPen;
|
||||||
// widget->graph()->setScatterStyle(QCPScatterStyle(QPixmap(":/image/file.png")));
|
graphPen.setColor(newlineColor);
|
||||||
|
graphPen.setWidthF(width);
|
||||||
|
graphPen.setStyle(lineStyle);//实线
|
||||||
|
widget->graph()->setPen(graphPen);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
widget->graph()->setLineStyle((QCPGraph::LineStyle)(1));//曲线
|
||||||
|
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(std::rand()%5+1));
|
||||||
|
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(QCPGraph::lsLine));//曲线
|
||||||
|
//widget->graph()->setLineStyle((QCPGraph::LineStyle)(QCPGraph::lsImpulse));//杆状
|
||||||
|
|
||||||
//widget->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 5));
|
// if (std::rand()%100 > 50)
|
||||||
|
// widget->graph()->setScatterStyle(QCPScatterStyle((QCPScatterStyle::ScatterShape)(std::rand()%14+1)));
|
||||||
|
|
||||||
QPen graphPen;
|
widget->graph()->setScatterStyle(QCPScatterStyle((QCPScatterStyle::ScatterShape)(1)));
|
||||||
QColor lineColor = QColor(std::rand()%245+10, std::rand()%245+10, std::rand()%245+10);
|
// widget->graph()->setScatterStyle(QCPScatterStyle(QPixmap(":/image/file.png")));
|
||||||
graphPen.setColor(lineColor);
|
|
||||||
//graphPen.setWidthF(std::rand()/(double)RAND_MAX*2+1);
|
|
||||||
double dWidth = 2;
|
|
||||||
graphPen.setWidthF(dWidth);
|
|
||||||
graphPen.setStyle(Qt::SolidLine);//实线
|
|
||||||
widget->graph()->setPen(graphPen);
|
|
||||||
//widget->replot();
|
|
||||||
|
|
||||||
|
//widget->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 5));
|
||||||
|
|
||||||
|
QPen graphPen;
|
||||||
|
newlineColor = QColor(std::rand()%245+10, std::rand()%245+10, std::rand()%245+10);
|
||||||
|
graphPen.setColor(newlineColor);
|
||||||
|
//graphPen.setWidthF(std::rand()/(double)RAND_MAX*2+1);
|
||||||
|
width = 2;
|
||||||
|
graphPen.setWidthF(width);
|
||||||
|
graphPen.setStyle(Qt::SolidLine);//实线
|
||||||
|
widget->graph()->setPen(graphPen);
|
||||||
|
//widget->replot();
|
||||||
|
}
|
||||||
//道-对象
|
//道-对象
|
||||||
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strLineName, lineColor, dWidth, m_vmax, m_vmin);
|
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strLineName, newlineColor, width, m_vmax, m_vmin);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ public slots:
|
||||||
void dropEvent(QDropEvent* event);
|
void dropEvent(QDropEvent* event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
|
|
||||||
|
|
@ -47,8 +48,10 @@ public:
|
||||||
float m_vmin;
|
float m_vmin;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void initForm(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
|
void initForm(QMyCustomPlot *widget, QString strSlfName, QString strLineName,
|
||||||
void addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName);
|
double newLeftScale=-9999, double newRightScale=-9999, QColor lineColor=QColor(0,0,0), double width=1, Qt::PenStyle lineStyle=Qt::SolidLine);
|
||||||
|
void addRandomGraph(QMyCustomPlot *widget, QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName,
|
||||||
|
double newLeftScale=-9999, double newRightScale=-9999, QColor lineColor=QColor(0,0,0), double width=1, Qt::PenStyle lineStyle=Qt::SolidLine);
|
||||||
void setupLineStyleDemo(QMyCustomPlot *customPlot);
|
void setupLineStyleDemo(QMyCustomPlot *customPlot);
|
||||||
void setupSelectionDemo(QMyCustomPlot *customPlot);
|
void setupSelectionDemo(QMyCustomPlot *customPlot);
|
||||||
|
|
||||||
|
|
@ -58,6 +61,9 @@ signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
|
void s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
|
||||||
|
void s_AddLine_Property(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
|
||||||
|
double newLeftScale, double newRightScale, QColor lineColor, double width, Qt::PenStyle lineStyle);//新建曲线,带属性
|
||||||
|
|
||||||
void s_delLine(QString strWellName, QString strTrackName, QString strLineName);
|
void s_delLine(QString strWellName, QString strTrackName, QString strLineName);
|
||||||
void s_MouseMove(QString strWellName, QString strTrackName, float dep);
|
void s_MouseMove(QString strWellName, QString strTrackName, float dep);
|
||||||
void s_handleRectRangeChange(QCPRange newRange);
|
void s_handleRectRangeChange(QCPRange newRange);
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ public slots:
|
||||||
float vMin, float vMax);
|
float vMin, float vMax);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strSlfName;
|
QString m_strSlfName;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ private:
|
||||||
Ui::FormTrack *ui;
|
Ui::FormTrack *ui;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ private:
|
||||||
Ui::FormWell *ui;
|
Ui::FormWell *ui;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ void MainWindow::initToolBar()
|
||||||
|
|
||||||
m_newAc = new QAction(newFileIcon, "新建项目", this);
|
m_newAc = new QAction(newFileIcon, "新建项目", this);
|
||||||
m_openAc = new QAction(openFileIcon, "打开项目", this);
|
m_openAc = new QAction(openFileIcon, "打开项目", this);
|
||||||
m_grepAc = new QAction(grepIcon, "启用缩放", this);
|
m_grepAc = new QAction(grepIcon, "可视解释", this);//启用缩放
|
||||||
m_compileAc = new QAction(compileIcon, "新建道", this);
|
m_compileAc = new QAction(compileIcon, "新建道", this);
|
||||||
m_runAc = new QAction(runIcon, "保存图像", this);
|
m_runAc = new QAction(runIcon, "保存图像", this);
|
||||||
m_debugAc = new QAction(debugIcon, "画图", this);
|
m_debugAc = new QAction(debugIcon, "画图", this);
|
||||||
|
|
@ -196,7 +196,7 @@ void MainWindow::initToolBar()
|
||||||
|
|
||||||
connect(m_newAc, &QAction::triggered, this, &MainWindow::s_New);
|
connect(m_newAc, &QAction::triggered, this, &MainWindow::s_New);
|
||||||
connect(m_openAc, &QAction::triggered, this, &MainWindow::s_Open);
|
connect(m_openAc, &QAction::triggered, this, &MainWindow::s_Open);
|
||||||
connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize);
|
connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_showView);//s_Risize
|
||||||
connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne);
|
connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne);
|
||||||
connect(m_runAc, &QAction::triggered, this, &MainWindow::s_SaveImage);
|
connect(m_runAc, &QAction::triggered, this, &MainWindow::s_SaveImage);
|
||||||
connect(m_debugAc, &QAction::triggered, this, &MainWindow::s_DrawImg);
|
connect(m_debugAc, &QAction::triggered, this, &MainWindow::s_DrawImg);
|
||||||
|
|
@ -238,42 +238,42 @@ void MainWindow::initWorkSpaceView()
|
||||||
|
|
||||||
|
|
||||||
//----
|
//----
|
||||||
MainWindowCurve *mainWindowNew2 = new MainWindowCurve();//中间工作区
|
//MainWindowCurve *mainWindowNew2 = new MainWindowCurve();//中间工作区
|
||||||
m_centerWidgets->addTab(mainWindowNew2, "解释视图2");
|
//m_centerWidgets->addTab(mainWindowNew2, "解释视图2");
|
||||||
|
|
||||||
//----
|
//----
|
||||||
MainWindowNew *mainWindowNew = new MainWindowNew();//中间工作区
|
//MainWindowNew *mainWindowNew = new MainWindowNew();//中间工作区
|
||||||
m_centerWidgets->addTab(mainWindowNew, "解释视图");
|
//m_centerWidgets->addTab(mainWindowNew, "解释视图");
|
||||||
|
|
||||||
//
|
//
|
||||||
//加载插件显示
|
//加载插件显示
|
||||||
QWidget * pMyWidget = CallPlugin::getInstance()->getPluginWidget(MYUNITPLUGIN, NULL);
|
// QWidget * pMyWidget = CallPlugin::getInstance()->getPluginWidget(MYUNITPLUGIN, NULL);
|
||||||
if (pMyWidget != nullptr)
|
// if (pMyWidget != nullptr)
|
||||||
{
|
// {
|
||||||
//
|
// //
|
||||||
//直方图,获取当前工程下的slf
|
// //直方图,获取当前工程下的slf
|
||||||
QVector<QString> vecSlfList;
|
// QVector<QString> vecSlfList;
|
||||||
QVector<QString> vecWellList;
|
// QVector<QString> vecWellList;
|
||||||
bool bRet = getAllSlf(g_prjname, vecSlfList, vecWellList);
|
// bool bRet = getAllSlf(g_prjname, vecSlfList, vecWellList);
|
||||||
if(bRet)
|
// if(bRet)
|
||||||
{
|
// {
|
||||||
for(int i=0; i<vecWellList.size(); i++)
|
// for(int i=0; i<vecWellList.size(); i++)
|
||||||
{
|
// {
|
||||||
qDebug() << "vecWellList:" << QString::number(i+1) << "=" << vecWellList[i];
|
// qDebug() << "vecWellList:" << QString::number(i+1) << "=" << vecWellList[i];
|
||||||
}
|
// }
|
||||||
for(int i=0; i<vecSlfList.size(); i++)
|
// for(int i=0; i<vecSlfList.size(); i++)
|
||||||
{
|
// {
|
||||||
qDebug() << "vecSlfList:" << QString::number(i+1) << "=" << vecSlfList[i];
|
// qDebug() << "vecSlfList:" << QString::number(i+1) << "=" << vecSlfList[i];
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
//关联信号槽,数据传递vecSlfList, vecWellList
|
// //关联信号槽,数据传递vecSlfList, vecWellList
|
||||||
//...
|
// //...
|
||||||
|
|
||||||
//关联信号槽,数据查看
|
// //关联信号槽,数据查看
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_testPlugin(QString)), pMyWidget, SLOT(s_testPlugin(QString)));
|
// connect(CallManage::getInstance(), SIGNAL(sig_testPlugin(QString)), pMyWidget, SLOT(s_testPlugin(QString)));
|
||||||
//
|
// //
|
||||||
m_centerWidgets->addTab(pMyWidget, "插件视图");
|
// m_centerWidgets->addTab(pMyWidget, "插件视图");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
qDebug() << "工作区 id:" << m_stackedWidget_Center->winId() << ", name:" << m_stackedWidget_Center->windowTitle();
|
qDebug() << "工作区 id:" << m_stackedWidget_Center->winId() << ", name:" << m_stackedWidget_Center->windowTitle();
|
||||||
}
|
}
|
||||||
|
|
@ -327,6 +327,41 @@ void MainWindow::s_Open()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//可视解释
|
||||||
|
void MainWindow::s_showView()
|
||||||
|
{
|
||||||
|
if(g_prjname=="")
|
||||||
|
{
|
||||||
|
QMessageBox::information(nullptr, "提示", "请先打开项目!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Logdata
|
||||||
|
QString folderPath;
|
||||||
|
folderPath = GetLogdataPath();
|
||||||
|
folderPath = folderPath + g_prjname;
|
||||||
|
//folderPath = folderPath + "/multiwell.json";
|
||||||
|
|
||||||
|
//打开
|
||||||
|
QString fileFull = "";
|
||||||
|
fileFull = QFileDialog::getOpenFileName(this,
|
||||||
|
tr("选择模板"),
|
||||||
|
folderPath,
|
||||||
|
tr("多井图文件(*.json)"));
|
||||||
|
if (fileFull.isEmpty())
|
||||||
|
{
|
||||||
|
//----
|
||||||
|
MainWindowCurve *mainWindowCurve = new MainWindowCurve();//中间工作区
|
||||||
|
m_centerWidgets->addTab(mainWindowCurve, "解释视图");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----
|
||||||
|
MainWindowCurve *mainWindowCurve = new MainWindowCurve();//中间工作区
|
||||||
|
m_centerWidgets->addTab(mainWindowCurve, "解释视图");
|
||||||
|
mainWindowCurve->s_Open(fileFull);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::s_Risize()
|
void MainWindow::s_Risize()
|
||||||
{
|
{
|
||||||
emit CallManage::getInstance()->sig_Risize();
|
emit CallManage::getInstance()->sig_Risize();
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,8 @@ public slots:
|
||||||
void s_DrawImg();
|
void s_DrawImg();
|
||||||
void s_DrawLine();
|
void s_DrawLine();
|
||||||
|
|
||||||
|
//可视解释
|
||||||
|
void s_showView();
|
||||||
|
|
||||||
void s_ShowCurve(QString strSlfName, QString strName);//曲线数据查看
|
void s_ShowCurve(QString strSlfName, QString strName);//曲线数据查看
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include "CallManage.h"
|
#include "CallManage.h"
|
||||||
#include <QAbstractItemView>
|
#include <QAbstractItemView>
|
||||||
|
#include "qtcommonclass.h"
|
||||||
|
|
||||||
extern int g_iOneWidth; //道宽
|
extern int g_iOneWidth; //道宽
|
||||||
extern QString g_prjname;
|
extern QString g_prjname;
|
||||||
|
|
@ -19,6 +20,9 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
QtCommonClass *qtCommon = new QtCommonClass(this);
|
||||||
|
m_strUuid = qtCommon->getUUid();
|
||||||
|
|
||||||
// 设置工具栏的位置,此处设置为在左侧
|
// 设置工具栏的位置,此处设置为在左侧
|
||||||
addToolBar(Qt::LeftToolBarArea, ui->toolBar);
|
addToolBar(Qt::LeftToolBarArea, ui->toolBar);
|
||||||
|
|
||||||
|
|
@ -90,7 +94,7 @@ void MainWindowCurve::initMainToolBar()
|
||||||
|
|
||||||
//Main工具栏
|
//Main工具栏
|
||||||
QAction* m_saveAc = nullptr; //保存
|
QAction* m_saveAc = nullptr; //保存
|
||||||
QAction* m_openAc = nullptr; //打开
|
//QAction* m_openAc = nullptr; //打开
|
||||||
QAction* m_compileAc = nullptr; //
|
QAction* m_compileAc = nullptr; //
|
||||||
QAction* m_runAc = nullptr;//
|
QAction* m_runAc = nullptr;//
|
||||||
QAction* m_debugAc = nullptr; //
|
QAction* m_debugAc = nullptr; //
|
||||||
|
|
@ -98,7 +102,7 @@ void MainWindowCurve::initMainToolBar()
|
||||||
QAction* m_loadAc = nullptr; //加载
|
QAction* m_loadAc = nullptr; //加载
|
||||||
|
|
||||||
m_saveAc = new QAction(newFileIcon, "保存", this);
|
m_saveAc = new QAction(newFileIcon, "保存", this);
|
||||||
m_openAc = new QAction(openFileIcon, "打开", this);
|
//m_openAc = new QAction(openFileIcon, "打开", this);
|
||||||
m_grepAc = new QAction(grepIcon, "锁头", this);
|
m_grepAc = new QAction(grepIcon, "锁头", this);
|
||||||
m_compileAc = new QAction(compileIcon, "加载图文件", this);
|
m_compileAc = new QAction(compileIcon, "加载图文件", this);
|
||||||
m_runAc = new QAction(runIcon, "设置井", this);
|
m_runAc = new QAction(runIcon, "设置井", this);
|
||||||
|
|
@ -109,7 +113,7 @@ void MainWindowCurve::initMainToolBar()
|
||||||
|
|
||||||
//add QAction to Widget.
|
//add QAction to Widget.
|
||||||
ui->mainToolBar->addAction(m_saveAc);
|
ui->mainToolBar->addAction(m_saveAc);
|
||||||
ui->mainToolBar->addAction(m_openAc);
|
//ui->mainToolBar->addAction(m_openAc);
|
||||||
ui->mainToolBar->addAction(m_grepAc);
|
ui->mainToolBar->addAction(m_grepAc);
|
||||||
ui->mainToolBar->addAction(m_compileAc);
|
ui->mainToolBar->addAction(m_compileAc);
|
||||||
ui->mainToolBar->addAction(m_runAc);
|
ui->mainToolBar->addAction(m_runAc);
|
||||||
|
|
@ -117,7 +121,7 @@ void MainWindowCurve::initMainToolBar()
|
||||||
ui->mainToolBar->addAction(m_loadAc);
|
ui->mainToolBar->addAction(m_loadAc);
|
||||||
|
|
||||||
connect(m_saveAc, &QAction::triggered, this, &MainWindowCurve::s_Save);
|
connect(m_saveAc, &QAction::triggered, this, &MainWindowCurve::s_Save);
|
||||||
connect(m_openAc, &QAction::triggered, this, &MainWindowCurve::s_Open);
|
//connect(m_openAc, &QAction::triggered, this, &MainWindowCurve::s_Open);
|
||||||
|
|
||||||
// connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize);
|
// connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize);
|
||||||
// connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne);
|
// connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne);
|
||||||
|
|
@ -234,25 +238,8 @@ void MainWindowCurve::s_Save()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindowCurve::s_Open()
|
void MainWindowCurve::s_Open(QString fileFull)
|
||||||
{
|
{
|
||||||
//Logdata
|
|
||||||
QString folderPath;
|
|
||||||
folderPath = GetLogdataPath();
|
|
||||||
folderPath = folderPath + g_prjname;
|
|
||||||
//folderPath = folderPath + "/multiwell.json";
|
|
||||||
|
|
||||||
//打开
|
|
||||||
QString fileFull = "";
|
|
||||||
fileFull = QFileDialog::getOpenFileName(this,
|
|
||||||
tr("选择模板"),
|
|
||||||
folderPath,
|
|
||||||
tr("多井图文件(*.json)"));
|
|
||||||
if (fileFull.isEmpty())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString strPrjname = "";
|
QString strPrjname = "";
|
||||||
QJsonArray wellsArray;
|
QJsonArray wellsArray;
|
||||||
|
|
||||||
|
|
@ -356,6 +343,7 @@ void MainWindowCurve::DisplayWells(QJsonArray wellsArray)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//展示其中一口井
|
||||||
void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo)
|
void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo)
|
||||||
{
|
{
|
||||||
QString strWellName = "";
|
QString strWellName = "";
|
||||||
|
|
@ -534,6 +522,11 @@ void MainWindowCurve::DisplayLine_One(QJsonObject lineObjInfo)
|
||||||
QString strWellName = "";
|
QString strWellName = "";
|
||||||
QString strTrackName = "";
|
QString strTrackName = "";
|
||||||
QString strLineName = "";
|
QString strLineName = "";
|
||||||
|
double newLeftScale = 0;
|
||||||
|
double newRightScale = 500;
|
||||||
|
QColor lineColor = QColor(0,0,0);
|
||||||
|
double width = 3;
|
||||||
|
Qt::PenStyle lineStyle = Qt::SolidLine;
|
||||||
|
|
||||||
if (lineObjInfo.contains("SlfName"))
|
if (lineObjInfo.contains("SlfName"))
|
||||||
{
|
{
|
||||||
|
|
@ -568,10 +561,82 @@ void MainWindowCurve::DisplayLine_One(QJsonObject lineObjInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lineObjInfo.contains("vmin"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("vmin");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
newLeftScale = value.toDouble();
|
||||||
|
qDebug() << "vmin:" << QString::number(newLeftScale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineObjInfo.contains("vmax"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("vmax");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
newRightScale = value.toDouble();
|
||||||
|
qDebug() << "vmax:" << QString::number(newRightScale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lineObjInfo.contains("Width"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("Width");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
width = value.toDouble();
|
||||||
|
qDebug() << "Width:" << QString::number(width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lineObjInfo.contains("lineStyle"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("lineStyle");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
lineStyle = (Qt::PenStyle)value.toInt();
|
||||||
|
qDebug() << "lineStyle:" << QString::number(lineStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
if (lineObjInfo.contains("lineColorRed"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("lineColorRed");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
lineColor.setRed(value.toInt());
|
||||||
|
qDebug() << "lineColorRed:" << QString::number(value.toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
if (lineObjInfo.contains("lineColorGreen"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("lineColorGreen");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
lineColor.setGreen(value.toInt());
|
||||||
|
qDebug() << "lineColorGreen:" << QString::number(value.toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
if (lineObjInfo.contains("lineColorBlue"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("lineColorBlue");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
lineColor.setBlue(value.toInt());
|
||||||
|
qDebug() << "lineColorBlue:" << QString::number(value.toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
if (lineObjInfo.contains("lineColorAlpha"))
|
||||||
|
{
|
||||||
|
QJsonValue value = lineObjInfo.value("lineColorAlpha");
|
||||||
|
if (value.isDouble()) {
|
||||||
|
lineColor.setAlpha(value.toInt());
|
||||||
|
qDebug() << "lineColorAlpha:" << QString::number(value.toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(strLineName!="")
|
if(strLineName!="")
|
||||||
{
|
{
|
||||||
//新建曲线
|
//新建曲线
|
||||||
emit CallManage::getInstance()->sig_AddLine(strSlfName, strWellName, strTrackName, strLineName);
|
//emit CallManage::getInstance()->sig_AddLine(strSlfName, strWellName, strTrackName, strLineName);
|
||||||
|
emit CallManage::getInstance()->sig_AddLine_Property(strSlfName, strWellName, strTrackName, strLineName,
|
||||||
|
newLeftScale, newRightScale, lineColor, width, lineStyle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -673,6 +738,7 @@ void MainWindowCurve::s_NewWell(QString strWellName)
|
||||||
ui->tableWidget_2->setRowHeight(i, (int)dHight);//8020
|
ui->tableWidget_2->setRowHeight(i, (int)dHight);//8020
|
||||||
//
|
//
|
||||||
FormWell *widgetWell = new FormWell(this, strWellName);
|
FormWell *widgetWell = new FormWell(this, strWellName);
|
||||||
|
widgetWell->m_strUuid = m_strUuid;
|
||||||
ui->tableWidget_2->setCellWidget(i, columnCount, widgetWell);
|
ui->tableWidget_2->setCellWidget(i, columnCount, widgetWell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ public slots:
|
||||||
void dropEvent(QDropEvent* event);
|
void dropEvent(QDropEvent* event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QStringList m_listWell;
|
QStringList m_listWell;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -67,7 +68,7 @@ public slots:
|
||||||
void s_NewTrack();//新建道
|
void s_NewTrack();//新建道
|
||||||
//
|
//
|
||||||
void s_Save();//保存
|
void s_Save();//保存
|
||||||
void s_Open();//打开
|
void s_Open(QString fileFull);//打开
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOWCURVE_H
|
#endif // MAINWINDOWCURVE_H
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ private:
|
||||||
QPoint startPos;
|
QPoint startPos;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
bool m_press;//判断鼠标是否按下
|
bool m_press;//判断鼠标是否按下
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "qmycustomplot.h"
|
#include "qmycustomplot.h"
|
||||||
#include "CallManage.h"
|
#include "CallManage.h"
|
||||||
#include "geometryutils.h"
|
#include "geometryutils.h"
|
||||||
|
#include "TransparentDraggableRect.h"
|
||||||
|
|
||||||
QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) :
|
QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) :
|
||||||
QCustomPlot(parent)
|
QCustomPlot(parent)
|
||||||
|
|
@ -103,10 +104,23 @@ void QMyCustomPlot::onAddRect()
|
||||||
double right_Hight = xAxis->pixelToCoord(m_event->pos().y());//x轴展示深度
|
double right_Hight = xAxis->pixelToCoord(m_event->pos().y());//x轴展示深度
|
||||||
double left_Low = right_Hight-5;
|
double left_Low = right_Hight-5;
|
||||||
//添加图形
|
//添加图形
|
||||||
emit CallManage::getInstance()->sig_addImageToPlot(this, left_Low, right_Hight, ":/image/file.png");
|
//emit CallManage::getInstance()->sig_addImageToPlot(this, left_Low, right_Hight, ":/image/file.png");
|
||||||
|
addImageToPlot(left_Low, right_Hight, ":/image/file.png");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::addImageToPlot(double left_Low, double right_Hight, const QString imagePath)
|
||||||
|
{
|
||||||
|
// 在初始化代码中
|
||||||
|
TransparentDraggableRect *dragRect = new TransparentDraggableRect(this);
|
||||||
|
// 设置初始范围
|
||||||
|
dragRect->setRange(left_Low, right_Hight);
|
||||||
|
// 可选:设置颜色
|
||||||
|
dragRect->setColor(QColor(255, 100, 100, 80)); // 半透明红色
|
||||||
|
//最小宽度
|
||||||
|
dragRect->setMinWidth(5);
|
||||||
|
}
|
||||||
|
|
||||||
void QMyCustomPlot::onResetZoom()
|
void QMyCustomPlot::onResetZoom()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ protected:
|
||||||
virtual void mouseMoveEvent(QMouseEvent *event);
|
virtual void mouseMoveEvent(QMouseEvent *event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QString m_strUuid;
|
||||||
QString m_strSlfName;
|
QString m_strSlfName;
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
|
|
@ -43,6 +44,7 @@ public:
|
||||||
bool m_bDrawRect = true;
|
bool m_bDrawRect = true;
|
||||||
public:
|
public:
|
||||||
void init(QString strName, QVector<double> x, QVector<double> y);
|
void init(QString strName, QVector<double> x, QVector<double> y);
|
||||||
|
void addImageToPlot(double left_Low, double right_Hight, const QString imagePath);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void s_LineClicked(int index);
|
void s_LineClicked(int index);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user