DYTSrouce/src/ui/Menu/FileManagerMenu.cpp

311 lines
12 KiB
C++
Raw Normal View History

2025-01-04 04:12:51 +00:00
#include "FileManagerMenu.h"
#include <QFileDialog>
#include <QMessageBox>
#include "app/Application.h"
#include "common/RecourceHelper.h"
#include "ui/MainFrame.h"
#include "ui/WorkSpace/WorkSpaceDlg.h"
2025-10-22 17:40:44 +00:00
#include "ui/WorkSpace/AddFileDialogFactory.h"
#include "ui/WorkSpace/BaseAddFileDlg.h"
2025-01-04 04:12:51 +00:00
#include "common/SpdLogger.h"
#include "workspace/WorkSpace.h"
#include "workspace/WorkSpaceManager.h"
2025-10-12 14:14:16 +00:00
#include "workspace/FileEntry.h"
#include "utils/FileUtils.h"
2025-01-04 04:12:51 +00:00
#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);
2025-10-12 14:14:16 +00:00
// 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);
2025-10-31 15:10:35 +00:00
connect(ui->menu_polar_file, &QToolButton::clicked, this, &FileManagerMenu::AddPolarFile);
2025-11-02 03:36:10 +00:00
connect(ui->menu_image_file, &QToolButton::clicked, this, &FileManagerMenu::AddImageFile);
2025-01-04 04:12:51 +00:00
}
void FileManagerMenu::NewWorkSpace() {
LOG_INFO("click newworkspace");
WorkSpaceDlg* dlg = new WorkSpaceDlg(&MainFrame::Get());
dlg->exec();
}
void FileManagerMenu::OpenWorkSpace() {
2025-10-20 18:17:40 +00:00
QString fileName = QFileDialog::getOpenFileName(&MainFrame::Get(),
QObject::tr("Open Workspace"), Application::GetWorkSpacePath(), QObject::tr("Dyt Files (*.dyt)"));
if (fileName.isEmpty()) {
2025-01-04 04:12:51 +00:00
return;
}
2025-10-20 18:17:40 +00:00
LOG_INFO("open workspace: {}", fileName.toLocal8Bit().constData());
emit LoadDyt(fileName);
2025-01-04 04:12:51 +00:00
}
void FileManagerMenu::SaveWorkSpace() {
2025-10-20 18:17:40 +00:00
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
2025-01-04 04:12:51 +00:00
return;
}
2025-10-20 18:17:40 +00:00
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();
}
2025-10-20 18:17:40 +00:00
LOG_INFO("save workspace: {}", fileName.toLocal8Bit().constData());
}
2025-10-22 17:40:44 +00:00
// Removed old AddFile method - replaced by specific type methods
void FileManagerMenu::AddWaveFile() {
2025-10-20 18:17:40 +00:00
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
return;
}
2025-10-22 17:40:44 +00:00
// Show curve file addition dialog
auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Curve, &MainFrame::Get());
if (dialog && dialog->exec() == QDialog::Accepted) {
2025-10-31 15:10:35 +00:00
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;
//}
2025-10-20 18:17:40 +00:00
}
2025-01-04 04:12:51 +00:00
}
2025-10-12 14:14:16 +00:00
void FileManagerMenu::AddSurfaceFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
2025-10-20 18:17:40 +00:00
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
2025-10-12 14:14:16 +00:00
return;
}
2025-10-22 17:40:44 +00:00
// Show surface file addition dialog
auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Surface, &MainFrame::Get());
if (dialog && dialog->exec() == QDialog::Accepted) {
2025-10-31 15:10:35 +00:00
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;
//}
2025-10-12 14:14:16 +00:00
}
}
void FileManagerMenu::AddTableFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
2025-10-20 18:17:40 +00:00
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
2025-10-12 14:14:16 +00:00
return;
}
2025-10-22 17:40:44 +00:00
// Show table file addition dialog
auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Table, &MainFrame::Get());
if (dialog && dialog->exec() == QDialog::Accepted) {
2025-10-31 15:10:35 +00:00
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;
//}
2025-10-12 14:14:16 +00:00
}
}
void FileManagerMenu::AddLightFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
2025-10-20 18:17:40 +00:00
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
2025-10-12 14:14:16 +00:00
return;
}
2025-10-22 17:40:44 +00:00
// Show light file addition dialog
auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Light, &MainFrame::Get());
if (dialog && dialog->exec() == QDialog::Accepted) {
2025-10-31 15:10:35 +00:00
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;
//}
2025-10-12 14:14:16 +00:00
}
2025-10-20 18:17:40 +00:00
}
2025-10-31 15:10:35 +00:00
2025-11-02 03:36:10 +00:00
void FileManagerMenu::AddPolarFile()
{
2025-10-31 15:10:35 +00:00
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();
}
2025-11-02 03:36:10 +00:00
}
void FileManagerMenu::AddImageFile()
{
2025-11-02 09:51:46 +00:00
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), QObject::tr("prompt"), QObject::tr("please create workspace first"));
return;
}
2025-11-02 03:36:10 +00:00
2025-11-02 09:51:46 +00:00
// Show light file addition dialog
auto dialog = AddFileDialogFactory::createDialog(FileEntryType::Image, &MainFrame::Get());
if (dialog && dialog->exec() == QDialog::Accepted) {
SaveWorkSpace();
}
2025-10-31 15:10:35 +00:00
}