/
klischa
/
AstraScanner2
Обзор
Документация
Войти
/
klischa
/
AstraScanner2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/ProjectWorkflow.h
83 строки
2 KB
k k
refactor(P0): Phase 4 — ProjectWorkflow extracted from MainWindow
14 июл 2026, 13:52
14 июл 2026, 13:52
ebfc4dc
Код
Авторство
О чём код?
#ifndef PROJECTWORKFLOW_H #define PROJECTWORKFLOW_H #include <QObject> #include <QString> #include <QStringList> #include <functional> #include <pcl/point_cloud.h> #include <pcl/point_types.h> class QWidget; class QStatusBar; class QListWidget; class QComboBox; class QLabel; class ProjectManager; class ExportManager; class ProjectWorkflow : public QObject { Q_OBJECT public: struct Widgets { QListWidget *scansList = nullptr; QLabel *projectStatusLabel = nullptr; QLabel *homeProjectStatusLabel = nullptr; QComboBox *trackingModeCombo = nullptr; }; explicit ProjectWorkflow(QWidget *parentWidget, ProjectManager *projectManager, ExportManager *exportManager, QObject *parent = nullptr); ~ProjectWorkflow() override; void bindWidgets(const Widgets &w); void setStatusBar(QStatusBar *statusBar); // Project CRUD void onNewProject(); void onOpenProject(); void onSaveProject(); void onSaveProjectAs(); // Scan management void onAddCurrentCloudToProject(); void onScansListContextMenu(const QPoint &pos); void onScansListDoubleClicked(int index); void refreshScansList(); void updateProjectStatusUi(); void syncTrackingModeComboFromProject(); // Export void onExportCurrentCloud(); void onExportMesh(); // Accessors for other coordinators pcl::PointCloud<pcl::PointXYZRGB>::Ptr currentCloudSnapshot(); bool loadProjectScanIntoCurrentCloud(int index); signals: void projectOpened(); void projectSaved(); void scanAdded(int index); void cloudLoaded(pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud); private: bool confirmDiscardDirtyProject(const QString &title, const QString &question); QString chooseProjectDirectory(const QString &title, bool existingOnly); bool ensureProjectOpenForSave(); QString chooseExportFilename(const QString &title, const QStringList &filters); void rememberExportDirectory(const QString &filename); bool tryExportPointCloud(const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr &cloud, const QString &dialogTitle); QWidget *m_parentWidget = nullptr; ProjectManager *m_project = nullptr; ExportManager *m_exporter = nullptr; QStatusBar *m_statusBar = nullptr; Widgets m_w; }; #endif // PROJECTWORKFLOW_H