You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
dp4-uos/dp4-login-plugin/dp4_login_module.cpp

115 lines
3.0 KiB

// 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 <QTranslator>
#include <QApplication>
namespace dss
{
namespace module
{
Dp4LoginModule::Dp4LoginModule(QObject *parent)
: QObject(parent)
, m_callbackFun(nullptr)
, m_callbackData(new AuthCallbackData)
, m_messageCallbackFunc(nullptr)
, m_dp4Widget(nullptr)
{
setObjectName(QStringLiteral("Dp4LoginModule"));
installTranslator();
m_dp4Widget = new Dp4LoginWidget;
// 以下部分爲測試代碼,具體如何寫請根據實際的業務來處理即可
/*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();
}
}
}