51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
#pragma once
|
||
#include <functional>
|
||
|
||
#include <QDialog>
|
||
#include <QJsonObject>
|
||
#include <QString>
|
||
|
||
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
|