#include "DsgAlgoDlg.h" #include "ui_AlgoDlg.h" #include "qfiledialog.h" #include "QDesktopWidget" #define WINDOWS_ICON ":/resource/app.png" #pragma execution_character_set("utf-8") CDsgAlgoDlg::CDsgAlgoDlg(QWidget *parent) : QDialog(parent), ui(new Ui::AlgoDlg) { m_pDE = NULL; m_pTask = NULL; m_bAlgoChanged = false; ui->setupUi(this); setWindowIcon(QIcon(WINDOWS_ICON)); connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(OnOk())); connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(OnCancel())); connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(OnSelectAlgo())); } CDsgAlgoDlg::~CDsgAlgoDlg() { if (ui) { delete ui; ui = NULL; } } bool CDsgAlgoDlg::Initialize(IDetectorEngine* lpDE, IDetectorTask* lpTask) { if (!lpDE || !lpTask) return false; m_pDE = lpDE; m_pTask = lpTask; return true; } bool CDsgAlgoDlg::OnOk() { QDialog::accept(); return true; } bool CDsgAlgoDlg::OnCancel() { QDialog::reject(); return true; } bool CDsgAlgoDlg::OnSelectAlgo() { QString strFileName = QFileDialog::getOpenFileName(this, "open file", "", "File (*.dll)"); if (strFileName.length() > 0) { ui->lineEdit_4->setText(strFileName); m_bAlgoChanged = true; return true; } return false; } IDetectorAlgorithm* CDsgAlgoDlg::ShowAlgoDlg(IDetectorAlgorithm* pAlgo) { if (!m_pTask) return NULL; if (pAlgo) { ui->lineEdit->setText(QObject::tr(pAlgo->GetAlgorithmInfo()->strName.toStdString().c_str())); ui->lineEdit_2->setText(pAlgo->GetAlgorithmInfo()->strDescription); ui->lineEdit_3->setText(QString::number(pAlgo->GetAlgorithmInfo()->nRoiID)); ui->lineEdit_4->setText(pAlgo->GetAlgorithmInfo()->strPath); } else { ui->lineEdit->clear(); ui->lineEdit_2->clear(); ui->lineEdit_3->clear(); ui->lineEdit_4->clear(); } QDesktopWidget* desktop = QApplication::desktop();// move((desktop->width() - this->width()) / 2, (desktop->height() - this->height()) / 2); if (this->exec() == QDialog::Accepted ) { if (false == m_bAlgoChanged) //lineEdit->text(); tAlgoInfo.strDescription = ui->lineEdit_2->text(); if (ui->lineEdit_3->text().length() > 0) tAlgoInfo.nRoiID = ui->lineEdit_3->text().toInt(); tAlgoInfo.strPath = ui->lineEdit_4->text(); if (pAlgo) { pAlgo->SetAlgorithmInfo(&tAlgoInfo); if (tAlgoInfo.strPath.size() > 0) { if (!pAlgo->Load(tAlgoInfo.strPath.left(tAlgoInfo.strPath.lastIndexOf(".")))) { QMessageBox::information(NULL, QObject::tr("错误提示"), QObject::tr("加载算法库失败")); } } else { if (!pAlgo->Load(tAlgoInfo.strName)) { QMessageBox::information(NULL, QObject::tr("错误提示"), QObject::tr("加载算法库失败")); } } pAlgo->InitAlgo(); return pAlgo; } IDetectorAlgorithm* pNewAlgo = m_pTask->AddAlgorithm(&tAlgoInfo); if (tAlgoInfo.strPath.size() > 0) { if (!pNewAlgo->Load(tAlgoInfo.strPath.left(tAlgoInfo.strPath.lastIndexOf(".")))) { QMessageBox::information(NULL, QObject::tr("错误提示"), QObject::tr("加载算法库失败")); } } else { if (!pNewAlgo->Load(tAlgoInfo.strName)) { QMessageBox::information(NULL, QObject::tr("错误提示"), QObject::tr("加载算法库失败")); } } pNewAlgo->InitAlgo(); return pNewAlgo; } return pAlgo; }