Skip to content

Commit

Permalink
add new
Browse files Browse the repository at this point in the history
  • Loading branch information
wangpengcheng committed Jun 25, 2019
1 parent c209318 commit 9a685cd
Show file tree
Hide file tree
Showing 26 changed files with 1,290 additions and 68 deletions.
52 changes: 47 additions & 5 deletions VideoControl/frmmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,10 @@ void frmMain::LoadNVRIPC()
qDebug()<<temp_id;
VideoDecodeThread* temp_decode=new VideoDecodeThread(rtspAddr);
QSharedPointer<VideoDecodeThread> test_temp(temp_decode);
//绑定视频存储的信号函数
connect(this,&frmMain::signal_send_record_id,test_temp.get(),&VideoDecodeThread::StartSaveVideo);
connect(this,&frmMain::signal_send_stop,test_temp.get(),&VideoDecodeThread::StopSaveVideo);

qDebug()<<test_temp.get()->net_stream_address();
decode_list_.insert(temp_id,test_temp);

Expand Down Expand Up @@ -365,6 +369,9 @@ void frmMain::InitShowDialog()
//添加车辆
bus_test_=new BusTest();//直接在堆上分配内存
bus_test_->ShowTest(show_dialog_->show_map().get());
//连接车辆的信号和槽
connect(this,&frmMain::signal_send_record_id,bus_test_->bus_test(),&Bus::StartSaveGPS);
connect(this,&frmMain::signal_send_stop,bus_test_->bus_test(),&Bus::StopSaveGPS);//
//网络测试
//bus_test_->UpdataPositionBySocketTest();
bus_test_->LuShuTest();//开始路书
Expand Down Expand Up @@ -899,11 +906,12 @@ void frmMain::on_treeMain_doubleClicked(const QModelIndex &index)

show_dialog_->video_widget()->video_widgets().at(i)->set_decode_thread(get);
// decode_list_.find(IPCIP).value().get()->StartDecode();
//添加新按钮控制线程的播放和显示
if(!get->is_save()){
get.get()->set_is_save();
get->set_is_save_by_time();//设置按照固定时长来写入视频数据
}
// //设置开始存储
// //添加新按钮控制线程的播放和显示
// if(!get->is_save()){
// get.get()->set_is_save(true);
// get->set_is_save_by_time();//设置按照固定时长来写入视频数据
// }


//视频暂停按钮
Expand Down Expand Up @@ -967,3 +975,37 @@ void frmMain::on_tab_choose_currentChanged(int index)


}

int frmMain::CreateRecord()
{
int result=NULL;
Tool::TestNoteTool("CreateRecord",0);
QDateTime current_date_time =QDateTime::currentDateTime();
QString video_time=current_date_time.toString("yyyy-MM-dd hh:mm:ss:zzz");
QJsonObject temp_data;
temp_data.insert("record_time",video_time);
temp_data.insert("car_id",1);//默认车辆编号为1
QString request_url="http://localhost/re_save_record.php";
QJsonObject test=Tool::NetWorkGet(request_url,temp_data);
qDebug()<<test.size();
qDebug()<<test.isEmpty();
result=test.value("result").toInt();
Tool::TestNoteTool("NetWorkGetTest",1);
return result;
}
//开始存储数据的信号函数
void frmMain::StartSaveData()
{
qDebug()<<"------ save data start------";
//先创建record记录表
this->save_record_id_=CreateRecord();
qDebug()<<"This Record id is :"<<save_record_id_;
//发射存储信号
emit(signal_send_record_id(save_record_id_));
}
void frmMain::StopSaveData()
{
//发送停止信号
emit(signal_send_stop());
qDebug()<<"------ save data end------";
}
24 changes: 23 additions & 1 deletion VideoControl/frmmain.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,21 @@ class frmMain : public QWidget
//返回控制地图
inline std::shared_ptr<QDeclarativeGeoMap> control_map(){return control_map_;}
inline Player* video_review_control(){ return video_review_control_;}
//------- 数据存储相关函数 start ------
inline bool is_save_data(){return is_save_data_;}
inline void set_ia_save_data(bool is_save){is_save_data_=is_save;}
inline int save_record_id(){return save_record_id_;}
int CreateRecord();//创建记录函数,返回mysql中的记录编号
//------- 数据存储相关函数 end ------
//数据记录的相关信号
public slots:
void StartSaveData();//开始记录数据
void StopSaveData();//停止记录数据
//记录的关键信号
signals :
void signal_send_record_id(int record_id);//发送record_id的信号
void signal_send_stop();//发送停止信号
//------- 数据存储相关函数 end ------
protected:
bool eventFilter(QObject *obj, QEvent *event);
void keyPressEvent(QKeyEvent *event);
Expand Down Expand Up @@ -66,6 +81,7 @@ private slots:
void on_tab_choose_currentChanged(int index);



private:
Ui::frmMain *ui;
/*视频控制模块变量 start*/
Expand Down Expand Up @@ -105,6 +121,11 @@ private slots:
Player* video_review_control_=nullptr; // 回放控制对象
Bus* review_bus_=nullptr; //回放的车辆

//------ 存储数据相关变量 start -----
bool is_save_data_=false;//是否需要存储数据
int save_record_id_=NULL;//记录当前正在存储的记录编号
//------ 存储数据相关变量 end -----

void InitStyle(); //初始化无边框窗体
void InitForm(); //初始化窗体数据
void InitMenu(); //初始化右侧按钮
Expand All @@ -125,7 +146,8 @@ private slots:
void signal_change_video_4(int index); //改变4画面布局
void signal_change_video_6(int index); //改变6画面布局
void signal_change_video_7(int index); //改变7画面布局
void signal_change_video_12(int index); //改变12画面布局
void signal_change_video_12(int index);//改变12画面布局

public:
void change_video(int index, int v_row,int col); //更改布局
QString GetNVRID(QString NVRIP);//获取NVR编号
Expand Down
123 changes: 122 additions & 1 deletion VideoControl/recordselectdialog.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
#include "recordselectdialog.h"
#include "ui_recordselectdialog.h"
#include "src/tool.h"
#include "VideoControl/myhelper.h"
RecordSelectDialog::RecordSelectDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::RecordSelectDialog)
{
ui->setupUi(this);
InitCarList();
}

RecordSelectDialog::~RecordSelectDialog()
Expand Down Expand Up @@ -47,6 +49,10 @@ void RecordSelectDialog::UpdateCarComBox()

void RecordSelectDialog::on_cboxCarId_activated(int car_id)
{
UpDateList(car_id);
UpDateComBox();
}
void RecordSelectDialog::UpDateList(int car_id){
//点击更新日期选项
QJsonObject temp_data;
temp_data.insert("car_id",car_id);
Expand All @@ -55,10 +61,125 @@ void RecordSelectDialog::on_cboxCarId_activated(int car_id)
qDebug()<<test.size();
qDebug()<<test.isEmpty();
QJsonArray result_array=test.value("result").toArray();
car_id_list_.clear();
qDebug()<<result_array.at(0).toObject().value("record_date");
date_list_.clear();
for(int i=0;i<result_array.size();++i){
date_list_.append(result_array.at(i).toObject().value("record_date").toString());
}
}
void RecordSelectDialog::UpDateComBox()
{
if(!date_list_.isEmpty())
{
ui->cboxSelectDate->clear();
ui->cboxSelectDate->addItems(date_list_);
}
}

void RecordSelectDialog::UpDateStartTime(int car_id,QString record_date)
{
QJsonObject temp_data;
temp_data.insert("car_id",car_id);
temp_data.insert("record_date",record_date);//注意时间用短字符`-`连接
QString request_url="http://localhost/re_get_datetime.php";
QJsonObject test=Tool::NetWorkGet(request_url,temp_data);
qDebug()<<test.size();
qDebug()<<test.isEmpty();
QJsonArray result_array=test.value("result").toArray();
qDebug()<<result_array.at(0).toObject().value("start_time");
time_list_.clear();
for(int i=0;i<result_array.size();++i){
time_list_.append(result_array.at(i).toObject().value("start_time").toString());
}
}
void RecordSelectDialog::UpDateTimeComBox()
{
if(!time_list_.isEmpty()){
ui->cboxStartTime->clear();
ui->cboxStartTime->addItems(time_list_);
}
}
//日期选择槽
void RecordSelectDialog::on_cboxSelectDate_activated(const QString &arg1)
{
UpDateStartTime(ui->cboxCarId->currentIndex(),arg1);
UpDateTimeComBox();
}
//查询按钮点击槽
void RecordSelectDialog::on_btnSelect_clicked()
{
//获取前面的3个信息
if(ui->cboxCarId->currentIndex()!=NULL&&
!ui->cboxSelectDate->currentText().isEmpty()&&
!ui->cboxStartTime->currentText().isEmpty())
{
UpDateRecordId(ui->cboxCarId->currentIndex(),
ui->cboxSelectDate->currentText(),
ui->cboxStartTime->currentText());
}else{
myHelper::ShowMessageBoxError(QStringLiteral("条件筛选错误"));
}
}
void RecordSelectDialog::UpDateRecordId(int car_id,QString record_date,QString start_time)
{
QJsonObject temp_data;
temp_data.insert("car_id",car_id);
temp_data.insert("record_date",record_date);//注意时间用短字符`-`连接
temp_data.insert("start_time",start_time);
QString request_url="http://localhost/re_get_datetime.php";
QJsonObject test=Tool::NetWorkGet(request_url,temp_data);
qDebug()<<test.size();
qDebug()<<test.isEmpty();
QJsonArray result_array=test.value("result").toArray();
record_id=result_array.at(0).toObject().value("record_id").toString().toInt();
ui->boxRecordNumber->setValue(record_id);
if(record_id!=NULL){
myHelper::ShowMessageBoxError(QStringLiteral("查询成功"));
}else{
myHelper::ShowMessageBoxError(QStringLiteral("查询失败,请检查错误信息"));
}


}
void RecordSelectDialog::UpDateVideoShow(int record_id)
{


}
QList<QString> RecordSelectDialog::SelectVideosInfo(int record_id)
{
QList<QString> result;
QJsonObject temp_data;
temp_data.insert("record_id",record_id);
QString request_url="http://localhost/re_get_videos.php";
QJsonObject test=Tool::NetWorkGet(request_url,temp_data);
qDebug()<<test.size();
qDebug()<<test.isEmpty();
QJsonArray result_array=test.value("result").toArray();
qDebug()<<result_array.at(0).toObject().value("video_path").toString();
for(int i=0;i<result_array.size();++i){
result.append(result_array.at(i).toObject().value("video_path").toString());
}
qDebug()<<result.size();
return result;
}

void RecordSelectDialog::on_btnOk_clicked()
{
//点击按钮,发送关键信号
if(record_id!=NULL){
//获取视频的播放源地址
QList<QString> video_path=SelectVideosInfo(record_id);
//更新对象
send_message_.record_id=this->record_id;
send_message_.start_datetime=ui->cboxSelectDate->currentText()+" "+ui->cboxStartTime->currentText();
send_message_.video_paths=video_path;
qDebug()<<send_message_.start_datetime;
emit(SendShowMessage(send_message_));
myHelper::ShowMessageBoxInfo(QStringLiteral("更新回放列表成功"));
this->hide();

}else{
myHelper::ShowMessageBoxError(QString("Pealse Select Infomation Frist"));
}
}
19 changes: 17 additions & 2 deletions VideoControl/recordselectdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,18 @@
**
*****************************************************************************/


#include <QDialog>
struct ShowChoose{
int show_video_number;//显示视频数量,必须是2的倍数
QVector<int> show_videos_index;//显示视频的下标索引。

};
struct MainSendMessage{
int record_id;//record_id 号
QString start_datetime;
QList<QString> video_paths;//视频路径列表
ShowChoose vidoe_show_paramer;//相关的显示输出参数
//ShowChoose vidoe_show_paramer;//相关的显示输出参数
};
namespace Ui {
class RecordSelectDialog;
Expand All @@ -42,22 +45,34 @@ class RecordSelectDialog : public QDialog
inline MainSendMessage send_message(){return this->send_message_;}
void InitCarList();//初始化车辆选择列表
void UpDateList(int car_id); //初始化日期列表
void InitStartTime(); //初始化开始时间
void UpDateComBox();//更新日期选框
void UpdateCarComBox();//更新车辆选择提示
void UpDateStartTime(int car_id,QString record_date); //初始化开始时间
void UpDateTimeComBox();//更新时间选择函数
void UpDateRecordId(int car_id,QString record_date,QString start_time);
void UpDateVideoShow(int record_id);//更新视频选择按钮,必须为2的倍数,一般为4个,只能是1,2,4;
QList<QString> SelectVideosInfo(int record_id);//通过记录编号,查找视频文件路径
signals:
void SendShowMessage(MainSendMessage);
private slots:
void on_btnCancel_clicked();

void on_cboxCarId_activated(int index);

void on_cboxSelectDate_activated(const QString &arg1);

void on_btnSelect_clicked();

void on_btnOk_clicked();

private:
Ui::RecordSelectDialog *ui;
MainSendMessage send_message_;
//数据列表
QList<int> car_id_list_;//车辆列表
QList<QString> date_list_;//日期列表
QList<QString> time_list_;//时间列表
int record_id=NULL;//最终输出记录编号


};
Expand Down
21 changes: 17 additions & 4 deletions VideoControl/recordselectdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -194,20 +194,20 @@
<widget class="QLabel" name="labPollType">
<property name="geometry">
<rect>
<x>310</x>
<x>300</x>
<y>50</y>
<width>71</width>
<width>101</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>显示画面</string>
<string>显示画面数量</string>
</property>
</widget>
<widget class="QComboBox" name="cboxShowNumber">
<property name="geometry">
<rect>
<x>390</x>
<x>420</x>
<y>50</y>
<width>101</width>
<height>28</height>
Expand Down Expand Up @@ -383,6 +383,19 @@
</rect>
</property>
</widget>
<widget class="QLabel" name="labPollType_2">
<property name="geometry">
<rect>
<x>300</x>
<y>100</y>
<width>91</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>显示视频编号</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="btnOk">
<property name="geometry">
Expand Down
Loading

0 comments on commit 9a685cd

Please sign in to comment.