// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #include "dp4_login_module.h" #include "dp4loginwidget.h" #include #include namespace dss { namespace module { Dp4LoginModule::Dp4LoginModule(QObject *parent) : QObject(parent) , m_callbackFun(nullptr) , m_callbackData(new AuthCallbackData) , m_messageCallbackFunc(nullptr) , m_dp4Widget(new Dp4LoginWidget) { setObjectName(QStringLiteral("Dp4LoginModule")); installTranslator(); QString testText = tr("test"); QString test1 = tr("my name is"); // 以下部分爲測試代碼,具體如何寫請根據實際的業務來處理即可 /*m_callbackData->account = "uos"; m_callbackData->token = "1"; m_callbackData->result = 0; */ } Dp4LoginModule::~Dp4LoginModule() { if (m_callbackData) { delete m_callbackData; } } void Dp4LoginModule::init() { } QWidget *Dp4LoginModule::content() { return m_dp4Widget; } void Dp4LoginModule::reset() { init(); } void Dp4LoginModule::installTranslator() { // 加载翻译文件 QString translationFile = QString("%1/dp4-login-plugin_%2.qm").arg(QM_FILES_DIR).arg(QLocale::system().name()); QFile file(translationFile); if (!file.exists()) return; static QTranslator translator(this); translator.load(translationFile); QApplication::installTranslator(&translator); } void Dp4LoginModule::setCallback(LoginCallBack *callback) { m_callback = callback; m_callbackFun = callback->authCallbackFun; } std::string Dp4LoginModule::onMessage(const std::string &message) { qInfo() << Q_FUNC_INFO; QJsonParseError jsonParseError; const QJsonDocument messageDoc = QJsonDocument::fromJson(QByteArray::fromStdString(message), &jsonParseError); if (jsonParseError.error != QJsonParseError::NoError || messageDoc.isEmpty()) { qWarning() << Q_FUNC_INFO << "Failed to obtain message from shell!: " << QString::fromStdString(message); return ""; } QJsonObject retObj; retObj["Code"] = 0; retObj["Message"] = "Success"; QJsonObject msgObj = messageDoc.object(); QString cmdType = msgObj.value("CmdType").toString(); QJsonObject data = msgObj.value("Data").toObject(); qInfo() << "Cmd type: " << cmdType; if (cmdType == "CurrentUserChanged") { } else if (cmdType == "GetConfigs") { QJsonObject retDataObj; retDataObj["ShowAvatar"] = false; retDataObj["ShowUserName"] = false; retDataObj["ShowSwitchButton"] = false; retDataObj["ShowLockButton"] = false; retDataObj["DefaultAuthLevel"] = DefaultAuthLevel::StrongDefault; retDataObj["AuthType"] = AuthType::AT_Custom; retObj["Data"] = retDataObj; } else if (cmdType == "StartAuth") { } else if (cmdType == "AuthState") { } else if (cmdType == "LimitsInfo") { } QJsonDocument doc; doc.setObject(retObj); return doc.toJson().toStdString(); } } }