2022-11-10 09:23:16 +00:00
|
|
|
#include "logindialog.h"
|
2022-11-10 02:22:58 +00:00
|
|
|
#include "mainwindow.h"
|
|
|
|
|
|
|
|
#include <QApplication>
|
|
|
|
#include <QThread>
|
|
|
|
#include <QScreen>
|
|
|
|
#include <QTranslator>
|
|
|
|
#include <QMessageBox>
|
2022-11-10 09:23:16 +00:00
|
|
|
#include "base/HGBase.h"
|
2024-04-07 09:44:48 +00:00
|
|
|
#include "HGString.h"
|
2023-06-13 07:24:58 +00:00
|
|
|
|
|
|
|
#if defined(HG_CMP_MSC)
|
2023-06-12 09:11:25 +00:00
|
|
|
#include <shlobj.h>
|
2023-06-13 07:24:58 +00:00
|
|
|
#else
|
|
|
|
#include <grp.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <pwd.h>
|
|
|
|
#endif
|
2023-06-12 09:11:25 +00:00
|
|
|
|
2024-08-01 05:46:17 +00:00
|
|
|
#include "log/log.h"
|
|
|
|
HLOG g_hLog = nullptr;
|
2023-06-12 09:11:25 +00:00
|
|
|
|
2024-08-01 05:46:17 +00:00
|
|
|
const char *appName = "HuaGoScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#if defined(OEM_HANWANG)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "HanvonScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_LISICHENG)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "LanxumScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_CANGTIAN)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "CumtennScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_ZHONGJING)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "MicrotekScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_ZIGUANG)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "UniScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_DELI)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "DeliScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#elif defined(OEM_NEUTRAL)
|
2024-08-01 05:46:17 +00:00
|
|
|
appName = "NeuScan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#endif
|
|
|
|
|
2024-08-01 05:46:17 +00:00
|
|
|
HGResult GetConfigPath(HGChar* configPath, HGUInt maxLen)
|
|
|
|
{
|
|
|
|
if (NULL == configPath || 0 == maxLen)
|
|
|
|
{
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
}
|
|
|
|
|
2023-06-13 07:24:58 +00:00
|
|
|
#if defined(HG_CMP_MSC)
|
2023-06-12 09:11:25 +00:00
|
|
|
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\\");
|
2023-06-13 07:24:58 +00:00
|
|
|
#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
|
2023-06-12 09:11:25 +00:00
|
|
|
|
|
|
|
if (maxLen < strlen(cfgPath) + 1)
|
|
|
|
return HGBASE_ERR_FAIL;
|
|
|
|
strcpy(configPath, cfgPath);
|
|
|
|
return HGBASE_ERR_OK;
|
|
|
|
}
|
2022-11-10 02:22:58 +00:00
|
|
|
|
2024-04-07 09:44:48 +00:00
|
|
|
HGResult GetAppPassword(HGChar* appPassword, HGUInt maxLen)
|
2022-11-10 02:22:58 +00:00
|
|
|
{
|
2024-04-07 09:44:48 +00:00
|
|
|
if (NULL == appPassword || 0 == maxLen)
|
|
|
|
{
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
}
|
2022-11-10 02:22:58 +00:00
|
|
|
|
2024-05-13 07:51:08 +00:00
|
|
|
const char *password = "huagoscan";
|
2024-04-07 09:44:48 +00:00
|
|
|
#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";
|
|
|
|
#endif
|
2023-02-27 07:07:42 +00:00
|
|
|
|
2024-04-07 09:44:48 +00:00
|
|
|
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);
|
2022-11-10 02:22:58 +00:00
|
|
|
|
2024-08-01 05:46:17 +00:00
|
|
|
g_hLog = EnableLog(NULL, appName, "app");
|
|
|
|
|
2022-11-10 09:23:16 +00:00
|
|
|
HGChar cfgPath[256]= {0};
|
2023-06-12 09:11:25 +00:00
|
|
|
GetConfigPath(cfgPath, 256);
|
2022-11-10 09:23:16 +00:00
|
|
|
strcat(cfgPath, "config.ini");
|
2024-04-07 09:44:48 +00:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2022-11-10 09:23:16 +00:00
|
|
|
HGChar str[256] = {0};
|
|
|
|
HGBase_GetProfileString(cfgPath, "login", "password", "", str, 256);
|
2024-04-07 09:44:48 +00:00
|
|
|
HGChar appPassword[256]= {0};
|
|
|
|
GetAppPassword(appPassword, 256);
|
|
|
|
QString password = (0 == *str) ? appPassword : MainWindow::passwordDecrypt(str);
|
2022-11-10 09:23:16 +00:00
|
|
|
|
2023-06-15 02:58:30 +00:00
|
|
|
LoginDialog login("admin", password, nullptr);
|
2022-11-10 09:23:16 +00:00
|
|
|
if (login.exec())
|
|
|
|
{
|
2023-06-15 02:58:30 +00:00
|
|
|
MainWindow w;
|
|
|
|
QScreen *screen = QGuiApplication::primaryScreen();
|
|
|
|
w.move((screen->size().width() - w.width()) / 2, (screen->size().height() - w.height()) / 2);
|
|
|
|
|
2022-11-10 09:23:16 +00:00
|
|
|
w.show();
|
|
|
|
a.exec();
|
|
|
|
}
|
|
|
|
|
2024-08-01 05:46:17 +00:00
|
|
|
DisableLog(g_hLog);
|
|
|
|
g_hLog = nullptr;
|
|
|
|
|
2022-11-10 09:23:16 +00:00
|
|
|
return 0;
|
2022-11-10 02:22:58 +00:00
|
|
|
}
|