EnergySpectrumAnalyer/src/MeasureAnalysisView.cpp
2026-03-04 16:49:50 +08:00

149 lines
4.9 KiB
C++

#include "MeasureAnalysisView.h"
#include <QMap>
#include "MeasureAnalysisDataTableView.h"
QMap<QString, MeasureAnalysisViewType> MeasureAnalysisView::_s_analyze_view_type_list {
{ QStringLiteral(u"数据表视图"),
MeasureAnalysisViewType::DataTable },
{ QStringLiteral(u"计数谱视图"),
MeasureAnalysisViewType::CountSpectrum },
{ QStringLiteral(u"符合能谱谱三维分析视图"),
MeasureAnalysisViewType::CoincidenceEnergySpectrum3D },
{ QStringLiteral(u"计数率分析视图"),
MeasureAnalysisViewType::CountingRate },
{ QStringLiteral(u"峰拟合分析视图"),
MeasureAnalysisViewType::EnergyPeakFit },
{ QStringLiteral(u"核素分析视图"),
MeasureAnalysisViewType::NuclideAnalysis },
{ QStringLiteral(u"粒子入射时间分析视图"),
MeasureAnalysisViewType::ParticleInTime },
{ QStringLiteral(u"粒子时间差分析视图"),
MeasureAnalysisViewType::ParticleTimeDiff },
{ QStringLiteral(u"符合事件时间分析视图"),
MeasureAnalysisViewType::CoincidenceEventTime },
{ QStringLiteral(u"符合能谱分析视图"),
MeasureAnalysisViewType::CoincidenceEnergySpectrum },
{ QStringLiteral(u"反符合能谱分析视图"),
MeasureAnalysisViewType::AntiCoincidenceSpectrum }
};
MeasureAnalysisView *MeasureAnalysisView::NewAnalyzeView(const QString& view_type_text)
{
MeasureAnalysisView* new_view = nullptr;
if (_s_analyze_view_type_list.contains(view_type_text)) {
MeasureAnalysisViewType view_type = _s_analyze_view_type_list[view_type_text];
switch (view_type) {
case MeasureAnalysisViewType::DataTable: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::CountSpectrum: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::CoincidenceEnergySpectrum3D: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::CountingRate: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::EnergyPeakFit: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::NuclideAnalysis: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::ParticleInTime: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::ParticleTimeDiff: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::CoincidenceEventTime: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::CoincidenceEnergySpectrum: {
new_view = new MeasureAnalysisDataTableView;
} break;
case MeasureAnalysisViewType::AntiCoincidenceSpectrum: {
new_view = new MeasureAnalysisDataTableView;
} break;
default:
break;
}
}
return new_view;
}
const QString &MeasureAnalysisView::GetAnalyzeViewTypeText(MeasureAnalysisViewType type)
{
QString view_type_text;
auto it_type = MeasureAnalysisView::_s_analyze_view_type_list.constBegin();
auto it_type_end = MeasureAnalysisView::_s_analyze_view_type_list.constEnd();
for (; it_type != it_type_end; ++it_type) {
if (type == it_type.value()) {
view_type_text = it_type.key();
break;
}
}
return view_type_text;
}
MeasureAnalysisView::MeasureAnalysisView(QWidget* parent)
: QWidget { parent }
{
_view_type = MeasureAnalysisViewType::None;
}
MeasureAnalysisViewType MeasureAnalysisView::GetAnalyzeViewType()
{
return _view_type;
}
const QString &MeasureAnalysisView::GetAnalyzeViewTypeText() const
{
QString view_type_text;
auto it_type = MeasureAnalysisView::_s_analyze_view_type_list.constBegin();
auto it_type_end = MeasureAnalysisView::_s_analyze_view_type_list.constEnd();
for (; it_type != it_type_end; ++it_type) {
if (_view_type == it_type.value()) {
view_type_text = it_type.key();
}
}
return view_type_text;
}
void MeasureAnalysisView::SetViewName(const QString &name)
{
this->_name = name;
}
void MeasureAnalysisView::SetViewDescription(const QString &description)
{
this->_description = description;
}
const QString &MeasureAnalysisView::GetViewName() const
{
return this->_name;
}
const QString &MeasureAnalysisView::GetViewDescription() const
{
return this->_description;
}
void MeasureAnalysisView::setAnalyzeViewType(MeasureAnalysisViewType type)
{
_view_type = type;
}
QDataStream& operator<<(QDataStream& out, const MeasureAnalysisView& view)
{
return out;
}
QDataStream& operator>>(QDataStream& in, MeasureAnalysisView& view)
{
return in;
}