#include "logindialog.h" #include "mainwindow.h" #include #include #include #include #include #include "base/HGBase.h" #include "HGString.h" #if defined(HG_CMP_MSC) #include #else #include #include #include #include #endif HGResult GetConfigPath(HGChar* configPath, HGUInt maxLen) { if (NULL == configPath || 0 == maxLen) { return HGBASE_ERR_INVALIDARG; } const char *appName = "HuaGoScan"; #if defined(OEM_HANWANG) appName = "HanvonScan"; #elif defined(OEM_LISICHENG) appName = "LanxumScan"; #elif defined(OEM_CANGTIAN) appName = "CumtennScan"; #elif defined(OEM_ZHONGJING) appName = "MicrotekScan"; #elif defined(OEM_ZIGUANG) appName = "UniScan"; #elif defined(OEM_DELI) appName = "DeliScan"; #elif defined(OEM_NEUTRAL) appName = "NeuScan"; #endif #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"; #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); 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(); } return 0; }