#ifndef ONEITEM_H #define ONEITEM_H #include #include #include #include "TransmitterSwitchInfo.h" namespace Ui { class OneItem; } class OneItem : public QWidget { Q_OBJECT public: explicit OneItem(QWidget *parent = nullptr, bool isSpecial = false); explicit OneItem(bool isSpecial = false); ~OneItem(); /* 初始化 */ void init(); /* 获取UUID */ QUuid getUUID() { return m_uuid; } /* 设置周几 */ void setWeekDay(int week) { m_weekDay = week; } /* 获取周几 */ int getWeekDay() { return m_weekDay; } /* 设置序号 */ void setNum(int num); /* 获取序号 */ int getNum(); /* 设置日期 */ void setDate(const QDate& date); /* 获取日期 */ QDate getDate(); /* 设置执行时间 */ void setExecTime(const QTime& time); /* 获取执行时间 */ QTime getExecTime(); /* 设置设备名称 */ void setDevName(const QString& dev); /* 获取设备名称 */ QString getDevName(); /* 添加设备支持的动作 */ void addActions(); /* 获取动作名称 */ QString getActionName(); /* 获取动作ID */ int getActionNum(); /* 设置动作ID */ void setActionNum(int num); /* 添加所有设备 */ void addDevice(); /* 获取日期类型 */ bool getDateType(); /* 设置警告 */ void setWarningText(QString str,int ms = 3000); /* 隐藏警告 */ void hideWarn(); /* 获取执行时间的位置,相对于该项的位置 */ QPoint getExecTimePos(); /* 获取执行日期的位置 */ QPoint getExecDatePos(); /* 获取执行时间按钮的大小 */ QSize getExecTimeSize(); /* 获取执行日期按钮的大小 */ QSize getExecDateSize(); signals: /* 一个OneItem被删除了 */ void signal_OneItemDelete(int week, int num); /* 日期被点击了 */ void signal_dateClicked(QDate date); /* 执行时间被点击了 */ void signal_execTimeClicked(QTime time); /* 设备改变了 */ void signal_devChanged(); /* 动作修改了 */ void signal_actionChanged(); public slots: /* 设置样式表,打开的样式表 */ void do_setQSS(const QString& qss); private slots: /* 设备改变了 */ void do_devChanged(QString devName); /* 动作改变了 */ void do_actionChanged(QString action); /* 执行时间被点击了 */ void do_pBtn_execTime_clicked(); /* 执行日期被点击了 */ void do_pBtn_execDate_clicked(); /* 关闭按钮被点击了 */ void do_pBtn_close_clicked(); /* 修改了执行日期 */ void do_dateChanged(const QDate date); private: /* 根据日期类型布局 */ void layoutInit(); protected: /* 事件过滤器 */ bool eventFilter(QObject *watched, QEvent *event); private: Ui::OneItem *ui; QUuid m_uuid; /* 项的唯一识别号,做判断的时候使用 */ bool m_isSpecial = false; QTimer m_warnTimer; DeviceInfo m_devInfo; int m_weekDay = -1; int m_num = -1; QTime m_time; QDate m_date; }; #endif // ONEITEM_H