geopro/src/app/panels/chart/SaveAsDialog.hpp

51 lines
1.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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两形态可复用
// - RawDatameasurement「另存为」原版 saveRawDataValue新增/覆盖单选 +(新增时)名称框。
// 提交体 {dsId, operationType(1新增/0覆盖), name?}(覆盖不带 name
// - Inversioninversion「另存为」原版 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