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
timeseriestablemodel.h
Go to the documentation of this file.
1
32#ifndef OPENSWMMVIS_UI_PANELS_TIMESERIESTABLEMODEL_H
33#define OPENSWMMVIS_UI_PANELS_TIMESERIESTABLEMODEL_H
34
35#include <QAbstractTableModel>
36#include <QPointer>
37#include <QVector>
38
39class QUndoStack;
40
42class TimeseriesProvider;
43}
44
45namespace openswmmvis::ui {
46
47class TimeseriesTableModel : public QAbstractTableModel
48{
49 Q_OBJECT
50
51public:
52 enum class LayoutMode {
55 };
56 Q_ENUM(LayoutMode)
57
58 explicit TimeseriesTableModel(QObject *parent = nullptr);
59 ~TimeseriesTableModel() override;
60
63 void setProviders(QVector<openswmmvis::timeseries::TimeseriesProvider *> providers);
64
68 QVector<openswmmvis::timeseries::TimeseriesProvider *> providers() const;
69
70 LayoutMode layoutMode() const noexcept { return m_layout; }
71
74 void setUndoStack(QUndoStack *stack) { m_undoStack = stack; }
75 QUndoStack *undoStack() const noexcept { return m_undoStack; }
76
77 // ── QAbstractTableModel ────────────────────────────────────────────────
78
79 int rowCount(const QModelIndex &parent = {}) const override;
80 int columnCount(const QModelIndex &parent = {}) const override;
81 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
82 bool setData(const QModelIndex &index, const QVariant &value,
83 int role = Qt::EditRole) override;
84 QVariant headerData(int section, Qt::Orientation orientation,
85 int role = Qt::DisplayRole) const override;
86 bool setHeaderData(int section, Qt::Orientation orientation,
87 const QVariant &value, int role = Qt::EditRole) override;
88 Qt::ItemFlags flags(const QModelIndex &index) const override;
89
90private slots:
91 void onProviderPointsChanged_(int firstIndex, int count);
92 void onProviderPointsInserted_(int at, int count);
93 void onProviderPointsRemoved_(int at, int count);
94 void onProviderMetadataChanged_();
95 void onProviderSourceModeChanged_();
96
97private:
98 QVector<QPointer<openswmmvis::timeseries::TimeseriesProvider>> m_providers;
100 QUndoStack *m_undoStack = nullptr;
101
103 void detectLayout_();
104
106 void connectProvider_(openswmmvis::timeseries::TimeseriesProvider *p);
107 void disconnectProvider_(openswmmvis::timeseries::TimeseriesProvider *p);
108
110 int providerIndex_(const openswmmvis::timeseries::TimeseriesProvider *p) const;
111
113 bool anyExternal_() const;
114};
115
116} // namespace openswmmvis::ui
117
118#endif // OPENSWMMVIS_UI_PANELS_TIMESERIESTABLEMODEL_H
Definition timeseriesprovider.h:43
Definition timeseriestablemodel.h:48
~TimeseriesTableModel() override
Definition timeseriestablemodel.cpp:34
QVector< openswmmvis::timeseries::TimeseriesProvider * > providers() const
Currently-bound providers. In Divergent mode this still contains every passed provider; only provider...
Definition timeseriestablemodel.cpp:40
void setProviders(QVector< openswmmvis::timeseries::TimeseriesProvider * > providers)
Bind to a set of sibling providers. Empty list clears. Auto-detects layout mode from current grids.
Definition timeseriestablemodel.cpp:48
LayoutMode
Definition timeseriestablemodel.h:52
@ SharedGrid
All providers share a common time vector.
@ Divergent
Falls back to single-provider view.
void setUndoStack(QUndoStack *stack)
Set the undo stack used for cell mutations / header renames. Pass nullptr to apply changes directly.
Definition timeseriestablemodel.h:74
bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole) override
Definition timeseriestablemodel.cpp:247
int columnCount(const QModelIndex &parent={}) const override
Definition timeseriestablemodel.cpp:131
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition timeseriestablemodel.cpp:268
QUndoStack * undoStack() const noexcept
Definition timeseriestablemodel.h:75
LayoutMode layoutMode() const noexcept
Definition timeseriestablemodel.h:70
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition timeseriestablemodel.cpp:230
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition timeseriestablemodel.cpp:138
int rowCount(const QModelIndex &parent={}) const override
Definition timeseriestablemodel.cpp:121
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition timeseriestablemodel.cpp:167
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:22
ArrowPlacement p
Definition linesymbollayer.cpp:27
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
Definition timeseriesprovider.h:34
Definition openswmmvislayer.h:43
int count
Definition numberformat.cpp:101
QVector< int > parent
union-find
Definition pslgminsize.cpp:176