#ifndef ONESETTINGITEM_H
#define ONESETTINGITEM_H

#include <QWidget>
#include "spdlog/spdlog.h"
#include "EyeMapInfo.h"

namespace Ui {
class OneSettingItem;
}

class OneSettingItem : public QWidget
{
    Q_OBJECT

public:
    explicit OneSettingItem(QWidget *parent = nullptr);
    ~OneSettingItem();

    /* 设置序号 */
    void setNum(int num);
    /* 获取序号 */
    int getNum() { return eyeMapInfo.num; }
    /* 设置颜色 */
    void setColor(const QColor& color);
    /* 获取所有信息 */
    OneEyeMapInfo& getEyeMapInfo();
    /* 设置项信息 */
    void setItemInfo(const OneEyeMapInfo& info);
    /* 设置可选通道列表 */
    void setChannelList(const QList<OneChannelInfo>& list);
    /* 设置当前通道号 */
    void setCurrentChannel(const QString& channelName);
    void setCurrentChannel(const OscChnNum channel);
    /* 获取当前通道号 */
    OneChannelInfo  getCurrentChannel();

    /* 设置自定义的通道名称栏报警 */
    void setChannelNameAlarm(bool isAlarm);
    /* 设置通道选择栏报警 */
    void setChannelSelectAlarm(bool isAlarm);

signals:
    /* 选择了通道号信号 */
    void signal_select_channel(const OscChnNum channel, const QString& channelName);

protected:
    /* 滚轮事件 */
    // void wheelEvent(QWheelEvent *event) override;
    /* 事件过滤器 */
    bool eventFilter(QObject *watched, QEvent *event) override;

private slots:
    /* 设置颜色 */
    void do_pBtn_background();
    /* 选择了通道号 */
    void do_select_channel(int index);

private:
    OneEyeMapInfo eyeMapInfo;
private:
    Ui::OneSettingItem *ui;
    std::shared_ptr<spdlog::logger> m_logger = nullptr;
};

#endif // ONESETTINGITEM_H