#ifndef TRANSMITTERSWITCH_H
#define TRANSMITTERSWITCH_H

#include <QWidget>
#include <QVector>
#include <QPushButton>
#include <QLabel>

class WidgetItems;
class FromWebAPI;

namespace Ui {
class TransmitterSwitch;
}

class TransmitterSwitch : public QWidget
{
    Q_OBJECT

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

    /* 设置样式表 */
    void setQSS(const QString &qssPath);
    /* 设置WebAPI信息 */
    void setWebAPIInfo(const QString &url, const QString &serverID, const QString &serverKey);
    /* 获取EQM数据库计划 */
    void getExecPlanFromEQM();
    /* 将计划保存到EQM数据库 */
    void saveExecPlanToEQM();

private slots:
    /* 每周几的按钮点击了,设置stackedWidegt页面 */
    void do_weekpBtn_clicked();
    /* 点击了添加计划按钮 */
    void do_pBtnAddExecPlan();

    /* 删除一项正常日计划 */
    void do_deleteOneItem(int week, int index);
    /* 一个计划修改了设备 */
    void do_changeDev();
    /* 点击修改执行时间 */
    void do_editExecTime(QTime t);
    /* 点击修改日期 */
    void do_editExecDate(QDate d);

    /* 导入模板 */
    void do_importData();
    /* 保存为模板 */
    void do_exportData();
    /* 清空当前页计划 */
    void do_clearCurrentPage();
    /* 删除一个模板 */
    void do_deleteTemplate(QString name);

private:
    /* 创建一周8天的item页面 */
    void createWeekWidget();
    /* 添加一个正常日的计划 */
    void addNormalOneItem(int week, QString devName, QString action, QTime execTime);
    /* 添加一项特殊日计划 */
    void addSpecialOneItem(int week, QString devName, QString action, QDate date, QTime execTime);

    /* 重新排序布局 */
    void sortLayout(int weekDay);
    /* 排序正常日 */
    void sortItemData(int weekDay);
    /* 重新布局项 */
    void sortLayoutUI(int weekDay);

protected:
    /* 事件过滤器 */
    bool eventFilter(QObject *watched, QEvent *event);

private:
    Ui::TransmitterSwitch *ui;

    QLabel* m_tipText = nullptr;            /* 提示文本 */
    QString m_styleSheet;                   /* 样式表 */

    QVector<QPushButton*> m_vecWeeks;       /* 存储一周8天的按钮指针,方便后续操作 */
    QVector<WidgetItems*> m_vecWidgetItems; /* 存储每周8天的item页面 */
    QVector<QLayout*> m_vecLayouts;         /* 存储每周8天的layout,item都添加到这里面 */

    FromWebAPI* m_fromWebAPI = nullptr;     /* WebAPI操作类 */
    
};

#endif // TRANSMITTERSWITCH_H