From 13b6249da679f28eea965ee32c82f961bead52f5 Mon Sep 17 00:00:00 2001 From: donghualin Date: Thu, 6 Jun 2024 14:35:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dp4-login-plugin/dp4_login_module.cpp | 17 ++++++++++++++++- dp4-login-plugin/dp4loginwidget.cpp | 9 +++++++++ dp4-login-plugin/dp4loginwidget.h | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/dp4-login-plugin/dp4_login_module.cpp b/dp4-login-plugin/dp4_login_module.cpp index 2529f1c..6f0d4ff 100644 --- a/dp4-login-plugin/dp4_login_module.cpp +++ b/dp4-login-plugin/dp4_login_module.cpp @@ -77,7 +77,12 @@ std::string Dp4LoginModule::onMessage(const std::string &message) QJsonObject data = msgObj.value("Data").toObject(); qInfo() << "Cmd type: " << cmdType; if (cmdType == "CurrentUserChanged") { - + QJsonObject data = msgObj.value("Data").toObject(); + QString userName = data.value("Name").toString(); + QString fullName = data.value("Fullname").toString(); + QString avatar = data.value("Avatar").toString(); + Dp4LoginWidget *loginWidget = static_cast(content()); + loginWidget->setCurrentAccount(userName, fullName, avatar); } else if (cmdType == "GetConfigs") { QJsonObject retDataObj; retDataObj["ShowAvatar"] = false; @@ -101,6 +106,16 @@ std::string Dp4LoginModule::onMessage(const std::string &message) // 验证后接收到了错误的消息 Dp4LoginWidget *loginWidget = static_cast(content()); loginWidget->setMessage(data.value("type").toString(), data.value("message").toString()); + } else if (cmdType == "GetAuthenInfo") { + QJsonObject retDataObj; + // 是否需要调用外部的登录方式 + retDataObj.insert("AuthenType", "password"); + retObj["Data"] = retDataObj; + } else if (cmdType == "IsPluginEnabled") { + QJsonObject retDataObj; + // 当前插件自动启动 + retDataObj.insert("IsPluginEnabled", true); + retObj["Data"] = retDataObj; } QJsonDocument doc; diff --git a/dp4-login-plugin/dp4loginwidget.cpp b/dp4-login-plugin/dp4loginwidget.cpp index 0dd7ec4..3c3a65e 100644 --- a/dp4-login-plugin/dp4loginwidget.cpp +++ b/dp4-login-plugin/dp4loginwidget.cpp @@ -72,6 +72,15 @@ void Dp4LoginWidget::setMessage(const QString &type, const QString &message) } } +void Dp4LoginWidget::setCurrentAccount(const QString &accountName, const QString &fullname, const QString &avatar) +{ + // TODO: 切换账户后,会处罚该函数,请在此处完善(这里设置在切换账户后把当前的用户名设置为切换后的用户名,具体业务请开发根据实际要求来) + // accountName为登录账户名,fullname为当前账户在控制中心显示的名称,avatar表示当前用户的图标,就是控制中心设置的那个图标 + m_username->setText(accountName); + m_password->clear(); + qDebug() << "accountName" << accountName << fullname << avatar; +} + void Dp4LoginWidget::Logon() { // TODO: 这里由开发人员自行添加dp的验证流程,如果在dde-session-shell验证之前,请在这里写验证流程, diff --git a/dp4-login-plugin/dp4loginwidget.h b/dp4-login-plugin/dp4loginwidget.h index b9fa656..58263bb 100644 --- a/dp4-login-plugin/dp4loginwidget.h +++ b/dp4-login-plugin/dp4loginwidget.h @@ -11,7 +11,6 @@ struct AuthCallbackData; } }; - class Dp4LoginWidget : public QWidget { Q_OBJECT @@ -22,6 +21,7 @@ public: void setCallback(dss::module::LoginCallBack *callback); void updateAuthenResult(int type, int state); void setMessage(const QString &type, const QString &message); + void setCurrentAccount(const QString &accountName, const QString &fullname, const QString &avatar); private: void Logon();