X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fqtuiapplication.cpp;h=79c9e37126d199c1bdc8f4ab8868566582ea09bb;hb=04ef61a441889963e5e730c0e7ee0b3b34f661cd;hp=3d1d3780a09cb591cba4f27b75929cd381cbbbcf;hpb=5c6c9730bd840bcd51f32988dd4e224fed69c85d;p=quassel.git diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index 3d1d3780..79c9e371 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -23,7 +23,7 @@ #include #include -#ifdef HAVE_KDE +#ifdef HAVE_KDE4 # include #endif @@ -34,39 +34,68 @@ #include "qtuisettings.h" QtUiApplication::QtUiApplication(int &argc, char **argv) -#ifdef HAVE_KDE - : KApplication(), +#ifdef HAVE_KDE4 + : KApplication(), // KApplication is deprecated in KF5 #else : QApplication(argc, argv), #endif Quassel(), _aboutToQuit(false) { -#ifdef HAVE_KDE +#ifdef HAVE_KDE4 Q_UNUSED(argc); Q_UNUSED(argv); - // We need to setup KDE's data dirs + // Setup KDE's data dirs + // Because we can't use KDE stuff in (the class) Quassel directly, we need to do this here... QStringList dataDirs = KGlobal::dirs()->findDirs("data", ""); + + // Just in case, also check our install prefix + dataDirs << QCoreApplication::applicationDirPath() + "/../share/apps/"; + + // Normalize and append our application name for (int i = 0; i < dataDirs.count(); i++) - dataDirs[i].append("quassel/"); + dataDirs[i] = QDir::cleanPath(dataDirs.at(i)) + "/quassel/"; + + // Add resource path and just in case. + // Workdir should have precedence + dataDirs.prepend(QCoreApplication::applicationDirPath() + "/data/"); dataDirs.append(":/data/"); + + // Append trailing '/' and check for existence + auto iter = dataDirs.begin(); + while (iter != dataDirs.end()) { + if (!iter->endsWith(QDir::separator()) && !iter->endsWith('/')) + iter->append(QDir::separator()); + if (!QFile::exists(*iter)) + iter = dataDirs.erase(iter); + else + ++iter; + } + + dataDirs.removeDuplicates(); setDataDirPaths(dataDirs); -#else /* HAVE_KDE */ +#else /* HAVE_KDE4 */ setDataDirPaths(findDataDirPaths()); -#endif /* HAVE_KDE */ +#endif /* HAVE_KDE4 */ -#if defined(HAVE_KDE) || defined(Q_OS_MAC) +#if defined(HAVE_KDE4) || defined(Q_OS_MAC) disableCrashhandler(); -#endif /* HAVE_KDE || Q_OS_MAC */ +#endif /* HAVE_KDE4 || Q_OS_MAC */ setRunMode(Quassel::ClientOnly); #if QT_VERSION < 0x050000 qInstallMsgHandler(Client::logMessage); #else qInstallMessageHandler(Client::logMessage); + connect(this, &QGuiApplication::commitDataRequest, this, &QtUiApplication::commitData, Qt::DirectConnection); + connect(this, &QGuiApplication::saveStateRequest, this, &QtUiApplication::saveState, Qt::DirectConnection); +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + QGuiApplication::setFallbackSessionManagementEnabled(false); #endif }