code_app/app/fwupgrade/main.cpp

174 lines
4.4 KiB
C++

#include "logindialog.h"
#include "mainwindow.h"
#include <QApplication>
#include <QThread>
#include <QScreen>
#include <QTranslator>
#include <QMessageBox>
#include "base/HGBase.h"
#include "HGString.h"
#if defined(HG_CMP_MSC)
#include <shlobj.h>
#else
#include <grp.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#endif
#include "log/log.h"
HLOG g_hLog = nullptr;
#if defined(OEM_HANWANG)
const char *appName = "HanvonScan";
#elif defined(OEM_LISICHENG)
const char *appName = "LanxumScan";
#elif defined(OEM_CANGTIAN)
const char *appName = "CumtennScan";
#elif defined(OEM_ZHONGJING)
const char *appName = "MicrotekScan";
#elif defined(OEM_ZIGUANG)
const char *appName = "UniScan";
#elif defined(OEM_DELI)
const char *appName = "DeliScan";
#elif defined(OEM_NEUTRAL)
const char *appName = "NeuScan";
#elif defined(OEM_MEISONGDA)
const char *appName = "MaxsoundScan";
#elif defined(OEM_GUANGDIANTONG)
const char *appName = "ToecScan";
#else
const char *appName = "HuaGoScan";
#endif
HGResult GetConfigPath(HGChar* configPath, HGUInt maxLen)
{
if (NULL == configPath || 0 == maxLen)
{
return HGBASE_ERR_INVALIDARG;
}
#if defined(HG_CMP_MSC)
CHAR cfgPath[MAX_PATH] = { 0 };
BOOL ret = SHGetSpecialFolderPathA(NULL, cfgPath, CSIDL_APPDATA, FALSE);
if (!ret)
return HGBASE_ERR_FAIL;
if (cfgPath[strlen(cfgPath) - 1] != '\\')
strcat(cfgPath, "\\");
strcat(cfgPath, appName);
strcat(cfgPath, "\\Cfg\\");
#else
char cfgPath[512] = { 0 };
struct passwd* pw = getpwuid(getuid());
strcpy(cfgPath, pw->pw_dir);
if (cfgPath[strlen(cfgPath) - 1] != '/')
strcat(cfgPath, "/");
strcat(cfgPath, ".");
strcat(cfgPath, appName);
strcat(cfgPath, "/Cfg/");
#endif
if (maxLen < strlen(cfgPath) + 1)
return HGBASE_ERR_FAIL;
strcpy(configPath, cfgPath);
return HGBASE_ERR_OK;
}
HGResult GetAppPassword(HGChar* appPassword, HGUInt maxLen)
{
if (NULL == appPassword || 0 == maxLen)
{
return HGBASE_ERR_INVALIDARG;
}
const char *password = "huagoscan";
#if defined(OEM_HANWANG)
password = "hanvonscan";
#elif defined(OEM_LISICHENG)
password = "lanxum";
#elif defined(OEM_CANGTIAN)
password = "cumtenn";
#elif defined(OEM_ZHONGJING)
password = "microtek";
#elif defined(OEM_ZIGUANG)
password = "uniscan";
#elif defined(OEM_DELI)
password = "deliscan";
#elif defined(OEM_NEUTRAL)
password = "scan";
#elif defined(OEM_MEISONGDA)
password = "maxsound";
#elif defined(OEM_GUANGDIANTONG)
password = "toecscan";
#endif
if (maxLen < strlen(appPassword) + 1)
return HGBASE_ERR_FAIL;
strcpy(appPassword, password);
return HGBASE_ERR_OK;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
g_hLog = EnableLog(nullptr, appName, "app");
HGChar cfgPath[256]= {0};
GetConfigPath(cfgPath, 256);
strcat(cfgPath, "config.ini");
HGChar lang[256] = {0};
HGBase_GetProfileString(cfgPath, "global", "language", "", lang, 256);
QString language = StdStringToUtf8(lang).c_str();
if (language != "english")
{
language = "chinese";
}
HGBase_SetProfileString(cfgPath, "global", "language", language.toStdString().c_str());
QString translator_qt_name = ":translation/qt_zh_CN.qm";
QString translator_scanner_name = ":translation/FWUpgrade_zh_CN.qm";
QTranslator translator_qt;
if (language == "english")
{
translator_scanner_name = ":translation/FWUpgrade_zh_EN.qm";
}
else
{
if (translator_qt.load(translator_qt_name))
a.installTranslator(&translator_qt);
}
QTranslator translator_scanner;
if (translator_scanner.load(translator_scanner_name))
a.installTranslator(&translator_scanner);
HGChar str[256] = {0};
HGBase_GetProfileString(cfgPath, "login", "password", "", str, 256);
HGChar appPassword[256]= {0};
GetAppPassword(appPassword, 256);
QString password = (0 == *str) ? appPassword : MainWindow::passwordDecrypt(str);
LoginDialog login("admin", password, nullptr);
if (login.exec())
{
MainWindow w;
QScreen *screen = QGuiApplication::primaryScreen();
w.move((screen->size().width() - w.width()) / 2, (screen->size().height() - w.height()) / 2);
w.show();
a.exec();
}
DisableLog(g_hLog);
g_hLog = nullptr;
return 0;
}