功能:支持设备身份自动登录并直达桌面列表
变更详情:开机直进桌面列表——设备身份自动登录,移除登录页与退出登录入口 - 构造时以设备 SN 走演示认证,kConfig->kAuthenticating->kDesktopList 同步完成,开机不再显示登录页 - 列表页移除"退出登录"按钮(无登录概念无去向);管理菜单"退出终端"保留 - 登录页与认证代码保留,接平台正式认证后由 DesktopService 驱动恢复登录流程 - 已部署盒子并抓屏验证;文档与 MEMORY 同步
This commit is contained in:
1 parent
7fdcb53dd9
commit
85f64df1a5
6 files changed
+31
-26
No files matched your search
@@ -35,11 +35,10 @@ DesktopListPage::DesktopListPage(QWidget* parent) : QWidget(parent) {
|
||||
auto* infoRow = new QHBoxLayout();
|
||||
labelUser_ = new QLabel(this);
|
||||
labelUser_->setStyleSheet(QStringLiteral("color: #8a94a6;"));
|
||||
buttonLogout_ = new QPushButton(QStringLiteral("退出登录"), this);
|
||||
buttonLogout_->setMinimumSize(110, 38);
|
||||
// 无登录页演示模式下不设"退出登录"(用户身份由设备/平台承担,
|
||||
// 正式认证接入后由 DesktopService 驱动恢复登录流程)
|
||||
infoRow->addWidget(labelUser_);
|
||||
addStretchToRow(infoRow);
|
||||
infoRow->addWidget(buttonLogout_);
|
||||
root->addLayout(infoRow);
|
||||
|
||||
// ---- 卡片区 ----
|
||||
@@ -62,12 +61,6 @@ DesktopListPage::DesktopListPage(QWidget* parent) : QWidget(parent) {
|
||||
labelStatus_->setAlignment(Qt::AlignCenter);
|
||||
labelStatus_->setStyleSheet(QStringLiteral("color: #8a94a6;"));
|
||||
root->addWidget(labelStatus_);
|
||||
|
||||
connect(buttonLogout_, &QPushButton::clicked, this, [this]() {
|
||||
if (!busy_) {
|
||||
emit logoutRequested();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void DesktopListPage::setDesktops(const std::vector<DesktopInfo>& desktops) {
|
||||
@@ -175,7 +168,6 @@ void DesktopListPage::setStatus(const QString& text, bool error) {
|
||||
|
||||
void DesktopListPage::setBusy(bool busy) {
|
||||
busy_ = busy;
|
||||
buttonLogout_->setEnabled(!busy);
|
||||
// 连接按钮在 rebuildCards 时根据 busy_ 生成;这里统一刷新点击行为由 busy_ 拦截
|
||||
}
|
||||
|
||||
|
||||
@@ -38,8 +38,6 @@ signals:
|
||||
void desktopSelected(const QString& desktopId);
|
||||
// 用户点击某张卡片的“设置”按钮
|
||||
void editRequested(const QString& desktopId);
|
||||
// 用户点击退出登录
|
||||
void logoutRequested();
|
||||
|
||||
private:
|
||||
void rebuildCards();
|
||||
@@ -50,7 +48,6 @@ private:
|
||||
QLabel* labelUser_ = nullptr;
|
||||
QLabel* labelStatus_ = nullptr;
|
||||
QVBoxLayout* cardsLayout_ = nullptr;
|
||||
QPushButton* buttonLogout_ = nullptr;
|
||||
bool busy_ = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -47,7 +47,6 @@ private slots:
|
||||
void onLoginRequested(const QString& username, const QString& password);
|
||||
void onDesktopSelected(const QString& desktopId);
|
||||
void onEditDesktopRequested(const QString& desktopId);
|
||||
void onLogoutRequested();
|
||||
void onQuitRequested();
|
||||
void onMoonlightState(bool running, const QString& message);
|
||||
void onMenuAction(int action);
|
||||
|
||||
Reference in new issue
Block a user