// 登录页 // // 产品流程第一步:设备 SN/网络展示 + 用户认证。 // 当前为本地演示认证(账号密码非空通过),由 DesktopService 承担; // 页面只负责输入采集与状态展示,不直接连接云桌面。 #ifndef KIOSK_SHELL_LOGIN_PAGE_H #define KIOSK_SHELL_LOGIN_PAGE_H #include #include #include "config.h" class QLineEdit; class QLabel; class QPushButton; class QGridLayout; class QVBoxLayout; namespace vdi { class LoginPage : public QWidget { Q_OBJECT public: // 认证回调:由 MainWindow 接到 DesktopService using LoginHandler = std::function; explicit LoginPage(const TerminalConfig& initial, QWidget* parent = nullptr); void setLoginHandler(LoginHandler handler); void setStatus(const QString& text, bool error = false); void setBusy(bool busy); // 保留设备首配信息(SN/服务器地址),登录不再承载 Windows 直连参数 TerminalConfig deviceConfig() const; signals: void loginRequested(const QString& username, const QString& password); void quitRequested(); private slots: void onLoginClicked(); private: TerminalConfig cfg_; LoginHandler loginHandler_; QLineEdit* editUser_ = nullptr; QLineEdit* editPassword_ = nullptr; QLabel* labelStatus_ = nullptr; QLabel* labelSn_ = nullptr; QLabel* labelNetwork_ = nullptr; QPushButton* buttonLogin_ = nullptr; QPushButton* buttonQuit_ = nullptr; }; } // namespace vdi #endif // KIOSK_SHELL_LOGIN_PAGE_H