321 lines
9.6 KiB
C++
321 lines
9.6 KiB
C++
#include "MyWidget.h"
|
|
#include <FrontendBackendBridge.h>
|
|
#include <QDebug>
|
|
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
|
|
{
|
|
|
|
setWindowFlags(Qt::Window|Qt::FramelessWindowHint|Qt::WindowSystemMenuHint|Qt::MSWindowsFixedSizeDialogHint
|
|
|Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButtonHint);
|
|
|
|
QString m_style = "QWidget{background-color: rgb(50, 50, 50);color:rgb(219,219,219);}";
|
|
this->setStyleSheet(m_style);
|
|
|
|
m_gridlayout = new QGridLayout;
|
|
gridPtr.reset(m_gridlayout);
|
|
m_type = MyWidgetType::RESULT;
|
|
}
|
|
|
|
MyWidget::~MyWidget()
|
|
{
|
|
for (int i = 0; i < m_list.size(); i++)
|
|
{
|
|
delete m_list.at(i);
|
|
}
|
|
m_list.clear();
|
|
|
|
qDebug() << " [INFO] " << " delete success!";
|
|
}
|
|
|
|
|
|
bool MyWidget::layoutWindow(QJsonObject json_obj, MyWidgetType type)
|
|
{
|
|
|
|
qDebug() << " [INFO] " << " Change MyWidgetType:" << type;
|
|
try
|
|
{
|
|
// 清空布局
|
|
QLayoutItem* child;
|
|
while ((child = m_gridlayout->takeAt(0)) != 0) {
|
|
if (child->widget()) {
|
|
child->widget()->setParent(NULL);
|
|
}
|
|
delete child;
|
|
}
|
|
// 清空显示窗口
|
|
for (int i = 0; i < m_list.size(); i++)
|
|
{
|
|
delete m_list.at(i);
|
|
}
|
|
m_list.clear();
|
|
|
|
//加载配置文件
|
|
QJsonArray array;
|
|
QJsonArray stationlist;
|
|
if (type == MyWidgetType::RESULT) {
|
|
stationlist = json_obj.value("showlist").toArray();
|
|
|
|
for (int i = 0; i < stationlist.size(); i++)
|
|
{
|
|
QJsonObject obj = stationlist.at(i).toObject();
|
|
array.append(obj);
|
|
}
|
|
for (int i = 0; i < array.size(); i++)
|
|
{
|
|
QJsonObject obj = array.at(i).toObject();
|
|
|
|
QString key = obj.value("key").toString(); // key
|
|
QString cName = obj.value("cName").toString(); // 名称
|
|
viewWidget* m_widget = new viewWidget;
|
|
m_widget->setKey(key);
|
|
m_widget->setName(cName);
|
|
|
|
m_list.append(m_widget);
|
|
|
|
}
|
|
}
|
|
else {
|
|
stationlist = json_obj.value("stationlist").toArray();
|
|
|
|
for (int i = 0; i < stationlist.size(); i++)
|
|
{
|
|
QJsonObject station_obj = stationlist.at(i).toObject();
|
|
QString key = station_obj.value("key").toString();
|
|
QJsonArray cameramodulelist = station_obj.value("cameramodulelist").toArray();
|
|
|
|
for (auto val = 0; val < cameramodulelist.size(); val++)
|
|
{
|
|
QJsonObject obj = cameramodulelist.at(val).toObject();
|
|
array.append(obj);
|
|
}
|
|
}
|
|
for (int i = 0; i < array.size(); i++)
|
|
{
|
|
QJsonObject obj = array.at(i).toObject();
|
|
|
|
QString type = obj.value("type").toString();
|
|
if (type.contains("camera"))
|
|
{
|
|
QString key = obj.value("key").toString(); // key 示例:camera1
|
|
QString cName = obj.value("cName").toString(); // 相机名称
|
|
viewWidget* m_widget = new viewWidget;
|
|
m_widget->setKey(key);
|
|
m_widget->setName(cName);
|
|
m_list.append(m_widget);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (array.isEmpty())
|
|
return false;
|
|
|
|
int m_row = 0;
|
|
if(m_list.size() < 4)
|
|
{
|
|
for (int iii = 0; iii < m_list.size(); iii++)
|
|
{
|
|
m_row = m_gridlayout->rowCount();
|
|
if( m_list.size() - 1 > iii )
|
|
{
|
|
m_gridlayout->addWidget(m_list.at(iii),m_row,0);
|
|
m_gridlayout->addWidget(m_list.at(iii+1),m_row,1);
|
|
iii += 1;
|
|
}
|
|
else if ( m_list.size()%2 != 0 && (m_list.size() -1 == iii))
|
|
{
|
|
m_gridlayout->addWidget(m_list.at(iii),m_row,0);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int sqr = sqrt(m_list.size())+1;
|
|
for (int iii = 0; iii < sqr; iii++) {
|
|
for (int jjj = 0; jjj < sqr; jjj++) {
|
|
//qDebug() << __FUNCTION__ << " line:" << __LINE__ << " --- iii:" << iii;
|
|
if (iii * sqr + jjj < m_list.size()) {
|
|
m_gridlayout->addWidget(m_list.at(iii * sqr + jjj), iii, jjj);
|
|
}
|
|
else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
m_gridlayout->setAlignment(Qt::AlignHCenter|Qt::AlignTop);
|
|
m_gridlayout->setSpacing(0);
|
|
m_gridlayout->setContentsMargins(0, 0, 0, 0);
|
|
setLayout(m_gridlayout);
|
|
m_type = type;
|
|
} catch (QString ev) {
|
|
qCritical() << " [Error] " << " ev:" << ev;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
bool MyWidget::layoutWindow_setting(QString type)
|
|
{
|
|
|
|
qDebug() << " [INFO] " << " Change MyWidgetType:" << type;
|
|
try
|
|
{
|
|
// 清空布局
|
|
QLayoutItem* child;
|
|
while ((child = m_gridlayout->takeAt(0)) != 0) {
|
|
if (child->widget()) {
|
|
child->widget()->setParent(NULL);
|
|
}
|
|
delete child;
|
|
}
|
|
// 清空显示窗口
|
|
for (int i = 0; i < m_list.size(); i++)
|
|
{
|
|
delete m_list.at(i);
|
|
}
|
|
m_list.clear();
|
|
|
|
//加载配置文件
|
|
QJsonArray array;
|
|
QJsonArray stationlist;
|
|
QList<ShowWidgetsCls::widgets> list = bridge.back.json.showWidgets.getWidgets(type);
|
|
if (list.size() == 0)
|
|
return false;
|
|
for (auto widget : list)
|
|
{
|
|
QString key = type; // key
|
|
QString cName = widget.cName;
|
|
viewWidget* m_widget = new viewWidget;
|
|
m_widget->setKey(key);
|
|
m_widget->setName(cName);
|
|
m_list.append(m_widget);
|
|
}
|
|
|
|
int m_row = 0;
|
|
if (m_list.size() < 4)
|
|
{
|
|
for (int iii = 0; iii < m_list.size(); iii++)
|
|
{
|
|
m_row = m_gridlayout->rowCount();
|
|
if (m_list.size() - 1 > iii)
|
|
{
|
|
m_gridlayout->addWidget(m_list.at(iii), m_row, 0);
|
|
m_gridlayout->addWidget(m_list.at(iii + 1), m_row, 1);
|
|
iii += 1;
|
|
}
|
|
else if (m_list.size() % 2 != 0 && (m_list.size() - 1 == iii))
|
|
{
|
|
m_gridlayout->addWidget(m_list.at(iii), m_row, 0);
|
|
}
|
|
}
|
|
}
|
|
//else
|
|
//{
|
|
// int sqr = sqrt(m_list.size()) + 1;
|
|
// for (int iii = 0; iii < sqr; iii++) {
|
|
// for (int jjj = 0; jjj < sqr; jjj++) {
|
|
// //qDebug() << __FUNCTION__ << " line:" << __LINE__ << " --- iii:" << iii;
|
|
// if (iii * sqr + jjj < m_list.size()) {
|
|
// m_gridlayout->addWidget(m_list.at(iii * sqr + jjj), iii, jjj);
|
|
// }
|
|
// else {
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
//写死
|
|
else
|
|
{
|
|
int width = 4;
|
|
int height = 6;
|
|
for(int loop=0;loop<4;loop++)
|
|
for (int index = 0; index < 6; index++)
|
|
{
|
|
int x = index % 2;
|
|
int y = index / 2;
|
|
switch (loop)
|
|
{
|
|
case 1:
|
|
x += 2;
|
|
break;
|
|
case 2:
|
|
y += 3;
|
|
break;
|
|
case 3:
|
|
x += 2;
|
|
y += 3;
|
|
break;
|
|
}
|
|
m_gridlayout->addWidget(m_list.at(index + loop*6), y,x );
|
|
}
|
|
}
|
|
m_gridlayout->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
|
|
m_gridlayout->setSpacing(0);
|
|
m_gridlayout->setContentsMargins(0, 0, 0, 0);
|
|
setLayout(m_gridlayout);
|
|
if(type=="Camera")
|
|
m_type = MyWidgetType::CAMERA;
|
|
else
|
|
m_type = MyWidgetType::RESULT;
|
|
}
|
|
catch (QString ev) {
|
|
qCritical() << " [Error] " << " ev:" << ev;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
MyWidgetType MyWidget::GetMyWidgetType()
|
|
{
|
|
return m_type;
|
|
}
|
|
|
|
void MyWidget::On_reciveImage(QString key,QImage* Image,int index)
|
|
{
|
|
//qDebug() << __FUNCTION__ << " line:" << __LINE__ << " --- key:" << key;
|
|
if(index!=-1&& index< m_list.size()&& index>=0)
|
|
{
|
|
QString m_name = m_list.at(index)->getKey();
|
|
if(m_name ==key)
|
|
m_list.at(index)->reciveImage(key, Image);
|
|
}
|
|
else
|
|
for (int i = 0; i < m_list.size();i++)
|
|
{
|
|
QString m_name = m_list.at(i)->getKey();
|
|
if (m_name.indexOf(key) != -1)
|
|
{
|
|
m_list.at(i)->reciveImage(key,Image);
|
|
return;
|
|
}
|
|
|
|
}
|
|
if (Image)
|
|
{
|
|
delete Image;
|
|
Image = nullptr;
|
|
}
|
|
}
|
|
|
|
// key 窗口名称
|
|
void MyWidget::On_reciveData(QString key,QByteArray byte)
|
|
{
|
|
//qDebug() << __FUNCTION__ << " line:" << __LINE__ << " ---- key:" << key << " byte len:" << byte;
|
|
for (int i = 0; i < m_list.size();i++)
|
|
{
|
|
QString m_name = m_list.at(i)->getKey();
|
|
if ( m_name.indexOf( key )!=-1)
|
|
{
|
|
m_list.at(i)->reciveData(key,byte);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void MyWidget::mouseMoveEvent(QMouseEvent *event)
|
|
{
|
|
emit mouseRecover();
|
|
}
|