2017-09-03 05:57:35 +00:00
|
|
|
#include <QApplication>
|
2018-04-15 06:19:31 +00:00
|
|
|
#include <QMessageBox>
|
2017-09-01 13:13:12 +00:00
|
|
|
|
2017-09-02 13:07:40 +00:00
|
|
|
#include "../common/version.h"
|
2018-08-24 11:28:26 +00:00
|
|
|
#include "control/controlmanager.h"
|
|
|
|
#include "control/controlworker.h"
|
2017-09-11 03:54:19 +00:00
|
|
|
#include "driver/drivermanager.h"
|
2017-09-03 09:20:37 +00:00
|
|
|
#include "fortcommon.h"
|
2017-09-01 15:13:17 +00:00
|
|
|
#include "fortmanager.h"
|
2017-09-03 09:20:37 +00:00
|
|
|
#include "fortsettings.h"
|
2017-09-11 11:17:27 +00:00
|
|
|
#include "util/osutil.h"
|
2017-08-23 13:52:22 +00:00
|
|
|
|
2018-04-15 06:19:31 +00:00
|
|
|
#define FORT_ERROR_INSTANCE 1
|
|
|
|
#define FORT_ERROR_DEVICE 2
|
2018-08-24 11:28:26 +00:00
|
|
|
#define FORT_ERROR_CONTROL 3
|
2018-04-15 06:19:31 +00:00
|
|
|
|
2017-08-23 13:52:22 +00:00
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
2017-12-20 14:15:48 +00:00
|
|
|
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
|
|
|
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
2017-09-02 13:07:40 +00:00
|
|
|
|
2018-01-12 08:29:08 +00:00
|
|
|
QApplication::setQuitOnLastWindowClosed(false);
|
|
|
|
|
2017-09-03 05:57:35 +00:00
|
|
|
QApplication app(argc, argv);
|
2017-09-02 13:07:40 +00:00
|
|
|
app.setApplicationName(APP_NAME);
|
|
|
|
app.setApplicationVersion(APP_VERSION_STR);
|
|
|
|
app.setApplicationDisplayName(APP_NAME " v" APP_VERSION_STR);
|
2017-08-23 13:52:22 +00:00
|
|
|
|
2017-09-11 03:54:19 +00:00
|
|
|
FortSettings fortSettings(qApp->arguments());
|
2017-09-03 09:20:37 +00:00
|
|
|
|
2018-01-10 01:21:54 +00:00
|
|
|
// Unregister booted provider and exit
|
2017-09-13 11:08:27 +00:00
|
|
|
if (fortSettings.hasProvBoot()) {
|
2017-09-03 09:20:37 +00:00
|
|
|
FortCommon::provUnregister();
|
2018-01-10 01:21:54 +00:00
|
|
|
return 0;
|
2017-09-03 09:20:37 +00:00
|
|
|
}
|
|
|
|
|
2018-08-24 11:28:26 +00:00
|
|
|
ControlManager controlManager(app.applicationName(),
|
|
|
|
fortSettings.controlPath());
|
|
|
|
|
|
|
|
// Send control request to running instance
|
|
|
|
if (controlManager.isClient()) {
|
|
|
|
return controlManager.post(fortSettings.args())
|
|
|
|
? 0 : FORT_ERROR_CONTROL;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check running instance
|
2018-04-15 06:19:31 +00:00
|
|
|
if (!OsUtil::createGlobalMutex(APP_NAME)) {
|
|
|
|
QMessageBox::critical(nullptr, QString(),
|
|
|
|
"Application is already running!");
|
|
|
|
return FORT_ERROR_INSTANCE;
|
|
|
|
}
|
2017-09-13 11:08:27 +00:00
|
|
|
|
2017-09-11 03:54:19 +00:00
|
|
|
FortManager fortManager(&fortSettings);
|
|
|
|
|
|
|
|
// Error: Cannot open the driver device
|
2018-04-15 06:19:31 +00:00
|
|
|
if (!fortManager.driverManager()->isDeviceOpened()) {
|
|
|
|
QMessageBox::critical(nullptr, QString(),
|
|
|
|
"Cannot open the driver device!");
|
|
|
|
return FORT_ERROR_DEVICE;
|
|
|
|
}
|
2017-09-11 03:54:19 +00:00
|
|
|
|
2017-09-03 05:57:35 +00:00
|
|
|
fortManager.showTrayIcon();
|
2017-09-01 13:13:12 +00:00
|
|
|
|
2018-08-24 11:28:26 +00:00
|
|
|
// Process control requests from clients
|
|
|
|
if (!controlManager.listen(&fortManager)) {
|
|
|
|
return FORT_ERROR_CONTROL;
|
|
|
|
}
|
|
|
|
|
2017-08-23 13:52:22 +00:00
|
|
|
return app.exec();
|
|
|
|
}
|