#pragma once #include <QString> #include <QWidget> #include <QMap> #include <QIcon> #include <memory> class IconLabel; class QToolButton; class QHBoxLayout; class StatusChecker; class ServerStatus: public QWidget { Q_OBJECT public: explicit ServerStatus(QWidget *parent = nullptr, Qt::WindowFlags f = 0); virtual ~ServerStatus(); public slots: void reloadStatus(); void StatusChanged(const QMap<QString, QString> statuses); void StatusReloading(bool is_reloading); private slots: void clicked(); private: /* methods */ void addLine(); void addStatus(QString key, QString name); void setStatus(QString key, int value); private: /* data */ QHBoxLayout * layout = nullptr; QToolButton *m_statusRefresh = nullptr; QMap<QString, IconLabel *> serverLabels; QIcon goodIcon; QIcon yellowIcon; QIcon badIcon; std::shared_ptr<StatusChecker> m_statusChecker; };