aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..019466b
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,121 @@
+/*
+ * main.cpp
+ *
+ * Copyright 2008 gpg4usb-team <[email protected]>
+ *
+ * This file is part of gpg4usb.
+ *
+ * Gpg4usb is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gpg4usb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gpg4usb. If not, see <http://www.gnu.org/licenses/>
+ */
+
+#include <QApplication>
+#include "mainwindow.h"
+#include "gpgconstants.h"
+
+int main(int argc, char *argv[])
+{
+
+ Q_INIT_RESOURCE(gpg4usb);
+
+ QApplication app(argc, argv);
+
+ // get application path
+ QString appPath = qApp->applicationDirPath();
+
+ app.setApplicationVersion("0.3.3");
+ app.setApplicationName("gpg4usb");
+
+ // dont show icons in menus
+ app.setAttribute(Qt::AA_DontShowIconsInMenus);
+
+ // unicode in source
+ QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
+
+ // set environment variables
+ // TODO:
+ // - unsetenv on windows?
+ // - wputenv or wputenv_s on windows? http://msdn.microsoft.com/en-us/library/d6dtz42k(v=vs.80).aspx
+ #ifndef _WIN32
+ // do not use GPG_AGENTS like seahorse, because they may save
+ // a password an pc's not owned by user
+ unsetenv("GPG_AGENT_INFO");
+ #endif
+
+// qDebug() << getenv("GNUPGHOME");
+
+#ifndef GPG4USB_NON_PORTABLE
+ // take care of gpg not creating directorys on harddisk
+ putenv(QString("GNUPGHOME=" + appPath + "/keydb").toAscii().data());
+
+ // this may help with newer gpgme versions on windows
+ //putenv(QString("GPGME_GPGPATH=" + appPath.replace("/", "\\") + "\\bin\\gpg.exe").toAscii().data());
+
+ // QSettings uses org-name for automatically setting path...
+ app.setOrganizationName("conf");
+
+ // specify default path & format for QSettings
+ QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, appPath);
+#else
+ // in non portable conf should go to ~/.conf/gpg4usb
+ app.setOrganizationName("gpg4usb");
+ qDebug() << "gpg4usb non portable build";
+#endif
+
+ /*QLocale ql(lang);
+ foreach(QLocale l , QLocale::matchingLocales(ql.language(), ql.script(), ql.country())) {
+ qDebug() << "l: " << l.bcp47Name();
+ }*/
+
+ // css
+ QFile file(qApp->applicationDirPath() + "/css/default.css");
+ file.open(QFile::ReadOnly);
+ QString styleSheet = QLatin1String(file.readAll());
+ qApp->setStyleSheet(styleSheet);
+ file.close();
+
+ /**
+ * internationalisation. loop to restart mainwindow
+ * with changed translation when settings change.
+ */
+ QSettings::setDefaultFormat(QSettings::IniFormat);
+ QSettings settings;
+ QTranslator translator, translator2;
+ int return_from_event_loop_code;
+
+ do {
+ app.removeTranslator(&translator);
+ app.removeTranslator(&translator2);
+
+ QString lang = settings.value("int/lang", QLocale::system().name()).toString();
+ if (lang.isEmpty()) {
+ lang = QLocale::system().name();
+ }
+
+ translator.load("ts/gpg4usb_" + lang, appPath);
+ app.installTranslator(&translator);
+
+ // set qt translations
+ translator2.load("ts/qt_" + lang, appPath);
+ app.installTranslator(&translator2);
+
+ MainWindow window;
+ return_from_event_loop_code = app.exec();
+
+ } while( return_from_event_loop_code == RESTART_CODE);
+
+ return return_from_event_loop_code;
+}
+
+
+