EnergySpectrumAnalyer/src/2DSpectralCompliance/TwoDSpectralCompliance.h

88 lines
2.2 KiB
C++

#ifndef TWODSPECTRALCOMPLIANCE_H
#define TWODSPECTRALCOMPLIANCE_H
#include <MeasureAnalysisView.h>
#include <QPoint>
#include <QVector>
#include <QWidget>
class CustomQwtPlot;
class QwtPlotSpectrogram;
class QPushButton;
class QLineEdit;
class ScatterPlotItem;
class BusyIndicator;
namespace Ui {
class TwoDSpectralCompliance;
}
struct TwoSurfacePoint {
float primaryEnergy;
float secondaryEnergySum;
int count;
};
class TwoDSpectralCompliance : public MeasureAnalysisView {
Q_OBJECT
public:
explicit TwoDSpectralCompliance(QWidget* parent = nullptr);
~TwoDSpectralCompliance();
virtual void InitViewWorkspace(const QString& project_name) override final;
virtual void SetAnalyzeDataFilename(const QMap<QString, QVariant>& data_files_set) override;
protected:
void resizeEvent(QResizeEvent* event) override;
bool eventFilter(QObject* obj, QEvent* event) override;
virtual void showEvent(QShowEvent* e) override final;
private:
void setupPlot();
void readCsv(const QStringList& filename);
void generateSurfaceData();
void updateSpectrogram();
void createFloatingInfoWidget();
void updateInfoContent();
void updateToggleButtonText();
void updateFloatingWidgetPosition();
void updateToggleButtonPosition();
void updateShowButtonPosition();
private slots:
void showFloatingWidget();
void hideFloatingWidget();
private:
Ui::TwoDSpectralCompliance* ui;
CustomQwtPlot* _plot = nullptr;
QwtPlotSpectrogram* _spectrogram = nullptr;
struct EventData {
int eventId;
int board;
int channel;
double energy;
unsigned long long timeCounter;
};
QVector<EventData> m_rawData;
QVector<TwoSurfacePoint> m_surfaceData;
QWidget* m_floatingWidget = nullptr;
QPushButton* m_toggleButton = nullptr;
QPushButton* m_showButton = nullptr;
QLineEdit* m_totalEventsEdit = nullptr;
QLineEdit* m_totalPointsEdit = nullptr;
QLineEdit* m_maxCountEdit = nullptr;
QLineEdit* m_primRangeEdit = nullptr;
QLineEdit* m_secRangeEdit = nullptr;
QPoint m_dragPosition;
bool m_dragging = false;
BusyIndicator* _busy_indicator = nullptr;
};
#endif // TWODSPECTRALCOMPLIANCE_H