|
- /* Copyright(c)--Navinfo--Author:fangzurui--date:2023-10-13 */
-
- #include "EarthViewer/OSGRender.h"
- #include "DataManager/MarkPointFileManager.h"
-
- MarkPointFileImport::MarkPointFileImport(QWidget* parent)
- : QDialog(parent)
- , ui(new Ui::MarkPointFileImport) {
- ui->setupUi(this);
-
- this->setWindowIcon(QIcon(QCoreApplication::applicationDirPath() + "\\Resource\\dmatch.ico"));
- initMarkPointFileImportWidget();
- }
-
- MarkPointFileImport::~MarkPointFileImport() {
- delete ui;
- }
-
- void MarkPointFileImport::initMarkPointFileImportWidget() {
- // 设置文字信息
- ui->ImportPath->setText(QObject::tr("Import Path"));
- ui->Confirm->setText(QObject::tr("Confirm"));
- ui->Cancel->setText(QObject::tr("Cancel"));
- ui->Explore->setText(QObject::tr("Explore"));
- ui->TaskFilePathEdit->setPlaceholderText(QObject::tr("Enter Task File Path"));
-
- connect(ui->Explore, SIGNAL(clicked(bool)), this, SLOT(getFilePath()));
- connect(ui->Confirm, SIGNAL(clicked(bool)), this, SLOT(readMarkPointFile()));
- connect(ui->Cancel, SIGNAL(clicked(bool)), this, SLOT(close()));
- }
-
- void MarkPointFileImport::getFilePath() {
- // 获取文件路径
- QFileDialog* dialog = new QFileDialog();
- // 获取上次打开的路径
- QString runPath;
- if(_strFilePath.isEmpty() == false) {
- runPath = _strFilePath;
- } else {
- runPath = QCoreApplication::applicationDirPath();
- }
- QString strPath = dialog->getOpenFileName(this, QObject::tr("Choose File"), runPath, "Text Files(*.txt)", nullptr);
-
- // 获取的路径正确
- if(strPath.isEmpty() == false) {
- // 将路径传到ui中
- ui->TaskFilePathEdit->setText(strPath);
- // 将路径所在文件夹路径记录
- _strFilePath = strPath;
- } else {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("No file is selected"),
- QMessageBox::Ok, QMessageBox::Ok);
- }
- delete dialog;
- dialog = nullptr;
- }
-
- void MarkPointFileImport::readMarkPointFile() {
- if(ui->TaskFilePathEdit->text().isEmpty()) {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("Please Enter Absolute Path"),
- QMessageBox::Ok, QMessageBox::Ok);
- return;
- }
- // 读取文件
- QFile taskFile(ui->TaskFilePathEdit->text());
- if(!taskFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("Cannot Open Task File"),
- QMessageBox::Ok, QMessageBox::Ok);
- } else {
- int result = QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("Task Points not Saved Will be Cleaned."),
- QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel);
- if(result = QMessageBox::Ok) {
- // 清空之前的任务点图层
- RenderNode::getInstance()->deleteMarkPointLayer();
- // 获取清空后的任务点图层对象
- MarkPointLayer* layer = RenderNode::getInstance()->getMarkPointLayer();
- // 创建任务点数据库管理对象
- MarkPointDb* markPointDb = new MarkPointDb();
- // 清空之前的数据记录
- markPointDb->clearMarkPoint();
- while(!taskFile.atEnd()) {
- // 按行读取
- QString str = taskFile.readLine();
- str.replace(QRegExp("\n"), ""); // 移除末尾的\n
- QStringList list = str.split(" ");
-
- // 将读取后的任务点存入数据库
- MarkPoint* markPoint = new MarkPoint();
- MapPoint mapPoint(list.at(2).toDouble(), list.at(3).toDouble(), list.at(4).toDouble());
- markPoint->setId(list.at(1).toStdString());
- markPoint->setMapPoint(mapPoint);
- markPointDb->saveMarkPoint(markPoint);
-
- // 将读取后的坐标添加到图层的数组中
- MarkPoint* point = layer->createMarkPoint(mapPoint, list.at(1).toStdString());
- layer->addMarkPoint(point);
-
- // 获取名称最大值
- QString num;
- QRegExp rx("\\d+");
- rx.indexIn(list.at(1), 0);
- num = rx.cap(0);
- // 将计数器设为名称对应数字的最大值
- layer->setMarkPointCount(num.toInt());
-
- // 绘制到图层中
- RenderNode::getInstance()->addMark(point->getMarkPtr());
- }
- delete markPointDb;
- markPointDb = nullptr;
- taskFile.close();
- this->close();
- } else {
- return;
- }
- }
- }
-
- MarkPointFileExport::MarkPointFileExport(QWidget* parent)
- : QDialog(parent)
- , ui(new Ui::MarkPointFileExport) {
- ui->setupUi(this);
- initMarkPointFileExportWidget();
- }
-
- MarkPointFileExport::~MarkPointFileExport() {
- delete ui;
- }
-
- void MarkPointFileExport::initMarkPointFileExportWidget() {
- // 设置文字信息
- ui->ExportPath->setText(QObject::tr("Export Path"));
- ui->ExportName->setText(QObject::tr("Export Name"));
- ui->Confirm->setText(QObject::tr("Confirm"));
- ui->Cancel->setText(QObject::tr("Cancel"));
- ui->Explore->setText(QObject::tr("Explore"));
- ui->SavePathEdit->setPlaceholderText(QObject::tr("Enter Task File Path"));
- ui->SaveNameEdit->setPlaceholderText(QObject::tr("Enter Saved File Name"));
-
- connect(ui->Explore, SIGNAL(clicked(bool)), this, SLOT(getFilePath()));
- connect(ui->Confirm, SIGNAL(clicked(bool)), this, SLOT(writeMarkPointExportFile()));
- connect(ui->Cancel, SIGNAL(clicked(bool)), this, SLOT(close()));
- }
-
- void MarkPointFileExport::getFilePath() {
- QFileDialog* dialog = new QFileDialog();
- // 获取上次打开的路径
- QString runPath;
- if(_strFilePath.isEmpty() == false) {
- runPath = _strFilePath;
- } else {
- runPath = QCoreApplication::applicationDirPath();
- }
- QString strPath = dialog->getExistingDirectory(this, QObject::tr("Choose Directory"), runPath);
-
- if(strPath.isEmpty() == false) {
- // 将路径传到ui中
- ui->SavePathEdit->setText(strPath);
- // 将路径所在文件夹路径记录
- _strFilePath = strPath;
- } else {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("No file is selected"),
- QMessageBox::Ok, QMessageBox::Ok);
- }
- delete dialog;
- dialog = nullptr;
- }
-
- void MarkPointFileExport::writeMarkPointExportFile() {
- // 判断输入是否正确
- if(ui->SavePathEdit->text().isEmpty() || ui->SaveNameEdit->text().isEmpty()) {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("Please Enter Absolute Path"),
- QMessageBox::Ok, QMessageBox::Ok);
- return;
- }
-
- // 判断该路径是否可以写入
- qt_ntfs_permission_lookup++;
- // 获取输出的文件路径
- std::string strOutputPath;
- if(ui->SavePathEdit->text().back() == "/" || ui->SavePathEdit->text().back() == "\\") {
- strOutputPath = ui->SavePathEdit->text().toStdString() + ui->SaveNameEdit->text().toStdString() + ".txt";
- } else {
- strOutputPath = ui->SavePathEdit->text().toStdString() + "\\" + ui->SaveNameEdit->text().toStdString() + ".txt";
- }
-
- // 通过数据库导出txt
- MarkPointDb* markPointDb = new MarkPointDb();
- if(markPointDb->exportMarkPoint(strOutputPath.c_str()) == true) {
- QMessageBox::information(this,
- QObject::tr("Finished"),
- QObject::tr("Export Task File Success"),
- QMessageBox::Ok, QMessageBox::Ok);
- } else {
- QMessageBox::warning(this,
- QObject::tr("Waring"),
- QObject::tr("Cannot Write File, Please Check"),
- QMessageBox::Ok, QMessageBox::Ok);
- }
- this->close();
- qt_ntfs_permission_lookup--;
- }
-
- MarkPointInfo::MarkPointInfo(QWidget* parent)
- : QDialog(parent)
- , ui(new Ui::MarkPointInfo) {
- ui->setupUi(this);
- initMarkPointInfoWidget();
- }
-
- MarkPointInfo::~MarkPointInfo() {
- delete ui;
- }
-
- void MarkPointInfo::initMarkPointInfoWidget() {
- // 设置文字信息
- ui->Delete->setText(QObject::tr("Delete"));
- ui->Cancel->setText(QObject::tr("Cancel"));
-
- connect(ui->Delete, SIGNAL(clicked(bool)), this, SLOT(deleteMarkPoint()));
- connect(ui->Cancel, SIGNAL(clicked(bool)), this, SLOT(close()));
- }
-
- void MarkPointInfo::setIndex(int index) {
- _index = index;
- }
-
- void MarkPointInfo::deleteMarkPoint() {
- if(_index == -1) {
- QMessageBox::warning(this,
- QObject::tr("Warning"),
- QObject::tr("Cannot Remove Last Point"),
- QMessageBox::Ok, QMessageBox::Ok);
- } else {
- emit OSGRender::getInstance()->deleteMarkPoint(_index);
- this->close();
- }
- }
|