aheinecke@404: /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik aheinecke@404: * Software engineering by Intevation GmbH aheinecke@404: * aheinecke@404: * This file is Free Software under the GNU GPL (v>=2) aheinecke@404: * and comes with ABSOLUTELY NO WARRANTY! aheinecke@404: * See LICENSE.txt for details. aheinecke@404: */ aheinecke@0: #include "mainwindow.h" andre@612: #include "processhelp.h" andre@631: #include "logging.h" andre@634: #include "selftest.h" aheinecke@0: aheinecke@0: #include aheinecke@0: #include aheinecke@0: #include aheinecke@0: #include aheinecke@17: #include aheinecke@423: #include aheinecke@423: #include aheinecke@0: andre@672: #include andre@672: aheinecke@16: #ifndef VERSION aheinecke@16: #define VERSION "0.0.1" aheinecke@16: #endif aheinecke@16: aheinecke@16: #ifndef APPNAME aheinecke@407: #define APPNAME "TrustBridge" aheinecke@16: #endif aheinecke@16: aheinecke@16: #ifndef ORGANIZATION aheinecke@409: #define ORGANIZATION "BSI" aheinecke@16: #endif aheinecke@0: aheinecke@0: #ifdef Q_OS_WIN aheinecke@0: Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) aheinecke@0: #else aheinecke@0: Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) aheinecke@0: #endif aheinecke@0: aheinecke@0: int main(int argc, char **argv) aheinecke@0: { andre@631: /* First verify integrity even before calling QApplication*/ andre@634: if (!selftest()) { andre@631: syslog_error_printf ("Integrity check failed."); andre@631: #ifdef RELEASE_BUILD andre@631: return -1; andre@631: #endif andre@634: } andre@631: aheinecke@0: QApplication app (argc, argv); aheinecke@0: rrenkert@482: QApplication::setQuitOnLastWindowClosed(false); rrenkert@482: QApplication::setOrganizationName(QString::fromLatin1(ORGANIZATION)); rrenkert@482: QApplication::setApplicationName(QString::fromLatin1(APPNAME)); rrenkert@482: QApplication::setApplicationVersion(QString::fromLatin1(VERSION)); rrenkert@482: QSettings::setDefaultFormat(QSettings::IniFormat); rrenkert@482: andre@672: qDebug() << "Application style is: " << app.style()->metaObject()->className(); andre@672: qDebug() << "Available styles: " << QStyleFactory::keys().join(", "); andre@672: rrenkert@154: QStringList arguments = QApplication::arguments(); rrenkert@154: bool trayMode = arguments.contains("--tray"); rrenkert@154: rrenkert@482: QSettings settings; rrenkert@482: settings.beginGroup("settings"); aheinecke@499: bool autoStart = settings.value("autostart", true).toBool(); rrenkert@482: settings.endGroup(); rrenkert@482: aheinecke@499: if (trayMode && !autoStart) { rrenkert@482: return 0; rrenkert@482: } rrenkert@482: andre@612: if (ProcessHelp::otherProcessesExist(APPNAME)) { andre@612: qDebug() << "Another " << APPNAME << " process is already running. Exiting."; andre@612: ProcessHelp::activateWindowForProcess(APPNAME); andre@612: return 0; andre@612: } andre@612: aheinecke@423: QTranslator translator; aheinecke@423: if (QLocale::system().name() == "C") { aheinecke@423: /* Useful for testing / development as the primary target is german */ aheinecke@423: translator.load(":/l10n/trustbridge_de_DE"); aheinecke@423: } else { aheinecke@423: translator.load(":/l10n/trustbridge_" + QLocale::system().name()); aheinecke@423: qDebug() << "Loading translations for: " << "trustbridge_" + aheinecke@423: QLocale::system().name(); aheinecke@423: } aheinecke@423: app.installTranslator(&translator); aheinecke@423: andre@712: if ((!QSystemTrayIcon::isSystemTrayAvailable() || andre@712: !QSystemTrayIcon::supportsMessages()) && trayMode) { aheinecke@16: QMessageBox::critical(0, QString::fromLatin1(APPNAME), aheinecke@0: QObject::tr("Couldn't detect any system tray " aheinecke@0: "on this system. This software can only " aheinecke@0: "be used in a desktop environment.")); aheinecke@0: return 1; aheinecke@0: } aheinecke@16: aheinecke@365: MainWindow mainWin(trayMode); aheinecke@0: aheinecke@0: return app.exec(); aheinecke@0: }