fix: 合并main,解决冲突

pull/5/head
cbwu 7 months ago
commit 143df8703e

@ -14,6 +14,7 @@ QMAKE_PROJECT_DEPTH = 0
SOURCES += \
<<<<<<< HEAD
# Src/GDDC/gddcCmdDlg.cpp \
# Src/GDDC/gddcSet.cpp \
# Src/GDDC/gddcStateInfo.cpp \
@ -24,6 +25,18 @@ SOURCES += \
# encodemodelcamera.cpp \
# ffmpegvideodlg.cpp \
# Src/GDDC/gddcdlg.cpp \
=======
SDFPDlg.cpp \
Src/GDDC/gddcCmdDlg.cpp \
Src/GDDC/gddcSet.cpp \
Src/GDDC/gddcStateInfo.cpp \
Src/HomePage/homepagesetingwidget.cpp \
cffmpeg_decode.cpp \
customwebenginepage.cpp \
cwebengineview.cpp \
ffmpegvideodlg.cpp \
Src/GDDC/gddcdlg.cpp \
>>>>>>> 9cb45d43939c192a61d4fe2800b69ee9f4dd63d9
global.cpp \
# Src/HomePage/homepagedlg.cpp \
main.cpp \
@ -34,6 +47,7 @@ SOURCES += \
# rescueloadwidget.cpp
HEADERS += \
<<<<<<< HEAD
# DCFrameCkCmd.h \
# Src/GDDC/gddcCmdDlg.h \
# Src/GDDC/gddcSet.h \
@ -46,6 +60,20 @@ HEADERS += \
# encodemodelcamera.h \
# ffmpegvideodlg.h \
# Src/GDDC/gddcdlg.h \
=======
DCFrameCkCmd.h \
SDFPDlg.h \
Src/GDDC/gddcCmdDlg.h \
Src/GDDC/gddcSet.h \
Src/GDDC/gddcStateInfo.h \
Src/GDDC/structDefineMyslef.h \
Src/HomePage/homepagesetingwidget.h \
cffmpeg_decode.h \
customwebenginepage.h \
cwebengineview.h \
ffmpegvideodlg.h \
Src/GDDC/gddcdlg.h \
>>>>>>> 9cb45d43939c192a61d4fe2800b69ee9f4dd63d9
global.h \
# Src/HomePage/homepagedlg.h \
mainwindow.h \
@ -55,6 +83,7 @@ HEADERS += \
# rescueloadwidget.h
FORMS += \
<<<<<<< HEAD
# Src/GDDC/gddcCmdDlg.ui \
# Src/GDDC/gddcSet.ui \
# Src/GDDC/gddcStateInfo.ui \
@ -62,6 +91,16 @@ FORMS += \
# ffmpegvideodlg.ui \
# Src/GDDC/gddcdlg.ui \
# Src/HomePage/homepagedlg.ui \
=======
SDFPDlg.ui \
Src/GDDC/gddcCmdDlg.ui \
Src/GDDC/gddcSet.ui \
Src/GDDC/gddcStateInfo.ui \
Src/HomePage/homepagesetingwidget.ui \
ffmpegvideodlg.ui \
Src/GDDC/gddcdlg.ui \
Src/HomePage/homepagedlg.ui \
>>>>>>> 9cb45d43939c192a61d4fe2800b69ee9f4dd63d9
mainwindow.ui \
# modelcameradlg.ui \
# qweb.ui \

@ -0,0 +1,104 @@
QT += core gui webenginewidgets
QT += network
QT += quickwidgets qml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# CONFIG += console
QMAKE_PROJECT_DEPTH = 0
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
# Src/GDDC/gddcCmdDlg.cpp \
# Src/GDDC/gddcSet.cpp \
# Src/GDDC/gddcStateInfo.cpp \
# Src/HomePage/homepagesetingwidget.cpp \
# cffmpeg_decode.cpp \
# customwebenginepage.cpp \
# cwebengineview.cpp \
# encodemodelcamera.cpp \
# ffmpegvideodlg.cpp \
# Src/GDDC/gddcdlg.cpp \
SDFPDlg.cpp \
global.cpp \
# Src/HomePage/homepagedlg.cpp \
main.cpp \
mainwindow.cpp \
# modelcameradlg.cpp \
# qweb.cpp \
# rescueload.cpp \
# rescueloadwidget.cpp
HEADERS += \
# DCFrameCkCmd.h \
# Src/GDDC/gddcCmdDlg.h \
# Src/GDDC/gddcSet.h \
# Src/GDDC/gddcStateInfo.h \
# Src/GDDC/structDefineMyslef.h \
# Src/HomePage/homepagesetingwidget.h \
# cffmpeg_decode.h \
# customwebenginepage.h \
# cwebengineview.h \
# encodemodelcamera.h \
# ffmpegvideodlg.h \
# Src/GDDC/gddcdlg.h \
SDFPDlg.h \
global.h \
# Src/HomePage/homepagedlg.h \
mainwindow.h \
# modelcameradlg.h \
# qweb.h \
# rescueload.h \
# rescueloadwidget.h
FORMS += \
# Src/GDDC/gddcCmdDlg.ui \
# Src/GDDC/gddcSet.ui \
# Src/GDDC/gddcStateInfo.ui \
# Src/HomePage/homepagesetingwidget.ui \
# ffmpegvideodlg.ui \
# Src/GDDC/gddcdlg.ui \
# Src/HomePage/homepagedlg.ui \
SDFPDlg.ui \
mainwindow.ui \
# modelcameradlg.ui \
# qweb.ui \
# rescueloadwidget.ui
TRANSLATIONS += \
PayloadAPP_zh_CN.ts
CONFIG += lrelease
CONFIG += embed_translations
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
mainwindow.qrc \
# map/places_map.qrc
DISTFILES += \
config.ini \
res/Qss/qss.qss \
style.qss
INCLUDEPATH += $$PWD/ffmpeg/include \
$$PWD/Src/Video/
LIBS += -L$$PWD/ffmpeg/lib \
-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc \
-lswresample -lswscale
include($$PWD/Src/HomePage/HomePage.pri)
include($$PWD/Src/WebPage/WebPage.pri)
include($$PWD/Src/ModelCamera/ModelCamera.pri)
include($$PWD/Src/RescueLoad/RescueLoad.pri)
include($$PWD/Src/GDDC/GDDC.pri)
include($$PWD/Src/Video/Video.pri)

@ -0,0 +1,21 @@
#include "SDFPDlg.h"
#include "ui_SDFPDlg.h"
SDFPDlg::SDFPDlg(QWidget *parent)
: QWidget(parent)
, ui(new Ui::SDFPDlg)
{
ui->setupUi(this);
QPalette palette;
//设置主窗口背景颜色
palette.setColor(QPalette::Window,QColor(50, 50, 50));
this->setPalette(palette);
//嵌入到主窗口
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
hide();
}
SDFPDlg::~SDFPDlg()
{
delete ui;
}

@ -0,0 +1,22 @@
#ifndef SDFPDLG_H
#define SDFPDLG_H
#include <QWidget>
namespace Ui {
class SDFPDlg;
}
class SDFPDlg : public QWidget
{
Q_OBJECT
public:
explicit SDFPDlg(QWidget *parent = nullptr);
~SDFPDlg();
private:
Ui::SDFPDlg *ui;
};
#endif // SDFPDLG_H

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SDFPDlg</class>
<widget class="QWidget" name="SDFPDlg">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>768</width>
<height>440</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="styleSheet">
<string notr="true">image: url(:/res/981csNew.png);</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

@ -26,16 +26,12 @@ void GDDCSet::initWindow()
setAttribute(Qt::WA_QuitOnClose,false);
//交付时隐藏部分未开发接口
ui->label_2->hide();
ui->label_5->hide();
ui->label_6->hide();
ui->lineEdit_playURL2->hide();
ui->lineEdit_playport2->hide();
ui->pushButton_ConnectURL2->hide();
ui->groupBox_2->hide();
ui->radioButton_NetCtrlTCP->hide();
ui->label->hide();
ui->lineEdit_playport1->hide();
}
void GDDCSet::initUDPSocket()
{
@ -58,8 +54,6 @@ void GDDCSet::initParam()
/*"rtsp://192.168.1.160:554/live/track0"*/
/*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/
ui->lineEdit_playport1->setText("10008");
ui->lineEdit_playport2->setText("0");
ui->radioButton_NetCtrlUDP->setChecked(true);
ui->radioButton_NetCtrlTCP->setChecked(false);
@ -74,13 +68,10 @@ void GDDCSet::initParam()
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1", inBuf, 100, strSysIniName);
m_playURL2 = QString::fromUtf8(inBuf);
ui->lineEdit_playURL2->setText(m_playURL2);
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放Port", "-1", inBuf, 100, strSysIniName);
m_playPort2 = atoi(inBuf);;
ui->lineEdit_playport2->setText(QString::number(m_playPort2));
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放Port", "-1", inBuf, 100, strSysIniName);
m_playPort1 = atoi(inBuf);;
ui->lineEdit_playport1->setText(QString::number(m_playPort1));
::GetPrivateProfileStringA("光电吊舱-推流", "推流URL", "-1", inBuf, 100, strSysIniName);
m_pushURL = QString::fromUtf8(inBuf);
ui->lineEdit_pushURL->setText(m_pushURL);
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100, strSysIniName);
m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf));
@ -177,6 +168,22 @@ void GDDCSet::on_pushButton_NetCtrlConnect_clicked()
}
}
//推流
void GDDCSet::on_pushButton_pushURL_clicked()
{
saveDataToLocalIni();
if(ui->pushButton_pushURL->text()=="推送")
{
emit SignalStartConnect(6);
ui->pushButton_pushURL->setText("停止推送");
}
else
{
emit SignalStopConnect(6);
ui->pushButton_pushURL->setText("推送");
}
}
//保存数据至本地ini文件
void GDDCSet::saveDataToLocalIni()
{
@ -208,14 +215,14 @@ void GDDCSet::saveDataToLocalIni()
inBuf = ba.data();
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf, strSysIniName);
m_playPort2 = ui->lineEdit_playport2->text().toInt();
_itoa_s(m_playPort2,inBuf,10,10);
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放Port", inBuf, strSysIniName);
m_pushURL = ui->lineEdit_pushURL->text();
ba = m_pushURL.toLocal8Bit();
inBuf = ba.data();
::WritePrivateProfileStringA("光电吊舱-推流", "推流URL", inBuf, strSysIniName);
m_playURL1 = ui->comboBox_playURL1->currentText();
m_playPort1 = ui->lineEdit_playport1->text().toInt();
_itoa_s(m_playPort1,inBuf,10,10);
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放Port", inBuf, strSysIniName);
}

@ -19,7 +19,7 @@ public:
explicit GDDCSet(QWidget *parent = nullptr);
~GDDCSet();
private:
public:
Ui::GDDCSet *ui;
public:
@ -30,19 +30,27 @@ public:
QByteArray m_configIniPath; //ini配置文件路径
QString m_playURL1; //光电吊舱-视频连接-显示窗口1-URL地址
int m_playPort1; //光电吊舱-视频连接-显示窗口-1端口
QString m_playURL2; //光电吊舱-视频连接-显示窗口2-URL地址
int m_playPort2; //光电吊舱-视频连接-显示窗口-2端口
QString m_pushURL; //光电吊舱-推流URL地址
MyPairNetwork m_myPairNetwork;//网络通信结构体
signals:
/* int a
* 11
* 22
* 3-
* 4-
* 5-
* 6(1)
* */
void SignalStartConnect(int a); //信号开始连接
void SignalStopConnect(int a); //信号停止连接
private slots:
void on_pushButton_ConnectURL1_clicked();
void on_pushButton_ConnectURL2_clicked();
void on_pushButton_serialControlRefalsh_clicked();
void on_pushButton_serialControlConnect_clicked();
void on_pushButton_NetCtrlConnect_clicked();
void on_pushButton_ConnectURL1_clicked(); //视频连接-显示窗口1-连接
void on_pushButton_ConnectURL2_clicked(); //视频连接-显示窗口2-连接
void on_pushButton_serialControlRefalsh_clicked(); //串口控制-刷新
void on_pushButton_serialControlConnect_clicked(); //串口控制-连接
void on_pushButton_NetCtrlConnect_clicked(); //网络控制-连接
void on_pushButton_pushURL_clicked(); //推流
};
#endif // GDDCSET_H

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>761</width>
<height>387</height>
<height>360</height>
</rect>
</property>
<property name="windowTitle">
@ -22,7 +22,7 @@
<x>30</x>
<y>10</y>
<width>701</width>
<height>141</height>
<height>181</height>
</rect>
</property>
<property name="title">
@ -36,7 +36,7 @@
<rect>
<x>10</x>
<y>30</y>
<width>53</width>
<width>61</width>
<height>21</height>
</rect>
</property>
@ -72,7 +72,7 @@
<rect>
<x>20</x>
<y>100</y>
<width>61</width>
<width>71</width>
<height>21</height>
</rect>
</property>
@ -85,30 +85,7 @@
<rect>
<x>90</x>
<y>100</y>
<width>301</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>440</x>
<y>100</y>
<width>53</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>端口:</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_playport1">
<property name="geometry">
<rect>
<x>500</x>
<y>100</y>
<width>81</width>
<width>491</width>
<height>23</height>
</rect>
</property>
@ -130,7 +107,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>140</y>
<y>180</y>
<width>61</width>
<height>21</height>
</rect>
@ -143,7 +120,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>170</y>
<y>210</y>
<width>61</width>
<height>21</height>
</rect>
@ -156,46 +133,59 @@
<property name="geometry">
<rect>
<x>90</x>
<y>170</y>
<width>301</width>
<y>210</y>
<width>491</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<widget class="QPushButton" name="pushButton_ConnectURL2">
<property name="geometry">
<rect>
<x>440</x>
<y>170</y>
<width>53</width>
<x>600</x>
<y>210</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>连接</string>
</property>
</widget>
<widget class="QLabel" name="label_14">
<property name="geometry">
<rect>
<x>20</x>
<y>140</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>端口:</string>
<string>推流地址</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_playport2">
<widget class="QLineEdit" name="lineEdit_pushURL">
<property name="geometry">
<rect>
<x>500</x>
<y>170</y>
<width>81</width>
<x>90</x>
<y>140</y>
<width>491</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_ConnectURL2">
<widget class="QPushButton" name="pushButton_pushURL">
<property name="geometry">
<rect>
<x>600</x>
<y>170</y>
<y>140</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>连接</string>
<string>推送</string>
</property>
</widget>
</widget>
@ -203,7 +193,7 @@
<property name="geometry">
<rect>
<x>30</x>
<y>280</y>
<y>420</y>
<width>701</width>
<height>80</height>
</rect>
@ -291,7 +281,7 @@
<property name="geometry">
<rect>
<x>30</x>
<y>180</y>
<y>200</y>
<width>701</width>
<height>141</height>
</rect>

@ -6,11 +6,43 @@
#include <QTabWidget>
#include <windows.h>
#include <QDir>
#include <windows.h>
#include <wtsapi32.h>
#include <iostream>
#pragma comment(lib, "Wtsapi32.lib")
using namespace std;
DWORD GetmPid(LPCWSTR ProcessName) {
PWTS_PROCESS_INFOW wts;
DWORD Count;
DWORD i = 0;
BOOL result =WTSEnumerateProcessesW(WTS_CURRENT_SERVER_HANDLE, 0, 1, &wts, &Count);
if(result == 0){
cout << "WTSEnumerateProcessesW Error" << endl;
return 1;
}
cout << "WTSEnumerateProcessesW Success" << endl;
for (i;i < Count; i++) {
if (lstrcmpiW(wts[i].pProcessName, ProcessName) == 0) {
DWORD pid = wts[i].ProcessId;
cout << "find pid:" << pid << endl;
return pid;
break;
}
}
WTSFreeMemory(wts);
}
#define CONFIG_PATH "config.ini"
#define CMDPAGEHIGHT 250
#define CMDPAGEHIGHT 210
#define STATEPAGEWIDTH 250
GDDCdlg::GDDCdlg(QWidget *parent)
: QWidget(parent)
, ui(new Ui::GDDCdlg)
@ -54,6 +86,7 @@ void GDDCdlg::initWindow()
m_DlgGDDCSet = new GDDCSet();
m_GDDCCmdDlg = new GDDCCmdDlg(this);
m_GDDCStateDlg = new GDDCStateInfo(this);
}
//初始化参数
@ -65,7 +98,7 @@ void GDDCdlg::initParam()
isStatePageShow = true;
m_DCcmdBuffer.resize(cmdLength);
detectionAreaSetting = false;
connectFlag.resize(10,false);
connectFlag.resize(12,false);
ui->pushButShowCmdPage->setIcon(QIcon(":/res/down.png"));
ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
}
@ -114,6 +147,9 @@ void GDDCdlg::startConnect(int type)
stopConnectUDPCtrl();
startConnectTCPCtrl();
break;
case 6://视频(1)推流
startPushURL();
break;
default:
break;
}
@ -139,6 +175,9 @@ void GDDCdlg::stopConnect(int type)
case 5:
stopConnectTCPCtrl();
break;
case 6:
stopPushURL();
break;
default :
break;
}
@ -413,6 +452,7 @@ void GDDCdlg::stopConnectURL2()
connectFlag[1] = false ;
}
}
void GDDCdlg::startConnectSerialCtrl()
{
if(!connectFlag[2])
@ -420,6 +460,7 @@ void GDDCdlg::startConnectSerialCtrl()
connectFlag[2] = true ;
}
}
void GDDCdlg::stopConnectSerialCtrl()
{
if(connectFlag[2])
@ -427,6 +468,7 @@ void GDDCdlg::stopConnectSerialCtrl()
connectFlag[2] = false ;
}
}
//开始UDP控制通信
void GDDCdlg::startConnectUDPCtrl()
{
@ -449,6 +491,7 @@ void GDDCdlg::startConnectUDPCtrl()
connectFlag[3] = true;
}
}
//停止UDP控制通信
void GDDCdlg::stopConnectUDPCtrl()
{
@ -462,6 +505,7 @@ void GDDCdlg::stopConnectUDPCtrl()
connectFlag[3] = false;
}
}
//开始TCP控制通信
void GDDCdlg::startConnectTCPCtrl()
{
@ -470,6 +514,7 @@ void GDDCdlg::startConnectTCPCtrl()
connectFlag[4] = true;
}
}
//停止TCP控制通信
void GDDCdlg::stopConnectTCPCtrl()
{
@ -479,6 +524,69 @@ void GDDCdlg::stopConnectTCPCtrl()
}
}
//开始视频推流
void GDDCdlg::startPushURL()
{
if(!connectFlag[5])
{
process = new QProcess();
connect(process,&QProcess::readyReadStandardOutput,this,[=]()mutable{ //
QString Output=process->readAllStandardOutput();
qDebug()<<"Output:"<<Output;
});
connect(process,&QProcess::readyReadStandardError,this,[=]()mutable{
QString Error=process->readAllStandardError();
qDebug()<<"Error:"<<Error;
});
//process->start("cmd",QStringList()<<"/c"<<"ffmpeg -i rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -c copy -f flv rtmp://182.92.130.23/app/test");
QStringList m_cmd;
QString str;
str = "ffmpeg -i "+m_DlgGDDCSet->m_playURL1+" -c copy -f flv "+m_DlgGDDCSet->m_pushURL;
//str = "TaskList";
m_cmd<<"/c"<<str;
//m_cmd<<"/c"<<"ping"<<"baidu.com";
process->start("cmd",m_cmd);
connectFlag[5] = true;
//process->waitForStarted(); //等待程序启动
//process->waitForFinished(); //等待程序关闭
}
}
//停止视频推流
void GDDCdlg::stopPushURL()
{
if(connectFlag[5])
{
if(process!=nullptr)
{
process->terminate();
process->close();
process->kill();
// 检查进程退出状态
if (process->exitStatus() == QProcess::CrashExit) {
qDebug() << "Process crashed";
} else {
qDebug() << "Process exited normally";
}
delete process;
//推流进程未自动关闭,手动关闭
int pids = GetmPid(L"ffmpeg.exe");
qDebug()<<"ffmpeg.exe进程的pid为:"<<pids;
//QString cmd;
//cmd = "taskkill /pid "+QString::number(pids)+" -f";
QStringList m_cmd;
m_cmd<<"/c"<<"taskkill /pid "<<QString::number(pids)<<" -f";
QProcess::startDetached("cmd",m_cmd);
}
connectFlag[5] = false;
}
}
//设置页面弹出
void GDDCdlg::pushButtonSet_clicked()
{
@ -537,3 +645,4 @@ void GDDCdlg::pushButShowStatePage_clicked()
//ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50);
}
}

@ -20,7 +20,9 @@
#include "ui_gddcCmdDlg.h" //吊舱控制对话框ui
#include "gddcStateInfo.h" //吊舱状态信息显示对话框
#include "ui_gddcStateInfo.h" //吊舱状态信息显示对话框
#include "ui_gddcSet.h"
#include "QProcess"
#include <QThread>
#define cmdLength 44
namespace Ui {
class GDDCdlg;
@ -62,8 +64,8 @@ public:
QString localIP; //本地IP
QHostAddress localAddr; //本地地址
quint16 localPort; //本地port
QProcess* process; //执行CMD
QThread workerThread; //线程
//bool eventFilter(QObject *,QEvent *); //事件过滤器
void mousePressEvent(QMouseEvent *event); //事件过滤器
@ -79,6 +81,8 @@ public:
void stopConnectUDPCtrl();
void startConnectTCPCtrl();
void stopConnectTCPCtrl();
void startPushURL();
void stopPushURL();
public:
bool pointSelectionTracking; //选点跟踪
bool Is_openVideo; //视频是否已打开,默认未打开

@ -20,27 +20,25 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>GroupBox</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>200</width>
<height>20</height>
</size>
</widget>
</item>
<item row="1" column="3">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>GroupBox</string>
</property>
</spacer>
</widget>
</item>
<item row="0" column="3">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="image" native="true">
<property name="toolTip">
@ -58,26 +56,27 @@
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>200</width>
<height>20</height>
</size>
</property>
</spacer>
<widget class="QWidget" name="widget_2" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>GroupBox</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>GroupBox</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>

@ -29,11 +29,11 @@ bool Cffmpeg_decode::open_input_file()
AVDictionary* avdic = NULL;
av_dict_set(&avdic, "buffer_size", "2048000", 0); //设置缓存大小1080p可将值调大
av_dict_set(&avdic, "rtsp_transport", "udp", 0); //以udp方式打开如果以tcp方式打开将udp替换为tcp
av_dict_set(&avdic, "listen_timeout", "200000", 0); //设置超时断开连接时间,单位微秒
av_dict_set(&avdic, "listen_timeout", "2", 0); //设置超时断开连接时间,单位微秒
av_dict_set(&avdic, "max_delay", "3000", 0); //设置最大时延
av_dict_set(&avdic, "tune", "zerolatency", 0);
av_dict_set(&avdic, "preset", "ultrafast", 0);
fmtCtx->flags |= AVFMT_FLAG_NONBLOCK;
if(avformat_open_input(&fmtCtx,_url.toLocal8Bit().data(),NULL,&avdic)<0){
printf("Cannot open input file.\n");
return 0;

@ -75,7 +75,7 @@ QString g_PushBtnSelStyle = /**选中情况下样式**/
QString g_ToolBtnStyle = /**正常情况下样式**/
"QToolButton{"
"font: 10pt '微软雅黑';"
"color: #2f3640;"
"color: rgba(0,0,0,200);" /*#2f3640*/
"background-color: #f5f6fa;"
"border-color: #2f3640;"
"border-radius: 15px;"

@ -80,6 +80,7 @@ void MainWindow::initWindow()
this->resize(1450,860);
//this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);//隐藏边框
m_SDFPDlg = new SDFPDlg(this);
m_GDDCdlg = new GDDCdlg(this);
m_HomePagedlg = new HomePageDlg(this);
@ -124,10 +125,10 @@ void MainWindow::initWindow()
lLinkWeb->load(QUrl(url));
break;
case HomePageSetingWidget::Adhoc_Network:
lLinkWeb->load(QUrl(url));
adHocNetworkWeb->load(QUrl(url));
break;
case HomePageSetingWidget::Satelite_Comm:
lLinkWeb->load(QUrl(url));
satelliteCommWeb->load(QUrl(url));
break;
default:
break;
@ -141,16 +142,17 @@ void MainWindow::initWindow()
satelliteCommWeb->load(QUrl(urlMap["机载卫通"]));
});
// 设置栈窗口,多页面共享同一窗口
ui->stackedWidget->addWidget(m_SDFPDlg);
ui->stackedWidget->addWidget(m_HomePagedlg);
ui->stackedWidget->addWidget(m_GDDCdlg);
ui->stackedWidget->addWidget(mWeb);
ui->stackedWidget->addWidget(lLinkWeb);
ui->stackedWidget->addWidget(adHocNetworkWeb);
ui->stackedWidget->addWidget(satelliteCommWeb);
ui->stackedWidget->addWidget(m_GDDCdlg);
ui->stackedWidget->addWidget(m_HomePagedlg);
ui->stackedWidget->addWidget(m_rescueLoadWidget);
ui->stackedWidget->addWidget(m_ModelCameraDlg);
// 初始栈窗口显示主页
ui->stackedWidget->setCurrentWidget(m_HomePagedlg);
ui->stackedWidget->setCurrentWidget(m_SDFPDlg);
}
void MainWindow::initButton()
@ -166,6 +168,7 @@ void MainWindow::initButton()
ui->toolButton_6->setIcon(QIcon(":/res/Ku.png"));
ui->toolButton_7->setIcon(QIcon(":/res/research.png"));
ui->toolButton_8->setIcon(QIcon(":/res/3D.png"));
ui->toolButton_9->setIcon(QIcon(":/res/SDFP3.png"));
ui->toolButton->setIconSize(QSize(sizeX,sizeY));
ui->toolButton_2->setIconSize(QSize(sizeX,sizeY));
ui->toolButton_3->setIconSize(QSize(sizeX,sizeY));
@ -174,6 +177,7 @@ void MainWindow::initButton()
ui->toolButton_6->setIconSize(QSize(sizeX,sizeY));
ui->toolButton_7->setIconSize(QSize(sizeX,sizeY));
ui->toolButton_8->setIconSize(QSize(sizeX,sizeY));
ui->toolButton_9->setIconSize(QSize(sizeX*1.2,sizeY*1.2));
ui->toolButton->setText("主页");
ui->toolButton_2->setText("光电吊舱");
ui->toolButton_3->setText("L链");
@ -182,6 +186,7 @@ void MainWindow::initButton()
ui->toolButton_6->setText("机载卫通");
ui->toolButton_7->setText("搜救载荷");
ui->toolButton_8->setText("三维建模");
ui->toolButton_9->setText("时代飞鹏");
ui->toolButton->setFixedWidth(FixedWidth);
ui->toolButton_2->setFixedWidth(FixedWidth);
ui->toolButton_3->setFixedWidth(FixedWidth);
@ -190,6 +195,7 @@ void MainWindow::initButton()
ui->toolButton_6->setFixedWidth(FixedWidth);
ui->toolButton_7->setFixedWidth(FixedWidth);
ui->toolButton_8->setFixedWidth(FixedWidth);
ui->toolButton_9->setFixedWidth(FixedWidth);
ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
@ -198,6 +204,7 @@ void MainWindow::initButton()
ui->toolButton_6->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_7->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_8->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_9->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_2->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_3->setStyleSheet(g_ToolBtnStyle);
@ -206,6 +213,8 @@ void MainWindow::initButton()
ui->toolButton_6->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_7->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_8->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_9->setStyleSheet(g_ToolBtnStyle);
//ui->pushButton->setStyleSheet(g_PushBtnStyle);
}
void MainWindow::initMenuBar()
@ -294,6 +303,7 @@ void MainWindow::initSignalSlot()
connect(ui->toolButton_6,SIGNAL(clicked()),this,SLOT(toolButton_6_clicked()));
connect(ui->toolButton_7,SIGNAL(clicked()),this,SLOT(toolButton_7_clicked()));
connect(ui->toolButton_8,SIGNAL(clicked()),this,SLOT(toolButton_8_clicked()));
connect(ui->toolButton_9,SIGNAL(clicked()),this,SLOT(toolButton_9_clicked()));
}
//主页
@ -370,8 +380,15 @@ void MainWindow::toolButton_8_clicked()
//process->setWorkingDirectory("D:/QTdemo/playerApp/app"); // 设置工作目录
//process->start("D:/QTdemo/playerApp/app/XCOM V2.0.exe"); // 启动exe并传递参数
//process->setWorkingDirectory("D:/Software/TCPUDPDbg"); // 设置工作目录
//process->start("D:/Software/TCPUDPDbg/TCPUDPDbg.exe"); // 启动exe并传递参数
}
//时代飞鹏
void MainWindow::toolButton_9_clicked()
{
changeBtnColor(9);
ui->stackedWidget->setCurrentWidget(m_SDFPDlg);
}
//更新主界面按钮颜色
void MainWindow::changeBtnColor(int num)
@ -404,6 +421,9 @@ void MainWindow::changeBtnColor(int num)
case 8:
ui->toolButton_8->setStyleSheet(g_ToolBtnSelStyle);
break;
case 9:
ui->toolButton_9->setStyleSheet(g_ToolBtnSelStyle);
break;
}
}

@ -6,6 +6,7 @@
#include "Src/ModelCamera/modelcameradlg.h"
#include "Src/HomePage/homepagedlg.h"
#include "Src/RescueLoad/rescueloadwidget.h"
#include "SDFPDlg.h"
#include <QPushButton>
#include <QLabel>
#include <QAction>
@ -49,11 +50,13 @@ private slots:
void toolButton_6_clicked();
void toolButton_7_clicked();
void toolButton_8_clicked();
void toolButton_9_clicked();
public:
GDDCdlg *m_GDDCdlg;
HomePageDlg *m_HomePagedlg;
RescueLoadWidget *m_rescueLoadWidget;
SDFPDlg *m_SDFPDlg;
//QWeb *m_qWeb;
QWebEngineView *mWeb;
ModelCameraDlg* m_ModelCameraDlg;

@ -17,5 +17,8 @@
<file>res/left.png</file>
<file>res/right.png</file>
<file>res/981csNew.png</file>
<file>res/SDFP2.png</file>
<file>res/SDFP3.png</file>
<file>res/settings2.png</file>
</qresource>
</RCC>

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>954</width>
<height>594</height>
<width>1113</width>
<height>572</height>
</rect>
</property>
<property name="sizePolicy">
@ -20,13 +20,13 @@
<string>MainWindow</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
<enum>Qt::LayoutDirection::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
<enum>Qt::ToolButtonStyle::ToolButtonTextBesideIcon</enum>
</property>
<widget class="QWidget" name="centralwidget">
<property name="sizePolicy">
@ -36,10 +36,10 @@
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
<enum>Qt::FocusPolicy::NoFocus</enum>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
<enum>Qt::ContextMenuPolicy::NoContextMenu</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
@ -57,55 +57,38 @@
<property name="spacing">
<number>0</number>
</property>
<item row="3" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="SubPage"/>
</item>
</layout>
</item>
<item row="2" column="1">
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(40, 40, 40);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
<widget class="QWidget" name="widget_2" native="true"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QToolButton" name="toolButton_9">
<property name="text">
<string>...</string>
</property>
</spacer>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -113,6 +96,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -120,6 +109,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -127,6 +122,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -134,6 +135,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -141,6 +148,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -148,6 +161,12 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -155,32 +174,26 @@
</item>
<item>
<widget class="QToolButton" name="toolButton_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QWidget" name="widget" native="true"/>
</item>
</layout>
</widget>
</item>
<item row="2" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<item row="0" column="1">
<widget class="QStackedWidget" name="stackedWidget">
<widget class="QWidget" name="Page1">
<layout class="QVBoxLayout" name="SubPage"/>
@ -188,21 +201,6 @@
</widget>
</item>
</layout>
</item>
<item row="3" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusBar">
<property name="styleSheet">
@ -221,7 +219,7 @@
<string>帮助</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar2_action2">
@ -259,19 +257,19 @@
</action>
<action name="toolbar_action2">
<property name="icon">
<iconset resource="mainwindow.qrc">
<iconset>
<normaloff>:/res/GDDC.png</normaloff>:/res/GDDC.png</iconset>
</property>
<property name="text">
<string>光电吊舱</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action3">
<property name="icon">
<iconset resource="mainwindow.qrc">
<iconset>
<normaloff>:/res/LChain.png</normaloff>:/res/LChain.png</iconset>
</property>
<property name="text">
@ -281,7 +279,7 @@
<string>L链</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action4">
@ -293,7 +291,7 @@
<string>自 组 网</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action5">
@ -305,7 +303,7 @@
<string>PDT集群</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action6">
@ -317,7 +315,7 @@
<string>Ku 卫 通</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action7">
@ -329,7 +327,7 @@
<string>搜救载荷</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
<action name="toolbar_action8">
@ -341,12 +339,10 @@
<string>三维建模</string>
</property>
<property name="menuRole">
<enum>QAction::TextHeuristicRole</enum>
<enum>QAction::MenuRole::TextHeuristicRole</enum>
</property>
</action>
</widget>
<resources>
<include location="mainwindow.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

@ -18,7 +18,7 @@ QPushButton{
border-radius: 2px;
border: 1px groove gray;
border-style: outset;
font: 12pt "微软雅黑";
font: 10pt "微软雅黑";
}
/**************************QLineEdit编辑框设置*************************/
@ -27,7 +27,7 @@ QLineEdit{
border-radius: 2px;
border: 1px groove gray;
border-style: outset;
font: 12pt "微软雅黑";
font: 10pt "微软雅黑";
}
/***************************QComboBox下拉框设置************************/
@ -35,7 +35,7 @@ QComboBox
{
border-radius:3px;
background-color:rgba(60,60,60,200);
font: 75 11pt "微软雅黑";
font: 75 10pt "微软雅黑";
color:rgb(255,255,255);
border:0px ;
padding-top: 2px;
@ -47,7 +47,7 @@ QComboBox
QComboBox:disabled
{
background-color:rgba(50,50,50,200);
font: 75 11pt "微软雅黑";
font: 75 10pt "微软雅黑";
color:rgb(160,160,160);
}
QComboBox:hover
@ -60,7 +60,7 @@ QComboBox:on
{
border-radius:3px;
background-color:rgba(35,35,35);
font: 75 11pt "微软雅黑";
font: 75 10pt "微软雅黑";
color:rgb(255,255,255);
border:1px solid rgb(31,156,220) ;
}
@ -69,7 +69,7 @@ QComboBox QAbstractItemView
{
outline: 0px solid gray; /*取消选中虚线*/
border: 1px solid rgb(31,156,220);
font: 75 11pt "微软雅黑";
font: 75 10pt "微软雅黑";
color: rgb(255,255,255);
background-color: rgb(45,45,45);
selection-background-color: rgb(90,90,90);
@ -155,13 +155,13 @@ QTabBar QToolButton:hover {
QLabel{
color: rgb(255, 255, 255);
font-family:"微软雅黑";
font-size:11pt;
font-size:10.5pt;
}
/***************************QSpinBox设置***********************/
QSpinBox{
border-radius:1px;
background-color:rgba(60,60,60,200);
font: 12pt "微软雅黑";
font: 10pt "微软雅黑";
color:rgb(255,255,255);
border-width: 0.5px;
border-style: solid;
@ -189,7 +189,7 @@ QGroupBox::title
QRadioButton{
color: rgb(255, 255, 255);
font-family:"微软雅黑";
font-size:11pt;
font-size:10pt;
}
/***************************QFrame***********************/
QFrame#frameGDDCPage
@ -206,7 +206,7 @@ QTableView
selection-background-color: rgba(96, 96, 96, 0); /*选中区域的背景色,设置成透明96,96,96*/
}
QTableWidget::item {
font-size: 12pt;
font-size: 10pt;
color: #34495E;
height: 30px;
width: 80px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Loading…
Cancel
Save