247 lines
6.9 KiB
C++
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"));
|
|
}
|
|
}
|