App上修改获取版本号功能
This commit is contained in:
parent
3037687986
commit
66e21c15c8
|
@ -2984,6 +2984,35 @@ void MainWindow::on_act_clearRoller_triggered()
|
|||
}
|
||||
}
|
||||
|
||||
static std::string GetOSName()
|
||||
{
|
||||
std::string osName;
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
osName = "Windows";
|
||||
#else
|
||||
osName = "Linux";
|
||||
FILE* fp = popen("cat /etc/issue | cut -d\' \' -f1", "r");
|
||||
if (NULL != fp)
|
||||
{
|
||||
char buff[1024] = { 0 };
|
||||
fread(buff, 1024, 1, fp);
|
||||
|
||||
int len = (int)strlen(buff);
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
if (buff[i] == '\n')
|
||||
buff[i] = '\0';
|
||||
}
|
||||
|
||||
osName = buff;
|
||||
pclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
return osName;
|
||||
}
|
||||
|
||||
void MainWindow::on_act_help_triggered()
|
||||
{
|
||||
QString filename;
|
||||
|
@ -3008,18 +3037,8 @@ void MainWindow::on_act_help_triggered()
|
|||
filename = QApplication::applicationDirPath() + "/HuaGoScan_App_Help_manual.pdf";
|
||||
#endif
|
||||
#else
|
||||
std::string osName;
|
||||
FILE *file = popen("cat /etc/issue | cut -d\' \' -f1", "r");
|
||||
if (NULL != file)
|
||||
{
|
||||
char data[1024] = {0};
|
||||
if (NULL != fgets(data, 1024, file))
|
||||
osName = data;
|
||||
pclose(file);
|
||||
}
|
||||
|
||||
printf("osName=%s\n", osName.c_str());
|
||||
if (osName.find("UnionTech") != std::string::npos)
|
||||
std::string osName = GetOSName();
|
||||
if ("UnionTech" == osName)
|
||||
{
|
||||
#if defined(OEM_HANWANG)
|
||||
filename = QApplication::applicationDirPath() + "/../../entries/help/HanvonScan_App_Help_manual.pdf";
|
||||
|
@ -3072,166 +3091,115 @@ void MainWindow::on_act_help_triggered()
|
|||
QDesktopServices::openUrl(QUrl::fromLocalFile(filename));
|
||||
}
|
||||
|
||||
static std::string GetOSName()
|
||||
static bool isLeap(int year)
|
||||
{
|
||||
std::string osName;
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
osName = "Windows";
|
||||
#else
|
||||
osName = "Linux";
|
||||
FILE* fp = popen("cat /etc/issue | cut -d\' \' -f1", "r");
|
||||
if (NULL != fp)
|
||||
{
|
||||
char buff[1024] = { 0 };
|
||||
fread(buff, 1024, 1, fp);
|
||||
|
||||
int len = (int)strlen(buff);
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
if (buff[i] == '\n')
|
||||
buff[i] = '\0';
|
||||
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
osName = buff;
|
||||
pclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
return osName;
|
||||
}
|
||||
|
||||
static HGResult getCurrVersion(HGChar* version, HGUInt maxLen)
|
||||
static int getDays(int year, int month)
|
||||
{
|
||||
if (NULL == version || 0 == maxLen)
|
||||
if (2 == month)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
std::string ver = "0.0.0.0";
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
std::string regName;
|
||||
#if defined(OEM_HANWANG)
|
||||
regName = "SOFTWARE\\HanvonScan";
|
||||
#elif defined(OEM_LISICHENG)
|
||||
regName = "SOFTWARE\\LanxumScan";
|
||||
#elif defined(OEM_CANGTIAN)
|
||||
regName = "SOFTWARE\\CumtennScan";
|
||||
#elif defined(OEM_ZHONGJING)
|
||||
regName = "SOFTWARE\\MicrotekScan";
|
||||
#elif defined(OEM_ZIGUANG)
|
||||
regName = "SOFTWARE\\UniScan";
|
||||
#elif defined(OEM_DELI)
|
||||
regName = "SOFTWARE\\DeliScan";
|
||||
#elif defined(OEM_NEUTRAL)
|
||||
regName = "SOFTWARE\\NeuScan";
|
||||
#else
|
||||
regName = "SOFTWARE\\HuaGoScan";
|
||||
#endif
|
||||
|
||||
HKEY hKey = NULL;
|
||||
RegOpenKeyExA(HKEY_LOCAL_MACHINE, regName.c_str(), 0, KEY_QUERY_VALUE, &hKey);
|
||||
if (NULL != hKey)
|
||||
{
|
||||
CHAR szData[MAX_PATH] = { 0 };
|
||||
DWORD cbData = MAX_PATH;
|
||||
if (ERROR_SUCCESS == RegQueryValueExA(hKey, "AppVersion", NULL, NULL, (LPBYTE)szData, &cbData))
|
||||
{
|
||||
ver = szData;
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
#else
|
||||
std::string appName;
|
||||
std::string osName = GetOSName();
|
||||
if ("UnionTech" == osName)
|
||||
{
|
||||
#if defined(OEM_HANWANG)
|
||||
appName = "com.hanvonchina.hanvonscan";
|
||||
#elif defined(OEM_LISICHENG)
|
||||
appName = "com.lanxumchina.lanxumscan";
|
||||
#elif defined(OEM_CANGTIAN)
|
||||
appName = "com.cumtennchina.cumtennscan";
|
||||
#elif defined(OEM_ZHONGJING)
|
||||
appName = "com.microtekchina.microtekscan";
|
||||
#elif defined(OEM_ZIGUANG)
|
||||
appName = "com.unischina.uniscan";
|
||||
#elif defined(OEM_DELI)
|
||||
appName = "com.delichina.deliscan";
|
||||
#elif defined(OEM_NEUTRAL)
|
||||
appName = "com.neutralchina.neutralscan";
|
||||
#else
|
||||
appName = "com.huagaochina.huagoscan";
|
||||
#endif
|
||||
}
|
||||
if (isLeap(year))
|
||||
return 29;
|
||||
else
|
||||
{
|
||||
#if defined(OEM_HANWANG)
|
||||
appName = "scanner-driver-hanvon";
|
||||
#elif defined(OEM_LISICHENG)
|
||||
appName = "scanner-driver-lanxum";
|
||||
#elif defined(OEM_CANGTIAN)
|
||||
appName = "scanner-driver-cumtenn";
|
||||
#elif defined(OEM_ZHONGJING)
|
||||
appName = "scanner-driver-microtek";
|
||||
#elif defined(OEM_ZIGUANG)
|
||||
appName = "scanner-driver-unis";
|
||||
#elif defined(OEM_DELI)
|
||||
appName = "scanner-driver-deli";
|
||||
#elif defined(OEM_NEUTRAL)
|
||||
appName = "scanner-driver-neutral";
|
||||
#else
|
||||
appName = "scanner-driver-huagao";
|
||||
#endif
|
||||
return 28;
|
||||
}
|
||||
|
||||
std::string cmd = "dpkg -l " + appName;
|
||||
FILE* fp = popen(cmd.c_str(), "r");
|
||||
if (NULL != fp)
|
||||
if (4 == month || 6 == month || 9 == month || 11 == month)
|
||||
{
|
||||
char buff[2048] = { 0 };
|
||||
fread(buff, 2048, 1, fp);
|
||||
|
||||
char* p = strstr(buff, appName.c_str());
|
||||
if (NULL != p)
|
||||
{
|
||||
char* p2 = p + appName.size();
|
||||
while (!isdigit(*p2) && '.' != *p2)
|
||||
++p2;
|
||||
|
||||
int len = (int)strlen(p2);
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
if (!isdigit(p2[i]) && '.' != p2[i])
|
||||
{
|
||||
p2[i] = '\0';
|
||||
break;
|
||||
}
|
||||
return 30;
|
||||
}
|
||||
|
||||
ver = p2;
|
||||
return 31;
|
||||
}
|
||||
|
||||
pclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (maxLen < ver.size() + 1)
|
||||
static int getPathVersion()
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
HGTimeInfo timeInfo;
|
||||
HGBase_GetLocalTime(&timeInfo);
|
||||
|
||||
int ret = timeInfo.year % 100;
|
||||
ret *= 1000;
|
||||
|
||||
for (int i = 1; i < timeInfo.month; ++i)
|
||||
{
|
||||
ret += getDays(timeInfo.year, i);
|
||||
}
|
||||
|
||||
strcpy(version, ver.c_str());
|
||||
return HGBASE_ERR_OK;
|
||||
ret += timeInfo.day;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MainWindow::on_act_about_triggered()
|
||||
{
|
||||
int mainVersion = VERSION_MAIN;
|
||||
int subVersion = VERSION_SUB;
|
||||
int buildVersion = 10;
|
||||
int patchVersion = 0;
|
||||
|
||||
|
||||
#if defined (OEM_LISICHENG)
|
||||
buildVersion = 14;
|
||||
#elif defined (OEM_HANWNAG)
|
||||
buildVersion = 16;
|
||||
#elif defined (OEM_CANGTIAN)
|
||||
buildVersion = 18;
|
||||
#elif defined (OEM_ZHONGJING)
|
||||
buildVersion = 20;
|
||||
#elif defined (OEM_ZIGUANG)
|
||||
buildVersion = 22;
|
||||
#elif defined (OEM_DELI)
|
||||
buildVersion = 24;
|
||||
#elif defined (OEM_NEUTRAL)
|
||||
buildVersion = 26;
|
||||
#endif
|
||||
|
||||
buildVersion = buildVersion * 10;
|
||||
|
||||
|
||||
#if defined(HG_CMP_MSC)
|
||||
#if defined(_WIN64)
|
||||
buildVersion += 1;
|
||||
#else
|
||||
buildVersion += 0;
|
||||
#endif
|
||||
#else
|
||||
#if defined (x86_64)
|
||||
buildVersion += 5;
|
||||
#elif defined (aarch64)
|
||||
buildVersion += 2;
|
||||
#elif defined (mips64)
|
||||
buildVersion += 3;
|
||||
#elif defined (loongarch64)
|
||||
buildVersion += 4;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
buildVersion *= 100;
|
||||
|
||||
#if !defined(HG_CMP_MSC)
|
||||
std::string osName = GetOSName();
|
||||
if ("UnionTech" == osName)
|
||||
{
|
||||
buildVersion += 20;
|
||||
}
|
||||
else if ("kylin" == osName)
|
||||
{
|
||||
buildVersion += 21;
|
||||
}
|
||||
else
|
||||
{
|
||||
buildVersion += 10;
|
||||
}
|
||||
#endif
|
||||
|
||||
patchVersion = getPathVersion();
|
||||
|
||||
HGChar version[32] = { 0 };
|
||||
//getCurrVersion(version, 32);
|
||||
sprintf(version, "%d.%d.%d.%d", VERSION_MAIN, VERSION_SUB, VERSION_BUILD1, VERSION_PATCH);
|
||||
sprintf(version, "%d.%d.%d.%d", mainVersion, subVersion, buildVersion, patchVersion);
|
||||
|
||||
QString title = tr("about %1").arg(windowTitle());
|
||||
QString content;
|
||||
|
|
Loading…
Reference in New Issue