#pragma once #include #include #include #include class QLineEdit; class QButtonGroup; class QLabel; class QPushButton; namespace geopro::data { class IDatasetCommandRepository; } namespace geopro::app { // 「另存为」对话框(1:1 复刻原版 web,两形态可复用): // - RawData(measurement「另存为」,原版 saveRawDataValue):新增/覆盖单选 +(新增时)名称框。 // 提交体 {dsId, operationType(1新增/0覆盖), name?}(覆盖不带 name)。 // - Inversion(inversion「另存为」,原版 saveVisualResistivityData):仅名称框。 // 提交体 {dsObjectId, name}。 // 设计成可复用:Mode 区分两形态;提交统一经 IDatasetCommandRepository::saveRawData / // saveInversionAsData。回调用 QPointer 守卫(虽 modal exec,仍异步回调)。 class SaveAsDialog : public QDialog { Q_OBJECT public: enum class Mode { RawData, // measurement 另存为(新增/覆盖 + 名称) Inversion, // inversion 另存为(仅名称) }; SaveAsDialog(Mode mode, geopro::data::IDatasetCommandRepository* repo, QString dsId, QWidget* parent = nullptr); private: void onConfirm(); Mode mode_; geopro::data::IDatasetCommandRepository* repo_ = nullptr; QString dsId_; QButtonGroup* opGroup_ = nullptr; // RawData:新增(1)/覆盖(0) QLabel* nameLabel_ = nullptr; // RawData:仅新增可见 QLineEdit* nameEdit_ = nullptr; QPushButton* okBtn_ = nullptr; }; } // namespace geopro::app