code_app/app/scantool/main.cpp

105 lines
2.5 KiB
C++

#include "mainwindow.h"
#include <QApplication>
#include "base/HGDef.h"
#include <QTranslator>
#if !defined (HG_CMP_MSC)
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#endif
#include "log/log.h"
HLOG g_hLog = nullptr;
#if defined(OEM_HANWANG)
const char* oem = "HanvonScan";
#elif defined(OEM_LISICHENG)
const char* oem = "LanxumScan";
#elif defined(OEM_CANGTIAN)
const char* oem = "CumtennScan";
#elif defined(OEM_ZHONGJING)
const char* oem = "MicrotekScan";
#elif defined(OEM_ZIGUANG)
const char* oem = "UniScan";
#elif defined(OEM_NEUTRAL)
const char* oem = "NeuScan";
#elif defined(OEM_DELI)
const char* oem = "DeliScan";
#elif defined(OEM_MEISONGDA)
const char *oem = "MaxsoundScan";
#elif defined(OEM_GUANGDIANTONG)
const char *oem = "ToecScan";
#else
const char* oem = "HuaGoScan";
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
g_hLog = EnableLog(nullptr, oem, "app");
#ifdef HG_CMP_MSC
HANDLE hMutex = CreateMutexW(NULL, FALSE, L"{A8856E3B-3B67-43e4-82AD-154258C0FD37}");
assert(NULL != hMutex);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
return -1;
}
#else
const char* lockFilePath = "/tmp/HGScanTool.lock";
int fd = open(lockFilePath, O_WRONLY | O_CREAT, S_IWUSR | S_IWGRP | S_IWOTH);
if (fd == -1)
printf("open failed.");
if (-1 == chmod(lockFilePath, S_IWUSR | S_IWGRP | S_IWOTH))
{
printf("chmod file: %s failed.\n", lockFilePath);
}
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(fd, F_SETLK, &lock) == -1)
{
printf("lock file %s failed.\n", lockFilePath);
close(fd);
return 0;
}
else
{
printf("open file %s successfully.\n", lockFilePath);
}
#endif
QTranslator translator_qt;
if (translator_qt.load(":translation/qt_zh_CN.qm"))
a.installTranslator(&translator_qt);
QTranslator translator_app;
if (translator_app.load(":translation/Scantool_zh_CN.qm"))
a.installTranslator(&translator_app);
MainWindow w;
//w.show();
int ret = a.exec();
DisableLog(g_hLog);
g_hLog = nullptr;
#ifdef HG_CMP_MSC
CloseHandle(hMutex);
#else
lock.l_type = F_UNLCK;
fcntl(fd, F_SETLK, &lock);
close(fd);
unlink(lockFilePath);
#endif
return ret;
}