#include #include #include #include #include #include #include "debug.h" #include "defines.h" #include "singleapplication.h" #include "ui/mainwindow.h" #ifdef Q_OS_WIN #include "Windows.h" #endif static void loadTranslator() { QTranslator* translator = new QTranslator; if (translator->load(QLocale(), QString("amneziavpn"), QLatin1String("_"), QLatin1String(":/translations"))) { qApp->installTranslator(translator); } } int main(int argc, char *argv[]) { QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); #ifdef Q_OS_WIN AllowSetForegroundWindow(ASFW_ANY); #endif SingleApplication app(argc, argv, true, SingleApplication::Mode::User | SingleApplication::Mode::SecondaryNotification); if (!app.isPrimary()) { QTimer::singleShot(1000, &app, [&](){ app.quit(); }); return app.exec(); } #ifdef Q_OS_WIN AllowSetForegroundWindow(0); #endif loadTranslator(); QFontDatabase::addApplicationFont(":/fonts/Lato-Black.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-BlackItalic.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-Bold.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-BoldItalic.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-Italic.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-Light.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-LightItalic.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-Regular.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-Thin.ttf"); QFontDatabase::addApplicationFont(":/fonts/Lato-ThinItalic.ttf"); app.setApplicationName(APPLICATION_NAME); app.setOrganizationName(ORGANIZATION_NAME); app.setApplicationDisplayName(APPLICATION_NAME); QCommandLineParser parser; parser.setApplicationDescription(APPLICATION_NAME); parser.addHelpOption(); parser.addVersionOption(); if (!Debug::init()) { qWarning() << "Initialization of debug subsystem failed"; } QFont f("Lato Regular", 10); f.setStyleStrategy(QFont::PreferAntialias); app.setFont(f); app.setQuitOnLastWindowClosed(false); MainWindow mainWindow; mainWindow.show(); if (app.isPrimary()) { QObject::connect(&app, &SingleApplication::instanceStarted, &mainWindow, [&](){ qDebug() << "Secondary instance started, showing this window instead"; mainWindow.show(); mainWindow.showNormal(); mainWindow.raise(); }); } return app.exec(); }