code_production/app/HGProductionTool/dialog_login.cpp

247 lines
6.9 KiB
C++

#include "dialog_login.h"
#include "ui_dialog_login.h"
#include <QMessageBox>
#include <QRegExpValidator>
#include <QMouseEvent>
#include <QFileDialog>
#include <QDesktopServices>
#include "base/HGUtility.h"
#include "HGString.h"
#include "HGUIGlobal.h"
#include "dialog_registeraccount.h"
#include "app_cfg.h"
Dialog_logIn::Dialog_logIn(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog_logIn)
, m_accountName("")
, m_deviceType(DeviceType_G100)
, m_deviceConfig("")
, m_loginType(LogInType_Station1)
{
ui->setupUi(this);
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
ui->comboBox_deviceType->addItem("G100");
ui->comboBox_deviceType->addItem("G200");
ui->comboBox_deviceType->addItem("G300");
ui->comboBox_deviceType->addItem("G400");
ui->comboBox_deviceType->setCurrentIndex(getCfgValue("login", "devType", 0));
QFont ft;
ft.setPointSize(15);
this->setFont(ft);
QFont ft2;
ft2.setPointSize(8);
ui->lineEdit_password->setFont(ft2);
ui->pbtn_login->setDefault(true);
saveCfgValue("admin", "password", getCfgValue("admin", "password", QString("huagaoadmin")));
int type = getCfgValue("login", "station", 0);
if (0 == type)
{
ui->radioButton_station1->setChecked(true);
}
else if (1 == type)
{
ui->radioButton_station2->setChecked(true);
}
else if (2 == type)
{
ui->radioButton_station3->setChecked(true);
}
updateProfileFileList();
ui->lineEdit_password->setEchoMode(QLineEdit::EchoMode::Password);
ui->lineEdit_account->setText(getCfgValue("login", "account", QString("")));
ui->checkBox_showPswd->setChecked(getCfgValue("login", "showPassword", false));
ui->checkBox_rememberPswd->setChecked(getCfgValue("login", "rememberPassword", false));
if (ui->lineEdit_account->text() == "admin")
ui->checkBox_rememberPswd->setChecked(false);
if (ui->checkBox_rememberPswd->isChecked())
{
QString account = ui->lineEdit_account->text();
QString cfgPassword = getCfgValue(account.toLocal8Bit().toStdString().c_str(), "password", QString(""));
if (!cfgPassword.isEmpty())
{
ui->lineEdit_password->setText(cfgPassword);
}
}
}
Dialog_logIn::~Dialog_logIn()
{
delete ui;
}
QString Dialog_logIn::GetAccountName()
{
return m_accountName;
}
Dialog_logIn::DeviceType Dialog_logIn::GetDeviceType()
{
return m_deviceType;
}
QString Dialog_logIn::GetDeviceConfig()
{
return m_deviceConfig;
}
Dialog_logIn::LogInType Dialog_logIn::GetLogInType()
{
return m_loginType;
}
QString Dialog_logIn::getConfigFilePath()
{
HGChar configPath[512];
HGBase_GetDocumentsPath(configPath, 512);
HGChar procName[512];
HGBase_GetProcessName(procName, 512);
strcat(configPath, procName);
strcat(configPath, "/Profile/");
return getStdFileName(StdStringToUtf8(configPath).c_str());
}
void Dialog_logIn::updateProfileFileList()
{
ui->comboBox_deviceConfig->clear();
QString configFilePath = getConfigFilePath() + ui->comboBox_deviceType->currentText();
QDir dir(configFilePath);
if (dir.exists())
{
QFileInfoList fileList = dir.entryInfoList(QDir::Files);
for (int i = 0; i < fileList.size(); ++i)
{
QFileInfo file(fileList[i]);
ui->comboBox_deviceConfig->addItem(file.baseName());
}
}
if (ui->comboBox_deviceConfig->count() > 0)
{
QString fileName = getCfgValue("login", "profile", QString(""));
QFileInfo file(fileName);
ui->comboBox_deviceConfig->setCurrentText(file.baseName());
}
}
void Dialog_logIn::on_pbtn_login_clicked()
{
QString account = ui->lineEdit_account->text();
QString password = ui->lineEdit_password->text();
QString cfgPassword = getCfgValue(account.toLocal8Bit().toStdString().c_str(), "password", QString(""));
if (cfgPassword.isEmpty())
{
QMessageBox::information(this, tr("Prompt"), tr("Account dose not exist"));
return;
}
if (password.isEmpty())
{
QMessageBox::information(this, tr("Prompt"), tr("Password can not be empty"));
return;
}
if (password != cfgPassword)
{
QMessageBox::information(this, tr("Prompt"), tr("Password error"));
return;
}
if (ui->comboBox_deviceConfig->currentText().isEmpty())
{
QMessageBox::information(this, tr("Prompt"), tr("Please select a profile first"));
return;
}
m_accountName = account;
saveCfgValue("login", "account", account);
saveCfgValue("login", "rememberPassword", ui->checkBox_rememberPswd->isChecked());
saveCfgValue("login", "showPassword", ui->checkBox_showPswd->isChecked());
m_deviceType = (DeviceType)ui->comboBox_deviceType->currentIndex();
saveCfgValue("login", "devType", m_deviceType);
m_deviceConfig = getConfigFilePath() + ui->comboBox_deviceType->currentText() + "/" + ui->comboBox_deviceConfig->currentText() + ".json";
saveCfgValue("login", "profile", m_deviceConfig);
m_loginType = LogInType_Station1;
if (ui->radioButton_station2->isChecked())
m_loginType = LogInType_Station2;
else if (ui->radioButton_station3->isChecked())
m_loginType = LogInType_Station3;
saveCfgValue("login", "station", m_loginType);
accept();
}
void Dialog_logIn::on_pbtn_register_clicked()
{
Dialog_RegisterAccount dlg(this);
dlg.exec();
}
void Dialog_logIn::on_checkBox_showPswd_toggled(bool checked)
{
ui->lineEdit_password->setEchoMode(checked ? QLineEdit::Normal : QLineEdit::Password);
}
void Dialog_logIn::on_pushButton_updateConfig_clicked()
{
updateProfileFileList();
}
void Dialog_logIn::on_pushButton_viewDirectory_clicked()
{
QString configName = ui->comboBox_deviceConfig->currentText();
QString fileName = getConfigFilePath();
if (!configName.isEmpty())
{
fileName = getConfigFilePath() + ui->comboBox_deviceType->currentText() + "/" + configName.toLocal8Bit() + ".json";
}
else
{
fileName.chop(1);
HGBase_CreateDir(fileName.toStdString().c_str());
}
QFileInfo fileInfo(fileName);
auto pathDir = fileInfo.path();
QString strFilePath = "file:///" + pathDir;
bool ret = QDesktopServices::openUrl(QUrl(strFilePath));
if (!ret)
QMessageBox::information(this, tr("Prompt"), tr("Profile is not exsits"));
}
void Dialog_logIn::on_comboBox_deviceType_currentIndexChanged(const QString &arg1)
{
updateProfileFileList();
if ("G100" == arg1 || "G200" == arg1)
{
ui->radioButton_station1->setText(tr("init test"));
ui->radioButton_station2->setText(tr("image test"));
ui->radioButton_station3->setText(tr("finish test"));
}
else
{
ui->radioButton_station1->setText(tr("burn"));
ui->radioButton_station2->setText(tr("init test"));
ui->radioButton_station3->setText(tr("image test"));
}
}