File indexing completed on 2024-05-12 03:47:43
0001 /* 0002 File : MQTTTopic.h 0003 Project : LabPlot 0004 Description : Represents a topic of a MQTTSubscription 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2018 Kovacs Ferencz <kferike98@gmail.com> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef MQTTTOPIC_H 0012 #define MQTTTOPIC_H 0013 0014 #include "backend/spreadsheet/Spreadsheet.h" 0015 0016 class MQTTSubscription; 0017 class MQTTClient; 0018 0019 class AsciiFilter; 0020 0021 class MQTTTopic : public Spreadsheet { 0022 Q_OBJECT 0023 0024 public: 0025 MQTTTopic(const QString& name, MQTTSubscription* subscription, bool loading = false); 0026 ~MQTTTopic() override; 0027 0028 void setFilter(AsciiFilter*); 0029 AsciiFilter* filter() const; 0030 0031 QIcon icon() const override; 0032 QMenu* createContextMenu() override; 0033 QWidget* view() const override; 0034 0035 QString topicName() const; 0036 MQTTClient* mqttClient() const; 0037 void newMessage(const QString&); 0038 0039 void save(QXmlStreamWriter*) const override; 0040 bool load(XmlStreamReader*, bool preview) override; 0041 0042 private: 0043 void initActions(); 0044 0045 QString m_topicName; 0046 MQTTClient* m_MQTTClient; 0047 AsciiFilter* m_filter; 0048 QVector<QString> m_messagePuffer; 0049 QAction* m_plotDataAction; 0050 0051 public Q_SLOTS: 0052 void read(); 0053 0054 private Q_SLOTS: 0055 void plotData(); 0056 0057 Q_SIGNALS: 0058 void readOccured(); 0059 }; 0060 0061 #endif // MQTTTOPIC_H