NDEVR
API Documentation
ImageReport.h
1#pragma once
2#include <NDEVR/ReportIterator.h>
3#include <NDEVR/QTDesignObject.h>
4#include <NDEVR/ApplicationOptions.h>
5#include <QMenu>
6#if NDEVR_IMAGE_MODEL
7namespace Ui
8{
9 class ImageReportUI;
10}
11namespace NDEVR
12{
13 class ImageReport;
14 class Project;
15 class QCustomComboBox;
19 enum class ImageReportType
20 {
21 e_best_fit
22 , e_vertical
23 , e_horizontal
24 };
28 class ImageReportOptions : public QMenu
29 {
30 public:
36 ImageReportOptions(ImageReportType type, QWidget* parent = nullptr);
41 ImageReportType reportType() const;
42 protected:
43 QCustomComboBox* m_type_combo;
44 };
48 class NDEVR_API ImageReportHandler : public ReportHandler
49 {
50 public:
51 ImageReportHandler();
61 virtual Buffer<UUID> defaultReportIDs(const Buffer<UUID>& objects_to_report, QTModelManager* manager) const override;
62
69 virtual bool canHandle(UUID id, QTModelManager* manager) const override;
70
78 virtual QWidget* getReport(const UUID& id, QTModelManager* manager, const QRect& requested_geometry) const override;
79
84 ImageReportType reportType() const;
91 virtual void createReportJSON(const UUID& id, JSONNode& parent, ReportJSONMaker& maker) const override;
96 virtual QMenu* popupOptions() const override;
97 protected:
98 mutable ImageReportOptions* m_report_options;
99 mutable ImageReport* m_report = nullptr;
100 static ApplicationOption<ImageReportType> s_report_type;
101 };
102
106 class ImageReport : public QWidget
107 {
108 public:
113 ImageReport(QWidget* parent = nullptr);
114 ~ImageReport();
119 void setReportType(ImageReportType report_type);
124 void setImage(const DynamicPointer<QTDesignObject>& deployment);
129 void setProject(const Project& project);
134 void resizeEvent(QResizeEvent* event);
135 protected:
139 void updateName();
143 void updateUI();
144 protected:
145 Ui::ImageReportUI* ui;
146 Time m_survey_time;
147 ImageReportType m_report_type = ImageReportType::e_best_fit;
148 };
149}
150#endif
A Model which represents a user-project.
Definition Project.h:41
A compact way to present a list of options to the user.
Handles creating a report page from some given data.
The primary namespace for the NDEVR SDK.