QtIndustrialWidgets 2.3.0
Modern, High-Performance Industrial Instruments & SCADA Widgets for Qt
Loading...
Searching...
No Matches
AnnunciatorPanel.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 Paolo Sereno <paolomsereno@gmail.com>
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#pragma once
8
10#include <QtWidgets/QWidget>
11#include <QtGui/QColor>
12#include <QtCore/QVector>
13#include <QtCore/QString>
14#include <memory>
15
46namespace QtIndustrialWidgets {
47
48class AnnunciatorPanelPrivate;
49
51{
52 Q_OBJECT
53
54 Q_PROPERTY(int rows READ rows WRITE setRows NOTIFY appearanceChanged)
55 Q_PROPERTY(int columns READ columns WRITE setColumns NOTIFY appearanceChanged)
56 Q_PROPERTY(int tileCount READ tileCount NOTIFY appearanceChanged)
57 Q_PROPERTY(AnnunciatorSequence sequence READ sequence WRITE setSequence NOTIFY appearanceChanged)
58 Q_PROPERTY(bool lampTestActive READ isLampTestActive WRITE setLampTest NOTIFY appearanceChanged)
59 Q_PROPERTY(bool audibleHornActive READ isAudibleHornActive NOTIFY audibleHornChanged)
60 Q_PROPERTY(int activeAlarmsCount READ activeAlarmsCount NOTIFY activeAlarmsCountChanged)
61 Q_PROPERTY(int unacknowledgedCount READ unacknowledgedCount NOTIFY unacknowledgedCountChanged)
62 Q_PROPERTY(QColor frameColor READ frameColor WRITE setFrameColor NOTIFY appearanceChanged)
63 Q_PROPERTY(QColor gridColor READ gridColor WRITE setGridColor NOTIFY appearanceChanged)
64 Q_PROPERTY(QColor criticalColor READ criticalColor WRITE setCriticalColor NOTIFY appearanceChanged)
65 Q_PROPERTY(QColor warningColor READ warningColor WRITE setWarningColor NOTIFY appearanceChanged)
66 Q_PROPERTY(QColor advisoryColor READ advisoryColor WRITE setAdvisoryColor NOTIFY appearanceChanged)
67 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY appearanceChanged)
68
69public:
71 enum class Severity {
72 Critical,
73 Warning,
74 Advisory
75 };
76 Q_ENUM(Severity)
77
78
79 enum class AlarmState {
80 Normal,
81 Unacknowledged,
82 Acknowledged,
83 Ringback
84 };
85 Q_ENUM(AlarmState)
86
87
88 enum class AnnunciatorSequence {
89 SequenceA_AutomaticReset,
90 SequenceM_ManualReset
91 };
92 Q_ENUM(AnnunciatorSequence)
93
94
95 struct TileData {
96 QString text;
97 Severity severity{Severity::Critical};
98 AlarmState state{AlarmState::Normal};
99 bool alarmActive{false};
100 };
101
106 explicit AnnunciatorPanel(QWidget *parent = nullptr);
113 AnnunciatorPanel(int rows, int cols, QWidget *parent = nullptr);
114 ~AnnunciatorPanel() override;
115
117 [[nodiscard]] int rows() const;
119 [[nodiscard]] int columns() const;
121 [[nodiscard]] int tileCount() const;
123 [[nodiscard]] AnnunciatorSequence sequence() const;
125 [[nodiscard]] bool isLampTestActive() const;
127 [[nodiscard]] bool isAudibleHornActive() const;
129 [[nodiscard]] int activeAlarmsCount() const;
131 [[nodiscard]] int unacknowledgedCount() const;
132
134 [[nodiscard]] QString tileText(int index) const;
136 [[nodiscard]] Severity tileSeverity(int index) const;
138 [[nodiscard]] AlarmState tileState(int index) const;
140 [[nodiscard]] bool isAlarmActive(int index) const;
141
143 [[nodiscard]] QColor frameColor() const;
145 [[nodiscard]] QColor gridColor() const;
147 [[nodiscard]] QColor criticalColor() const;
149 [[nodiscard]] QColor warningColor() const;
151 [[nodiscard]] QColor advisoryColor() const;
153 [[nodiscard]] QColor textColor() const;
154
155 [[nodiscard]] QSize sizeHint() const override;
156 [[nodiscard]] QSize minimumSizeHint() const override;
157
158public Q_SLOTS:
160 void setRows(int rows);
162 void setColumns(int cols);
164 void setGridSize(int rows, int cols);
166 void setSequence(AnnunciatorSequence sequence);
167
169 void setTileText(int index, const QString &text);
171 void setTileText(int row, int col, const QString &text);
173 void setTileSeverity(int index, Severity severity);
175 void setTileSeverity(int row, int col, Severity severity);
176
178 void setAlarmActive(int index, bool active);
180 void setAlarmActive(int row, int col, bool active);
182 void triggerAlarm(int index);
184 void clearAlarm(int index);
185
187 void acknowledgeAll();
189 void acknowledge(int index);
191 void silence();
193 void resetAll();
195 void reset(int index);
196
198 void setLampTest(bool active);
199
201 void setFrameColor(const QColor &color);
203 void setGridColor(const QColor &color);
205 void setCriticalColor(const QColor &color);
207 void setWarningColor(const QColor &color);
209 void setAdvisoryColor(const QColor &color);
211 void setTextColor(const QColor &color);
212
213Q_SIGNALS:
215 void tileClicked(int index);
217 void tileStateChanged(int index, AlarmState newState);
219 void audibleHornChanged(bool active);
221 void activeAlarmsCountChanged(int count);
223 void unacknowledgedCountChanged(int count);
225 void appearanceChanged();
226
227protected:
228 void paintEvent(QPaintEvent *event) override;
229 void resizeEvent(QResizeEvent *event) override;
230 void changeEvent(QEvent *event) override;
231 void mousePressEvent(QMouseEvent *event) override;
232
233private Q_SLOTS:
234 void onFlashTimerTick();
235
236private:
237 void invalidateCache();
238 void renderStaticFrame(const QSize &size);
239 void updateHornAndSummary();
240 [[nodiscard]] QRectF calculateTileRect(int row, int col) const;
241 [[nodiscard]] int tileIndexAt(const QPointF &pos) const;
242 [[nodiscard]] QColor colorForSeverity(Severity severity, bool lit) const;
243
244 std::unique_ptr<AnnunciatorPanelPrivate> d_ptr;
245 Q_DECLARE_PRIVATE(AnnunciatorPanel)
246};
247
248} // namespace QtIndustrialWidgets
Definition AnnunciatorPanel.h:51
Definition AnalysisChart.h:21
Library export macros and version definitions for QtIndustrialWidgets.
#define QTINDUSTRIALWIDGETS_EXPORT
Export/import macro for shared library symbol visibility across dynamic linking boundaries.
Definition qtindustrialwidgets_global.h:25