#ifndef COALDISTRIBUTBARCHARTWIDGET_H
#define COALDISTRIBUTBARCHARTWIDGET_H

#include <QDateTime>
#include <QObject>
#include <QSettings>
#include <QTimer>
#include <QWidget>

#include <QDateTimeAxis>
#include <QNetworkProxy>
#include <QTcpSocket>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QCategoryAxis>
#include <QtCharts/QChartView>
#include <QtCharts/QValueAxis>

QT_CHARTS_USE_NAMESPACE

class CoalDistributBarChartWidget : public QWidget {
    Q_OBJECT
public:
    explicit CoalDistributBarChartWidget(QWidget* parent = nullptr);
    ~CoalDistributBarChartWidget();

private slots:
    void updateChart();

private:
    void initializeChart();

    void setupTimer();

    /**
     * @brief connectTCPSocket 连接到TCP服务
     */
    void connectTCPSocket();

    /**
     * @brief getCoalRatioByTCPSocket通过TCP协议获取煤量占比
     * @return 煤量占比
     */
    int getCoalRatioByTCPSocket();

    /**
     * @brief createModbusTcpRequest 构建ModbusTCP报文
     * @return  返回报文
     */
    QByteArray createModbusTcpRequest();

private:
    QChart* m_chart;
    QChartView* m_chartView;
    QBarSeries* m_series;
    QTimer* m_timer;

    QDateTimeAxis* m_axisX;

    QBarSet* m_set;

    QTcpSocket* m_tcpSocket;

    QSettings* m_systemSetting;
};

#endif // COALDISTRIBUTBARCHARTWIDGET_H
