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