多路h265监控录放开发-(8)完成摄像机管理的修改和删除功能

发布于:2024-06-22 ⋅ 阅读:(122) ⋅ 点赞:(0)

xviewer.h

public:
    XViewer(QWidget* parent = Q_NULLPTR);

    //编辑摄像机
    void SetCam(int index);//121 
public slots:
 
    void AddCam();  //新增摄像机配置120
    void SetCam();  //121
    void DelCam();  //121
private:
    Ui::XViewerClass ui;
    QMenu left_menu_;

xviewer.cpp


void XViewer::SetCam(int index)//121
{
    auto c = XCameraConfig::Instance();
    QDialog dlg(this);
    dlg.resize(800, 200);
    QFormLayout lay;
    dlg.setLayout(&lay);
    //  标题1 输入框1
    //  标题2 输入框2
    QLineEdit name_edit;
    lay.addRow(C("名称"), &name_edit);

    QLineEdit url_edit;
    lay.addRow(C("主码流"), &url_edit);

    QLineEdit sub_url_edit;
    lay.addRow(C("辅码流"), &sub_url_edit);

    QLineEdit save_path_edit;
    lay.addRow(C("保存目录"), &save_path_edit);

    QPushButton save;
    save.setText(C("保存"));

    connect(&save, SIGNAL(clicked()), &dlg, SLOT(accept()));

    lay.addRow("", &save);

    //编辑 读入原数据显示
    if (index >= 0)
    {
        auto cam = c->GetCam(index);
        name_edit.setText(C(cam.name));
        url_edit.setText(C(cam.url));
        sub_url_edit.setText(C(cam.sub_url));
        save_path_edit.setText(C(cam.save_path));
    }


    for (;;)
    {
        if (dlg.exec() == QDialog::Accepted) //点击了保存
        {
            if (name_edit.text().isEmpty())
            {
                QMessageBox::information(0, "error", C("请输入名称"));
                continue;
            }
            if (url_edit.text().isEmpty())
            {
                QMessageBox::information(0, "error", C("请输入主码流"));
                continue;
            }
            if (sub_url_edit.text().isEmpty())
            {
                QMessageBox::information(0, "error", C("请输入辅码流"));
                continue;
            }
            if (save_path_edit.text().isEmpty())
            {
                QMessageBox::information(0, "error", C("请输入保存目录"));
                continue;
            }
            break;
        }
        return;
    }
    //存储数据
    XCameraData data;
    strcpy(data.name, name_edit.text().toLocal8Bit());
    strcpy(data.url, url_edit.text().toLocal8Bit());
    strcpy(data.sub_url, sub_url_edit.text().toLocal8Bit());
    strcpy(data.save_path, save_path_edit.text().toLocal8Bit());
    if (index >= 0) //修改
    {
        c->SetCam(index, data);
    }
    else //新增
    {
        c->Push(data);  //插入数据
    }
    c->Save(CAM_CONF_PATH); //保存到文件
    RefreshCams();  //刷新显示
}



void XViewer::AddCam()//120
{
    SetCam(-1);
}


void XViewer::SetCam()//121
{
    int row = ui.cam_list->currentIndex().row();
    if (row < 0)
    {
        QMessageBox::information(this, "error", C("请选择摄像机"));
        return;
    }
    SetCam(row);
}


void XViewer::DelCam()//121
{
    int row = ui.cam_list->currentIndex().row();
    if (row < 0)
    {
        QMessageBox::information(this, "error", C("请选择摄像机"));
        return;
    }
    stringstream ss;
    ss << "您确认需要删除摄像机"
        << ui.cam_list->currentItem()->text().toLocal8Bit().constData();
    ss << "吗?";

    if (
        QMessageBox::information(this,
            "confirm",
            C(ss.str().c_str()),
            QMessageBox::Yes,
            QMessageBox::No) != QMessageBox::Yes
        )
    {
        return;
    }
    XCameraConfig::Instance()->DelCam(row);
    RefreshCams();
}

void XViewer::RefreshCams()
{
    auto c = XCameraConfig::Instance();
    ui.cam_list->clear();
    int count = c->GetCamCount();
    for (int i = 0; i < count; i++)
    {
        auto cam = c->GetCam(i);
        auto item = new QListWidgetItem(
            QIcon(":/XViewer/img/cam.png"), C(cam.name));
        ui.cam_list->addItem(item);
    }
}//119

运行结果:

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到