Mercurial > trustbridge
view ui/main.cpp @ 1059:f638eb1f3b0f
(issue46) Add debug option for trustbridge-admin
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 09 Sep 2014 18:00:37 +0200 |
parents | fe2c6666b462 |
children | 1e429faf7c84 |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #include "mainwindow.h" #include "processhelp.h" #include "logging.h" #include "selftest.h" #include "util.h" #ifdef WIN32 #include "taskscheduler.h" #endif #include <QApplication> #include <QFile> #include <QtPlugin> #include <QMessageBox> #include <QSettings> #include <QDebug> #include <QTranslator> #include <QStyleFactory> #include <QFontDatabase> #ifndef VERSION #define VERSION "0.0.1" #endif #ifndef APPNAME #define APPNAME "TrustBridge" #endif #ifndef STARTUP_FILE_NAME #define STARTUP_FILE_NAME "trustbridge-tray-starter.cfg" #endif #ifndef ORGANIZATION #define ORGANIZATION "BSI" #endif #define COPYRIGHT "Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik \n" \ "Software engineering by Intevation GmbH \n\n" \ "This file is Free Software under the GNU GPL (v>=2)\n" \ "and comes with ABSOLUTELY NO WARRANTY!\n" #ifdef Q_OS_WIN Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) #else Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) #endif bool g_debug = false; QtMessageHandler g_default_msg_handler = NULL; void noDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { if (type == QtDebugMsg) { return; } if (g_default_msg_handler) { (*g_default_msg_handler)(type, context, msg); } } int main(int argc, char **argv) { #ifdef WIN32 /* First verify integrity even before calling QApplication. * We only do this on Windows as we have a PKCS#7 embedded * signature there which we check with OS methods. * * On GNU/Linux platforms you should use an IDS system to * monitor executable corruptions. */ if (!selftest()) { syslog_error_printf ("Integrity check failed."); #ifdef RELEASE_BUILD return -1; #endif } #endif QApplication app (argc, argv); QApplication::setQuitOnLastWindowClosed(false); QApplication::setOrganizationName(QString::fromLatin1(ORGANIZATION)); QApplication::setApplicationName(QString::fromLatin1(APPNAME)); QApplication::setApplicationVersion(QString::fromLatin1(VERSION)); QSettings::setDefaultFormat(QSettings::IniFormat); QStringList arguments = QApplication::arguments(); if (arguments.contains("--debug")) { g_debug = true; } else { g_debug = false; g_default_msg_handler = qInstallMessageHandler(noDebugOutput); } qDebug() << "Application style is: " << app.style()->metaObject()->className(); qDebug() << "Available styles: " << QStyleFactory::keys().join(", "); qDebug() << "Font is: " << app.font(); bool trayMode = arguments.contains("--tray"); if (arguments.contains("--version")) { printf (APPNAME " Version: %s \n", QApplication::applicationVersion().toLocal8Bit().constData()); printf (COPYRIGHT); return 0; } QSettings settings; settings.beginGroup("settings"); bool autoStart = settings.value("autostart", true).toBool(); settings.endGroup(); if (trayMode && !autoStart) { return 0; } if (ProcessHelp::otherProcessesExist(APPNAME)) { qDebug() << "Another " << APPNAME << " process is already running. Exiting."; ProcessHelp::activateWindowForProcess(APPNAME); return 0; } QTranslator translator; if (QLocale::system().name() == "C") { /* Useful for testing / development as the primary target is german */ translator.load(":/l10n/trustbridge_de_DE"); } else { qDebug() << "Loading translations for: " << "trustbridge_" + QLocale::system().name(); if (!translator.load(":/l10n/trustbridge_" + QLocale::system().name())) { qDebug() << "Failed."; } } app.installTranslator(&translator); /* if ((!QSystemTrayIcon::isSystemTrayAvailable() || !QSystemTrayIcon::supportsMessages()) && trayMode) { QMessageBox::critical(0, QString::fromLatin1(APPNAME), QObject::tr("Couldn't detect any system tray " "on this system. This software can only " "be used in a desktop environment.")); return 1; } */ #ifdef Q_OS_WIN { TaskScheduler taskSched; qDebug() << " task sched done: " << taskSched.createDailyTask(QCoreApplication::applicationFilePath(), QString::fromLatin1("--tray"), QTime::currentTime()); } #else /* Save the display on start so that it might later be used by the cron startup script. */ QFile startup_file (settings.fileName().replace(APPNAME ".ini", STARTUP_FILE_NAME)); startup_file.open(QIODevice::WriteOnly); startup_file.write(QString::fromLatin1("DISPLAY=%1\n").arg(qgetenv("DISPLAY").constData()).toUtf8()); startup_file.close(); #endif /* Install static fonts */ /* The putenv here works around a bug in qt (#29192). Qt thinks it is a fatal * error if the font directory does not exist. */ qputenv("QT_QPA_FONTDIR", get_install_dir()); int fontId = QFontDatabase::addApplicationFont(":/fonts/DejaVuSans.ttf"); if (fontId != -1) { QFont font("DejaVuSans"); font.setPointSize(9); app.setFont(font); } MainWindow mainWin(trayMode); return app.exec(); }