Tuxi_Test_Qt/src/lightstripmanager.h

168 lines
4.5 KiB
C
Raw Normal View History

#ifndef LIGHTSTRIPMANAGER_H
#define LIGHTSTRIPMANAGER_H
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGroupBox>
#include <QScrollArea>
#include <QCheckBox>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QSpinBox>
#include <QComboBox>
#include <QSettings>
#include <QSet>
#include <QList>
#include <QMessageBox>
#include <QScreen>
#include <QGuiApplication>
#include <QTimer>
#include <QGridLayout>
#include <QSplitter>
#include <QResizeEvent>
2025-09-11 02:12:19 +00:00
// 新增身份信息绑定需要的头文件
#include <QDateTime>
#include <QJsonObject>
#include <QJsonDocument>
class MainWindow; // 前向声明
class LightStripManager : public QWidget
{
Q_OBJECT
public:
explicit LightStripManager(QWidget *parent = nullptr);
~LightStripManager();
// 公共接口
void addSnToList(const QString &sn);
QStringList getSelectedSns() const;
QStringList getAllSns() const;
int getSnCount() const;
2025-09-11 02:12:19 +00:00
void clearSnList();
// 新增:设置主窗口引用
void setMainWindow(MainWindow *mainWindow);
signals:
void snSelectionChanged(const QStringList &selectedSns);
void lightControlRequested(const QStringList &sns, const QString &color, bool flash, int interval, int duration, bool sound);
void clearAllRequested();
2025-09-11 02:12:19 +00:00
void snCountChanged(int count);
// 新增:身份信息绑定信号
void identityBindingRequested(const QString &sn, const QString &label1, const QString &label2, const QString &label3);
private slots:
void onClearSnListClicked();
void onSelectAllClicked();
void onDeselectAllClicked();
void onDeleteSelectedClicked();
void onAddSnManuallyClicked();
void onSearchTextChanged(const QString &text);
void onSendLightSelectedClicked();
void onSendLightAllClicked();
void onCheckBoxStateChanged();
void onRefreshClicked();
2025-09-11 02:12:19 +00:00
// 新增:身份信息绑定相关槽函数
void onBindIdentitySelectedClicked();
void onBindIdentityAllClicked();
void onLabel1Changed(const QString &text);
void onLabel2Changed(const QString &text);
void onLabel3Changed(const QString &text);
private:
void setupUI();
void setupControlPanel();
void setupSnDisplayArea();
void setupLightControlArea();
2025-09-11 02:12:19 +00:00
// 新增:身份信息绑定区域
void setupIdentityBindingArea();
void saveSnList();
void loadSnList();
void updateSnCount();
void updateControlButtons();
void filterSnDisplay(const QString &searchText);
QWidget* createSnWidget(const QString &sn);
void applyResponsiveLayout();
// 新增MQTT发送功能
void sendLightControlMessage(const QStringList &sns);
2025-09-11 02:12:19 +00:00
// 新增:身份信息绑定相关私有函数
void sendIdentityBindingMessage(const QString &sn);
QString generateMessageId() const;
void saveIdentitySettings();
void loadIdentitySettings();
protected:
void resizeEvent(QResizeEvent *event) override;
private:
// UI组件
QVBoxLayout *mainLayout;
QSplitter *mainSplitter;
// 控制面板
QGroupBox *controlGroup;
QHBoxLayout *controlLayout;
QPushButton *selectAllBtn;
QPushButton *deselectAllBtn;
QPushButton *deleteSelectedBtn;
QPushButton *clearAllBtn;
QPushButton *refreshBtn;
QLineEdit *searchEdit;
QLineEdit *manualSnEdit;
QPushButton *addSnBtn;
QLabel *snCountLabel;
// SN显示区域
QGroupBox *snDisplayGroup;
QScrollArea *snScrollArea;
QWidget *snContainerWidget;
2025-09-11 02:12:19 +00:00
QGridLayout *snGridLayout;
// 点亮控制区域
QGroupBox *lightControlGroup;
QComboBox *colorCombo;
QComboBox *flashCombo;
QSpinBox *flashIntervalSpin;
QSpinBox *lightDurationSpin;
QComboBox *soundCombo;
QPushButton *sendLightSelectedBtn;
QPushButton *sendLightAllBtn;
2025-09-11 02:12:19 +00:00
// 新增:身份信息绑定区域
QGroupBox *identityBindingGroup;
QLineEdit *label1Edit;
QLineEdit *label2Edit;
QLineEdit *label3Edit;
QPushButton *bindIdentitySelectedBtn;
QPushButton *bindIdentityAllBtn;
QLabel *bindingStatusLabel;
// 数据存储
QSettings *settings;
QSet<QString> snSet;
// 新增:主窗口引用
MainWindow *m_mainWindow;
// 新增:缺失的成员变量
2025-09-11 02:12:19 +00:00
QTimer *resizeTimer;
QSet<QString> uniqueSnSet;
QList<QWidget*> lightStripWidgets;
QList<QCheckBox*> lightStripCheckBoxes;
int columnsPerRow;
// 新增:身份信息绑定相关数据
QString currentLabel1;
QString currentLabel2;
QString currentLabel3;
};
#endif // LIGHTSTRIPMANAGER_H