X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fquassel.cpp;h=ee8876f3afe35de97b2cf1ba61d3d2781b3830ca;hp=57cbdcaa56372a9cbd52f8f03e19daf2e0965b4f;hb=ce250a863bce3198096e65d4c7a68269495302dd;hpb=c015fbf8afaf64fbb5a8e2122e2a1ecf0325b1a1 diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index 57cbdcaa..ee8876f3 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -60,50 +60,18 @@ Quassel::Quassel() } -bool Quassel::init() +void Quassel::init(RunMode runMode) { - if (instance()->_initialized) - return true; // allow multiple invocations because of MonolithicApplication - -#if 0 - // Setup signal handling - // We catch SIGTERM and SIGINT (caused by Ctrl+C) to graceful shutdown Quassel. - signal(SIGTERM, handleSignal); - signal(SIGINT, handleSignal); -#ifndef Q_OS_WIN - // SIGHUP is used to reload configuration (i.e. SSL certificates) - // Windows does not support SIGHUP - signal(SIGHUP, handleSignal); -#endif - - if (instance()->_handleCrashes) { - // we have crashhandler for win32 and unix (based on execinfo). -#if defined(Q_OS_WIN) || defined(HAVE_EXECINFO) -# ifndef Q_OS_WIN - // we only handle crashes ourselves if coredumps are disabled - struct rlimit *limit = (rlimit *)malloc(sizeof(struct rlimit)); - int rc = getrlimit(RLIMIT_CORE, limit); - - if (rc == -1 || !((long)limit->rlim_cur > 0 || limit->rlim_cur == RLIM_INFINITY)) { -# endif /* Q_OS_WIN */ - signal(SIGABRT, handleSignal); - signal(SIGSEGV, handleSignal); -# ifndef Q_OS_WIN - signal(SIGBUS, handleSignal); - } - free(limit); -# endif /* Q_OS_WIN */ -#endif /* Q_OS_WIN || HAVE_EXECINFO */ - } -#endif - - instance()->setupSignalHandling(); + _runMode = runMode; - instance()->_initialized = true; qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); - instance()->setupEnvironment(); - instance()->registerMetaTypes(); + setupSignalHandling(); + setupEnvironment(); + registerMetaTypes(); + + // Initial translation (may be overridden in UI settings) + loadTranslation(QLocale::system()); Network::setDefaultCodecForServer("UTF-8"); Network::setDefaultCodecForEncoding("UTF-8"); @@ -111,16 +79,16 @@ bool Quassel::init() if (isOptionSet("help")) { instance()->_cliParser->usage(); - return false; + return; } if (isOptionSet("version")) { std::cout << qPrintable("Quassel IRC: " + Quassel::buildInfo().plainVersionString) << std::endl; - return false; + return; } // Don't keep a debug log on the core - return instance()->logger()->setup(runMode() != RunMode::CoreOnly); + logger()->setup(runMode != RunMode::CoreOnly); } @@ -334,6 +302,7 @@ void Quassel::setupSignalHandling() connect(_signalWatcher, SIGNAL(handleSignal(AbstractSignalWatcher::Action)), this, SLOT(handleSignal(AbstractSignalWatcher::Action))); } + void Quassel::handleSignal(AbstractSignalWatcher::Action action) { switch (action) { @@ -366,12 +335,6 @@ Quassel::RunMode Quassel::runMode() { } -void Quassel::setRunMode(RunMode runMode) -{ - instance()->_runMode = runMode; -} - - void Quassel::setCliParser(std::shared_ptr parser) { instance()->_cliParser = std::move(parser); @@ -456,22 +419,13 @@ QString Quassel::configDirPath() } -void Quassel::setDataDirPaths(const QStringList &paths) { - instance()->_dataDirPaths = paths; -} - - QStringList Quassel::dataDirPaths() { - return instance()->_dataDirPaths; -} + if (!instance()->_dataDirPaths.isEmpty()) + return instance()->_dataDirPaths; - -QStringList Quassel::findDataDirPaths() -{ - // TODO Qt5 - // We don't use QStandardPaths for now, as we still need to provide fallbacks for Qt4 and - // want to stay consistent. + // TODO: Migrate to QStandardPaths (will require moving of the sqlite database, + // or a fallback for it being in the config dir) QStringList dataDirNames; #ifdef Q_OS_WIN @@ -525,6 +479,7 @@ QStringList Quassel::findDataDirPaths() dataDirNames.removeDuplicates(); + instance()->_dataDirPaths = dataDirNames; return dataDirNames; } @@ -584,13 +539,11 @@ void Quassel::loadTranslation(const QLocale &locale) qtTranslator = new QTranslator(qApp); qtTranslator->setObjectName("QtTr"); - qApp->installTranslator(qtTranslator); quasselTranslator = new QTranslator(qApp); quasselTranslator->setObjectName("QuasselTr"); - qApp->installTranslator(quasselTranslator); -#if QT_VERSION >= 0x040800 && !defined Q_OS_MAC +#ifndef Q_OS_MAC bool success = qtTranslator->load(locale, QString("qt_"), translationDirPath()); if (!success) qtTranslator->load(locale, QString("qt_"), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); @@ -601,6 +554,9 @@ void Quassel::loadTranslation(const QLocale &locale) qtTranslator->load(QString("qt_%1").arg(locale.name()), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); quasselTranslator->load(QString("%1").arg(locale.name()), translationDirPath()); #endif + + qApp->installTranslator(quasselTranslator); + qApp->installTranslator(qtTranslator); }