SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
datespage.h
Go to the documentation of this file.
1
20#ifndef DATESPAGE_H
21#define DATESPAGE_H
22
23#include <QDateTime>
24#include <QList>
25#include <QPair>
26
28
29class QDateEdit;
30class QDateTimeEdit;
31class QDoubleSpinBox;
32class QLabel;
33class QLineEdit;
34class QPushButton;
35class QTableWidget;
36class QTabWidget;
37class QCustomTimespanEdit;
38
39namespace openswmmvis::ui
40{
41
43{
44 Q_OBJECT
45
46public:
47 explicit DatesPage(SimOptionsContext &ctx, QWidget *parent = nullptr);
48
49 [[nodiscard]] QString title() const override;
50 void read() override;
51 int write() override;
52 bool validate(QString *warn) override;
53
56
57 [[nodiscard]] QTabWidget *tabs() const { return m_tabs; }
58
59 // ---- Schedule, published for the 2D page (PLAN ยง4.1) ------------------
60 [[nodiscard]] qint64 wetStepSeconds() const;
61 [[nodiscard]] qint64 reportStepSeconds() const;
63 [[nodiscard]] qint64 durationSeconds() const;
64
65signals:
68
69private:
70 void buildUi();
71 void tagWidgets();
72 void updateDurationLabel();
73 void addEventRow();
74 void removeSelectedEventRows();
75 void readEventsFromEngine();
76 int writeEventsToEngine();
77
78 QTabWidget *m_tabs = nullptr;
79
80 QDateTimeEdit *m_startEdit = nullptr;
81 QDateTimeEdit *m_endEdit = nullptr;
82 QDateTimeEdit *m_reportStartEdit = nullptr;
83 QLabel *m_durationLabel = nullptr; // "1d 02:30:00"
84 QCustomTimespanEdit *m_reportStepEdit = nullptr; // (days, HH:mm:ss)
85 QCustomTimespanEdit *m_dryStepEdit = nullptr; // (days, HH:mm:ss)
86 QCustomTimespanEdit *m_wetStepEdit = nullptr; // (days, HH:mm:ss)
87 QCustomTimespanEdit *m_ruleStepEdit = nullptr; // (days, HH:mm:ss)
88 QLineEdit *m_routingStepEdit = nullptr; // seconds (float text)
89 QDoubleSpinBox *m_dryDaysSpin = nullptr; // days
90 QDateEdit *m_sweepStartEdit = nullptr; // MM/DD only
91 QDateEdit *m_sweepEndEdit = nullptr; // MM/DD only
92
93 // [EVENTS] section editor (Slice CW). Each row is a {start, end} pair;
94 // the engine stores decimal-day pairs round-tripped via swmm_events_*.
95 QTableWidget *m_eventsTable = nullptr;
96 QPushButton *m_eventsAddBtn = nullptr;
97 QPushButton *m_eventsRemoveBtn = nullptr;
99 QList<QPair<QDateTime, QDateTime>> m_eventsSnapshot;
100};
101
102} // namespace openswmmvis::ui
103
104#endif // DATESPAGE_H
Definition datespage.h:43
qint64 durationSeconds() const
End โˆ’ Start in seconds; 0 when the window is empty or inverted.
Definition datespage.cpp:107
void read() override
engine โ†’ widgets. Block signals while setting.
Definition datespage.cpp:324
qint64 wetStepSeconds() const
Definition datespage.cpp:97
Tab
Tab order, so the dialog can name tabs without magic numbers.
Definition datespage.h:55
@ TabWindow
Definition datespage.h:55
@ TabSteps
Definition datespage.h:55
@ TabEvents
Definition datespage.h:55
int write() override
widgets โ†’ engine via ctx_.writeIfChanged; returns the sum.
Definition datespage.cpp:407
QString title() const override
Sidebar row text, already tr()'d.
Definition datespage.cpp:92
bool validate(QString *warn) override
Validation run before Apply/OK; false pops warn and stops.
Definition datespage.cpp:518
qint64 reportStepSeconds() const
Definition datespage.cpp:102
void scheduleChanged()
Any of the three accessors above changed.
QTabWidget * tabs() const
Definition datespage.h:57
Definition simoptionscontext.h:31
Definition simoptionspage.h:25
Definition openswmmvislayer.h:43
QVector< int > parent
union-find
Definition pslgminsize.cpp:176