#pragma once

#include <QWidget>
#include <QLabel>
#include <QPaintEvent>
#include <QList>
#include "SignalLabel.h"

#include "ui_SignalIndicatorLampUI.h"

class SignalIndicatorLampUI : public QWidget
{
	Q_OBJECT

public:
	enum LayoutType  // 信号灯布局类型
	{
		HLyt,    // 水平
		VLyt,    // 垂直
		GLyt,    // 网格
	};

	SignalIndicatorLampUI( QWidget *parent = Q_NULLPTR);
	~SignalIndicatorLampUI();

	void AttachDock(class DockWidget* dockWidget);

	void InitIndicatorLamp(QStringList &lamps, LayoutType type, int nColCount = 4);   

	void SetLampState(std::vector<int> vecStatus);

	void UpdateIndicatorLamp(QStringList& lamps, LayoutType type, int nColCount = 4);

	void InitLamp(const QString& strFile);

protected slots:
	void slotUpdateTime(double dTime);
	void onStatusChanged(int status);

protected:
	void paintEvent(QPaintEvent* event);

	void ParseLamp(const QString& strFile);

private:
	Ui::SignalIndicatorLampUI ui;

	QList<SignalLabel*> m_listLampPtr;

	QList<int> m_lampStatus;
	int m_iLampCount = 0;
};