X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fquassel.cpp;h=d9e180e7936851c011c2eb79197fe41b79f26c28;hp=bf0cbee32b3406e5cb800ab923779cfa1b2be152;hb=e94adb7dab9f1dfcb9f792912a365e6c72728d82;hpb=894e9b60a395efdbacf8a2f8b0dc138464366191 diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index bf0cbee3..d9e180e7 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -241,19 +241,24 @@ QString Quassel::configDirPath() { _configDirPath = Quassel::optionValue("configdir"); } else { - // We abuse QSettings to find us a sensible path on all platforms -#ifdef Q_WS_WIN +#ifdef Q_WS_MAC + // On Mac, the path is always the same + _configDirPath = QDir::homePath() + "/Library/Application Support/Quassel/"; +#else + // We abuse QSettings to find us a sensible path on the other platforms +# ifdef Q_WS_WIN // don't use the registry QSettings::Format format = QSettings::IniFormat; -#else +# else QSettings::Format format = QSettings::NativeFormat; -#endif +# endif QSettings s(format, QSettings::UserScope, QCoreApplication::organizationDomain(), buildInfo().applicationName); QFileInfo fileInfo(s.fileName()); _configDirPath = fileInfo.dir().absolutePath(); +#endif /* Q_WS_MAC */ } - if(!_configDirPath.endsWith(QDir::separator())) + if(!_configDirPath.endsWith(QDir::separator()) && !_configDirPath.endsWith('/')) _configDirPath += QDir::separator(); QDir qDir(_configDirPath); @@ -281,7 +286,7 @@ QStringList Quassel::findDataDirPaths() const { // Provide a fallback // FIXME fix this for win and mac! #ifdef Q_OS_WIN32 - dataDirNames << qgetenv("APPDATA") + "/quassel/" + dataDirNames << qgetenv("APPDATA") + QCoreApplication::organizationDomain() << QCoreApplication::applicationDirPath(); #elif defined Q_WS_MAC dataDirNames << QDir::homePath() + "/Library/Application Support/Quassel/" @@ -301,8 +306,22 @@ QStringList Quassel::findDataDirPaths() const { #endif } - // add resource path just in case - dataDirNames << ":/data/"; + // add resource path and workdir just in case + dataDirNames << ":/data/" + << QCoreApplication::applicationDirPath() + "/data/" + << QCoreApplication::applicationDirPath(); + + // append trailing '/' and check for existence + QStringList::Iterator iter = dataDirNames.begin(); + while(iter != dataDirNames.end()) { + if(!iter->endsWith(QDir::separator()) && !iter->endsWith('/')) + iter->append(QDir::separator()); + if(!QFile::exists(*iter)) + iter = dataDirNames.erase(iter); + else + ++iter; + } + return dataDirNames; }