view ui/administrator.cpp @ 1313:f9f2c92969d2

(issue161) Set do-changes icon also on windows when UAC shield is not neccessary.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 13 Oct 2014 15:17:15 +0200
parents 1e429faf7c84
children 12ed0b72e9f5
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 "administratorwindow.h"
#include "util.h"

#include <QApplication>
#include <QtPlugin>
#include <QMessageBox>
#include <QSettings>
#include <QTranslator>
#include <QDebug>
#include <QTextCodec>
#include <QFontDatabase>

#ifndef VERSION
#define VERSION "0.0.1"
#endif

#ifndef APPNAME
#define APPNAME "trustbridge-admin"
#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

#ifdef DO_RELEASE_BUILD
bool g_debug = false;
#else
bool g_debug = true;
#endif

QtMessageHandler g_default_msg_handler = NULL;

void filterDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    if (!g_debug && type == QtDebugMsg) {
        return;
    }

    if (g_default_msg_handler) {
        (*g_default_msg_handler)(type, context, msg);
    }
}

int main(int argc, char **argv)
{
    QApplication app (argc, argv);

    QStringList arguments = QApplication::arguments();

    QApplication::setOrganizationName(QString::fromLatin1(ORGANIZATION));
    QApplication::setApplicationName(QString::fromLatin1(APPNAME));
    QApplication::setApplicationVersion(QString::fromLatin1(VERSION));
    QSettings::setDefaultFormat(QSettings::IniFormat);

    if (QApplication::arguments().contains("--version")) {
        printf (APPNAME " Version: %s \n",
                QApplication::applicationVersion().toLocal8Bit().constData());
        printf (COPYRIGHT);
        return 0;
    }

    if (arguments.contains("--debug")) {
        g_debug = true;
    }
    g_default_msg_handler = qInstallMessageHandler(filterDebugOutput);

    QTranslator translator;
    if (QLocale::system().name() == "C") {
        /* Useful for testing / development as the primary target is german */
        translator.load(":/l10n/administrator_de_DE");
    } else {
        translator.load(":/l10n/administrator_" + QLocale::system().name());
        qDebug() << "Loading translations for: " << "administrator_" +
            QLocale::system().name();
    }
    app.installTranslator(&translator);

    /* Out of process calls need to be encoded in latin-1 so that they
     * look decent on western europe's windows */
    QTextCodec::setCodecForLocale(QTextCodec::codecForName ("ISO-8859-1"));

    /* Install static fonts */

    /* The putenv here works around a bug in qt. 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);
    }

    AdministratorWindow adminWin;
    adminWin.show();

    return app.exec();
}

http://wald.intevation.org/projects/trustbridge/