功能:支持设备身份自动登录并直达桌面列表

变更详情:开机直进桌面列表——设备身份自动登录,移除登录页与退出登录入口

- 构造时以设备 SN 走演示认证,kConfig->kAuthenticating->kDesktopList 同步完成,开机不再显示登录页
- 列表页移除"退出登录"按钮(无登录概念无去向);管理菜单"退出终端"保留
- 登录页与认证代码保留,接平台正式认证后由 DesktopService 驱动恢复登录流程
- 已部署盒子并抓屏验证;文档与 MEMORY 同步
This commit is contained in:
songyiming committed 2026-10-30 09:19:17 +08:00
1 parent 7fdcb53dd9
commit 85f64df1a5
6 files changed
+31 -26

No files matched your search

+13 -11
View File
@@ -36,9 +36,19 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
config_ = loadConfig();
// 开机永远进入登录页;会话只能由用户在桌面列表选择后启动。
fsm_.transitionTo(State::kConfig, QStringLiteral("等待登录"));
showLogin();
// 开机直进桌面列表:当前无正式账号体系,设备身份(SN)即用户,自动登录。
// 登录页代码保留——接入管理平台认证后,由 DesktopService 决定是否回到登录流程;
// 会话只能由用户在桌面列表选择后启动。
fsm_.transitionTo(State::kConfig, QStringLiteral("就绪"));
const QString deviceUser = QString::fromStdString(config_.sn).trimmed();
desktopService_.login(deviceUser.isEmpty() ? QStringLiteral("terminal") : deviceUser,
QStringLiteral("kiosk"), [this](const AuthResult& result) {
if (result.ok) {
currentUser_ = result.displayName;
}
fsm_.transitionTo(State::kAuthenticating, QStringLiteral("自动登录"));
fsm_.transitionTo(State::kDesktopList, QStringLiteral("请选择要进入的云桌面"));
});
}
MainWindow::~MainWindow() {
@@ -81,7 +91,6 @@ void MainWindow::setupUi() {
connect(list, &DesktopListPage::desktopSelected, this, &MainWindow::onDesktopSelected);
connect(list, &DesktopListPage::editRequested, this, &MainWindow::onEditDesktopRequested);
connect(list, &DesktopListPage::logoutRequested, this, &MainWindow::onLogoutRequested);
// 过场层:独立置顶窗口,盖住 moonlight-qt 启动期的小窗口闪烁与分辨率切换,
// 首帧检测到后淡出。不属于 stack_(串流期间整个 kiosk 都被 moonlight 覆盖)。
@@ -268,13 +277,6 @@ void MainWindow::onEditDesktopRequested(const QString& desktopId) {
}
}
void MainWindow::onLogoutRequested() {
stopSessions();
desktopService_.logout();
currentUser_.clear();
fsm_.transitionTo(State::kConfig, QStringLiteral("已退出登录"));
}
void MainWindow::startMoonlightSession(const ConnectionTicket& ticket) {
if (!fsm_.transitionTo(State::kConnecting, ticket.endpoint)) {
return;