174 lines
6.3 KiB
C++
174 lines
6.3 KiB
C++
#ifndef MEASUREANALYSISPROJECTMODEL_H
|
|
#define MEASUREANALYSISPROJECTMODEL_H
|
|
|
|
#include <QObject>
|
|
#include <QMap>
|
|
#include <QStandardItemModel>
|
|
#include "AnalysisTypeDefine.h"
|
|
|
|
class MeasureAnalysisView;
|
|
|
|
class MeasureAnalysisProjectModel
|
|
{
|
|
public:
|
|
enum SpectrumType {
|
|
None,
|
|
Sample, // 样品谱
|
|
Background, // 本底谱
|
|
};
|
|
|
|
public:
|
|
virtual ~MeasureAnalysisProjectModel();
|
|
|
|
void SetProjectDir(const QString& project_dir);
|
|
void SetProjectName(const QString& project_name);
|
|
void SetSpectrumType(SpectrumType spec_type);
|
|
void SetIsStdSource(bool is_std_source);
|
|
void SetDescriptionInfo(const QString& description_info);
|
|
void SetMeasurePresetTime(ulong measure_preset_time);
|
|
void SetConformTimeWin(uint conform_time_win);
|
|
void SetIsMeasureComplete(bool is_measure_complete);
|
|
|
|
void SetMeasureDeviceParamsCfgFilename(const QString& filename);
|
|
void SetEnergyScaleFilename(const QString& filename);
|
|
void SetEfficiencyScaleFilename(const QString& filename);
|
|
|
|
void SetAllChannelParticleDataFilename(const QString& filename);
|
|
void SetSortedParticleDataFilename(const QString& filename);
|
|
// void SetChannelParticleDataFilename(uint channel, const QString& filename);
|
|
|
|
void SetChannelAddressCountDataFilename(uint channel, const QString& filename);
|
|
// void SetAllChannelParticleTotalCountDataFilename(const QString& filename);
|
|
|
|
void SetChannelEnergyCountDataFilename(uint channel, const QString& filename);
|
|
void SetAllChannelEnergyTotalCountDataFilename(const QString& filename);
|
|
|
|
void SetTimeWinConformParticleData(uint time_win, uint conform_particle_count, const QString& filename);
|
|
|
|
void SetAnalysisCustomData(AnalysisType analysis_type, const QString& data_item_name, const QString& data_filename);
|
|
|
|
const QString& GetProjectDir() const;
|
|
const QString& GetProjectName() const;
|
|
SpectrumType GetSpectrumType() const;
|
|
bool GetIsStdSource() const;
|
|
const QString& GetDescriptionInfo() const;
|
|
ulong GetMeasurePresetTime() const;
|
|
uint GetConformTimeWin() const;
|
|
bool GetIsMeasureComplete() const;
|
|
const QString& GetMeasureDeviceParamsCfgFilename() const;
|
|
const QString& GetEnergyScaleFilename() const;
|
|
const QString& GetEfficiencyScaleFilename() const;
|
|
|
|
const QString& GetAllChannelParticleDataFilename() const;
|
|
const QString& GetSortAllChannelParticleDataFilename() const;
|
|
|
|
// const QMap<uint, QString>& GetChannelParticleDataFilenameList() const;
|
|
// const QString& GetChannelParticleDataFilename(uint channel) const;
|
|
|
|
const QMap<uint, QString>& GetChannelAddressCountDataFilenameList() const;
|
|
const QString GetChannelAddressCountDataFilename(uint channel) const;
|
|
// const QString& GetAllChannelParticleTotalCountDataFilename() const;
|
|
|
|
const QMap<uint, QString>& GetChannelEnergyCountDataFilenameList() const;
|
|
const QString GetChannelEnergyCountDataFilename(uint channel) const;
|
|
const QString& GetAllChannelEnergyTotalCountDataFilename() const;
|
|
|
|
const QMap<uint, QString> GetTimeWinConformParticleDataFilenameList(uint time_win) const;
|
|
|
|
const QString GetAnalysisCustomData(AnalysisType analysis_type, const QString& data_item_name);
|
|
|
|
private:
|
|
QString _project_dir;
|
|
QString _project_name;
|
|
SpectrumType _spec_type = SpectrumType::None;
|
|
bool _is_std_source = false;
|
|
QString _description_info;
|
|
ulong _measure_preset_time = 0;
|
|
uint _conform_time_win = 50;
|
|
|
|
bool _is_measure_complete = false;
|
|
|
|
QString _measure_device_params_cfg_filename;
|
|
QString _energy_scale_filename;
|
|
QString _efficiency_scale_filename;
|
|
|
|
QString _all_channel_particle_data_filename;
|
|
QString _sorted_particle_data_filename;
|
|
// QMap<uint, QString> _channel_particle_data_filename_list;
|
|
|
|
QMap<uint, QString> _channel_address_count_data_filename_list;
|
|
// QString _all_channel_particle_total_count_data_filename;
|
|
|
|
QMap<uint, QString> _channel_energy_count_data_filename_list;
|
|
QString _all_channel_energy_total_count_data_filename;
|
|
|
|
QMap<uint, QMap<uint, QString> > _time_win_conform_particle_data;
|
|
|
|
QMap<AnalysisType, QMap<QString, QString> > _analysis_custom_data_set;
|
|
|
|
public:
|
|
bool LoadProjectModel(const QString& project_filename);
|
|
bool SaveProjectModel();
|
|
private:
|
|
QString _project_filename;
|
|
|
|
};
|
|
|
|
|
|
class MeasureAnalysisProjectModelList : public QStandardItemModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
enum UserDataType {
|
|
NodeType = Qt::UserRole,
|
|
Fixed = Qt::UserRole + 1,
|
|
ProjectName = Qt::UserRole + 2,
|
|
ChannelNum = Qt::UserRole + 3
|
|
};
|
|
|
|
public:
|
|
static MeasureAnalysisProjectModelList* Instance();
|
|
virtual ~MeasureAnalysisProjectModelList();
|
|
|
|
bool AddProjectModel(MeasureAnalysisProjectModel* model);
|
|
bool RmProjectModel(const QString& project_name);
|
|
|
|
MeasureAnalysisProjectModel* GetProjectModel(const QString& project_name);
|
|
MeasureAnalysisProjectModel* GetCurrentProjectModel();
|
|
QList<MeasureAnalysisProjectModel*> GetProjectModels();
|
|
void SetCurrentProjectModel(const QString& project_name);
|
|
|
|
public:
|
|
QStandardItem* GetItemFromIndex(const QModelIndex &index) const;
|
|
QStandardItem* AddChildNode(QStandardItem *parent_item,
|
|
const QString &node_name,
|
|
const QString &status = QString(),
|
|
const QVariant &user_data = QVariant(),
|
|
bool is_fixed = false);
|
|
bool RemoveNode(QStandardItem *item);
|
|
void SetNodeUserData(QStandardItem* item, const QVariant& data);
|
|
QVariant GetNodeUserData(QStandardItem* item, UserDataType data_type = NodeType) const;
|
|
void SetNodeStatus(QStandardItem* item, const QString& status);
|
|
QString GetNodeStatus(QStandardItem* item) const;
|
|
|
|
private slots:
|
|
void onChannelAddressCountProcessFinished(const QString& project_name);
|
|
|
|
private:
|
|
void intiProjectNodeStruce(MeasureAnalysisProjectModel *pro_model);
|
|
|
|
private:
|
|
explicit MeasureAnalysisProjectModelList(QObject *parent = nullptr);
|
|
static MeasureAnalysisProjectModelList* _s_instance;
|
|
|
|
private:
|
|
MeasureAnalysisProjectModel* _current_project_model;
|
|
QMap<QString, MeasureAnalysisProjectModel*> _project_models;
|
|
QMap<QString, QMap<QString, QStandardItem*> > _project_node_items;
|
|
};
|
|
|
|
typedef MeasureAnalysisProjectModelList ProjectList;
|
|
|
|
#endif // MEASUREANALYSISPROJECTMODEL_H
|