From 894e9b60a395efdbacf8a2f8b0dc138464366191 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 20 Jan 2009 02:08:30 +0100 Subject: [PATCH] Abuse QSettings to find a sensible config file location Rather than trying to do The Right Thing [tm] ourselves, we now just instantiate a QSettings object and retrieve its path to figure out where Quassel should store its config data. Path is cached, so it's not too expensive. --- src/common/quassel.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index bd31929a..bf0cbee3 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -24,8 +24,10 @@ #include #include -#include +#include #include +#include +#include #include "message.h" #include "identity.h" @@ -125,8 +127,8 @@ void Quassel::registerMetaTypes() { void Quassel::setupBuildInfo(const QString &generated) { _buildInfo.applicationName = "Quassel IRC"; - _buildInfo.coreApplicationName = "Quassel Core"; - _buildInfo.clientApplicationName = "Quassel Client"; + _buildInfo.coreApplicationName = "quasselcore"; + _buildInfo.clientApplicationName = "quasselclient"; _buildInfo.organizationName = "Quassel Project"; _buildInfo.organizationDomain = "quassel-irc.org"; @@ -239,18 +241,20 @@ QString Quassel::configDirPath() { _configDirPath = Quassel::optionValue("configdir"); } else { - // FIXME use QDesktopServices? -#ifdef Q_OS_WIN32 - _configDirPath = qgetenv("APPDATA") + "/quassel/"; -#elif defined Q_WS_MAC - _configDirPath = QDir::homePath() + "/Library/Application Support/Quassel/"; + // We abuse QSettings to find us a sensible path on all platforms +#ifdef Q_WS_WIN + // don't use the registry + QSettings::Format format = QSettings::IniFormat; #else - _configDirPath = QDir::homePath() + "/.quassel/"; + QSettings::Format format = QSettings::NativeFormat; #endif + QSettings s(format, QSettings::UserScope, QCoreApplication::organizationDomain(), buildInfo().applicationName); + QFileInfo fileInfo(s.fileName()); + _configDirPath = fileInfo.dir().absolutePath(); } - if(!_configDirPath.endsWith('/')) - _configDirPath += '/'; + if(!_configDirPath.endsWith(QDir::separator())) + _configDirPath += QDir::separator(); QDir qDir(_configDirPath); if(!qDir.exists(_configDirPath)) { -- 2.20.1