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();