+#include "types.h"
+
+int main(int argc, char **argv)
+{
+#ifdef HAVE_UMASK
+ umask(S_IRWXG | S_IRWXO);
+#endif
+
+ // Instantiate early, so log messages are handled
+ Quassel::instance();
+
+#if QT_VERSION < 0x050000
+ // All our source files are in UTF-8, and Qt5 even requires that
+ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
+#endif
+
+ Quassel::setupBuildInfo();
+ QCoreApplication::setApplicationName(Quassel::buildInfo().applicationName);
+ QCoreApplication::setApplicationVersion(Quassel::buildInfo().plainVersionString);
+ QCoreApplication::setOrganizationName(Quassel::buildInfo().organizationName);
+ QCoreApplication::setOrganizationDomain(Quassel::buildInfo().organizationDomain);
+
+ // on OSX with Qt4, raster seems to fix performance issues
+#if QT_VERSION < 0x050000 && defined Q_OS_MAC && !defined BUILD_CORE
+ QApplication::setGraphicsSystem("raster");
+#endif
+//Setup the High-DPI settings
+# if QT_VERSION >= 0x050600 && defined(Q_OS_WIN)
+ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); //Added in Qt 5.6
+#endif
+# if QT_VERSION >= 0x050400
+ //Added in the early Qt5 versions (5.0?)- use 5.4 as the cutoff since lots of high-DPI work was added then
+ QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
+# endif
+ // We need to explicitly initialize the required resources when linking statically
+#ifndef BUILD_QTUI
+ Q_INIT_RESOURCE(sql);
+#endif
+#ifndef BUILD_CORE
+ Q_INIT_RESOURCE(pics);
+ Q_INIT_RESOURCE(hicolor_icons);
+#endif
+
+#ifdef EMBED_DATA
+ Q_INIT_RESOURCE(i18n);
+# ifndef BUILD_CORE
+ Q_INIT_RESOURCE(data);
+ Q_INIT_RESOURCE(breeze_icons);
+ Q_INIT_RESOURCE(breeze_dark_icons);
+# ifdef WITH_OXYGEN_ICONS
+ Q_INIT_RESOURCE(oxygen_icons);
+# endif
+# ifdef WITH_BUNDLED_ICONS
+ Q_INIT_RESOURCE(breeze_icon_theme);
+ Q_INIT_RESOURCE(breeze_dark_icon_theme);
+# ifdef WITH_OXYGEN_ICONS
+ Q_INIT_RESOURCE(oxygen_icon_theme);
+# endif
+# endif
+# endif
+#endif
+
+ std::shared_ptr<AbstractCliParser> cliParser;
+
+#ifdef HAVE_KDE4
+ // We need to init KCmdLineArgs first
+ KAboutData aboutData("quassel", "kdelibs4", ki18n("Quassel IRC"), Quassel::buildInfo().plainVersionString.toUtf8(),
+ ki18n("A modern, distributed IRC client"));
+ aboutData.addLicense(KAboutData::License_GPL_V2);
+ aboutData.addLicense(KAboutData::License_GPL_V3);
+ aboutData.setBugAddress("https://bugs.quassel-irc.org/projects/quassel-irc/issues/new");
+ aboutData.setOrganizationDomain(Quassel::buildInfo().organizationDomain.toUtf8());
+ KCmdLineArgs::init(argc, argv, &aboutData);