#include "FileManagerMenu.h" #include #include #include "app/Application.h" #include "common/RecourceHelper.h" #include "ui/MainFrame.h" #include "ui/WorkSpace/WorkSpaceDlg.h" #include "ui/WorkSpace/AddFileDialogFactory.h" #include "ui/WorkSpace/BaseAddFileDlg.h" #include "common/SpdLogger.h" #include "workspace/WorkSpace.h" #include "workspace/WorkSpaceManager.h" #include "workspace/FileEntry.h" #include "utils/FileUtils.h" #include "ui_FileManagerMenu.h" FileManagerMenu::FileManagerMenu(QWidget* parent) : QWidget(parent) , ui(new Ui::FileManagerMenu) { ui->setupUi(this); InitConnect(); } FileManagerMenu::~FileManagerMenu() { delete ui; } void FileManagerMenu::InitConnect() { connect(ui->menu_new_file, &QToolButton::clicked, this, &FileManagerMenu::NewWorkSpace); connect(ui->menu_open_file, &QToolButton::clicked, this, &FileManagerMenu::OpenWorkSpace); connect(ui->menu_save_file, &QToolButton::clicked, this, &FileManagerMenu::SaveWorkSpace); // add file entity buttons connect(ui->menu_wave_file, &QToolButton::clicked, this, &FileManagerMenu::AddWaveFile); connect(ui->menu_surface_file, &QToolButton::clicked, this, &FileManagerMenu::AddSurfaceFile); connect(ui->menu_table_file, &QToolButton::clicked, this, &FileManagerMenu::AddTableFile); connect(ui->menu_light_file, &QToolButton::clicked, this, &FileManagerMenu::AddLightFile); connect(ui->menu_polar_file, &QToolButton::clicked, this, &FileManagerMenu::AddPolarFile); connect(ui->menu_image_file, &QToolButton::clicked, this, &FileManagerMenu::AddImageFile); } void FileManagerMenu::NewWorkSpace() { LOG_INFO("click newworkspace"); WorkSpaceDlg* dlg = new WorkSpaceDlg(&MainFrame::Get()); dlg->exec(); } void FileManagerMenu::OpenWorkSpace() { QString fileName = QFileDialog::getOpenFileName(&MainFrame::Get(), QObject::tr("Open Workspace"), Application::GetWorkSpacePath(), QObject::tr("Dyt Files (*.dyt)")); if (fileName.isEmpty()) { return; } LOG_INFO("open workspace: {}", fileName.toLocal8Bit().constData()); emit LoadDyt(fileName); } void FileManagerMenu::SaveWorkSpace() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } QString fileName = current->GetPath(); if (fileName.isEmpty()) { fileName = QFileDialog::getSaveFileName(&MainFrame::Get(), QObject::tr("Save Workspace"), Application::GetWorkSpacePath(), QObject::tr("Dyt Files (*.dyt)")); if (fileName.isEmpty()) { return; } current->Save(fileName); } else { current->Save(); } LOG_INFO("save workspace: {}", fileName.toLocal8Bit().constData()); } // Removed old AddFile method - replaced by specific type methods void FileManagerMenu::AddWaveFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show curve file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Curve, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); //QString selectedPath = dialog->getSelectedFilePath(); // //// Create file entry using factory function //auto fileEntry = CreateFileEntryCurve(selectedPath); //if (!fileEntry) { // QMessageBox::warning(&MainFrame::Get(), QObject::tr("Error"), // QObject::tr("Failed to create file entry")); // return; //} // //// Add to workspace //switch (current->SetFileEntry(fileEntry)) { //case WorkSpace::FileEntryResult::Ok: // // Success - no action needed // break; //case WorkSpace::FileEntryResult::LimitExceeded: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("up to 9 files allowed for this type")); // break; //case WorkSpace::FileEntryResult::Duplicate: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("file already added for this type")); // break; //case WorkSpace::FileEntryResult::CopyFailed: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("copy file failed")); // break; //case WorkSpace::FileEntryResult::InvalidFile: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("invalid file")); // break; //} } } void FileManagerMenu::AddSurfaceFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show surface file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Surface, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); //QString selectedPath = dialog->getSelectedFilePath(); // //// Create file entry using factory function //auto fileEntry = CreateFileEntrySurface(selectedPath); //if (!fileEntry) { // QMessageBox::warning(&MainFrame::Get(), QObject::tr("Error"), // QObject::tr("Failed to create file entry")); // return; //} // //// Add to workspace //switch (current->SetFileEntry(fileEntry)) { //case WorkSpace::FileEntryResult::Ok: // // Success - no action needed // break; //case WorkSpace::FileEntryResult::LimitExceeded: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("up to 9 files allowed for this type")); // break; //case WorkSpace::FileEntryResult::Duplicate: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("file already added for this type")); // break; //case WorkSpace::FileEntryResult::CopyFailed: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("copy file failed")); // break; //case WorkSpace::FileEntryResult::InvalidFile: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("invalid file")); // break; //} } } void FileManagerMenu::AddTableFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show table file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Table, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); //QString selectedPath = dialog->getSelectedFilePath(); // //// Create file entry using factory function //auto fileEntry = CreateFileEntryTable(selectedPath); //if (!fileEntry) { // QMessageBox::warning(&MainFrame::Get(), QObject::tr("Error"), // QObject::tr("Failed to create file entry")); // return; //} // //// Add to workspace //switch (current->SetFileEntry(fileEntry)) { //case WorkSpace::FileEntryResult::Ok: // // Success - no action needed // break; //case WorkSpace::FileEntryResult::LimitExceeded: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("up to 9 files allowed for this type")); // break; //case WorkSpace::FileEntryResult::Duplicate: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("file already added for this type")); // break; //case WorkSpace::FileEntryResult::CopyFailed: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("copy file failed")); // break; //case WorkSpace::FileEntryResult::InvalidFile: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("invalid file")); // break; //} } } void FileManagerMenu::AddLightFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show light file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Light, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); //QString selectedPath = dialog->getSelectedFilePath(); // //// Create file entry using factory function //auto fileEntry = CreateFileEntryLight(selectedPath); //if (!fileEntry) { // QMessageBox::warning(&MainFrame::Get(), QObject::tr("Error"), // QObject::tr("Failed to create file entry")); // return; //} // //// Add to workspace //switch (current->SetFileEntry(fileEntry)) { //case WorkSpace::FileEntryResult::Ok: // // Success - no action needed // break; //case WorkSpace::FileEntryResult::LimitExceeded: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("up to 9 files allowed for this type")); // break; //case WorkSpace::FileEntryResult::Duplicate: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("file already added for this type")); // break; //case WorkSpace::FileEntryResult::CopyFailed: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("copy file failed")); // break; //case WorkSpace::FileEntryResult::InvalidFile: // QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), // QObject::tr("invalid file")); // break; //} } } void FileManagerMenu::AddPolarFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show light file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Polar, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); } } void FileManagerMenu::AddImageFile() { auto current = WorkSpaceManager::Get().GetCurrent(); if (nullptr == current) { QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first")); return; } // Show light file addition dialog auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Image, &MainFrame::Get()); if (dialog && dialog->exec() == QDialog::Accepted) { SaveWorkSpace(); } }