Make Settings use --configdir (or the default location)
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 20 Jan 2009 01:14:10 +0000 (02:14 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Tue, 20 Jan 2009 21:07:48 +0000 (22:07 +0100)
Note that the default location on Unix is now
~/.config/quassel-irc.org/quassel{core,client}.conf

This follows the XDG standard (Qt and, hence, Quassel honor XDG_CONFIG_HOME
as well; but not more sophisticated stuff like .config/user-dirs)

src/common/settings.cpp
src/common/settings.h

index 07a9e2a..6b0ce03 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#include <QSettings>
 #include <QStringList>
 
 #include <QStringList>
 
-#ifdef Q_WS_QWS
-#include <Qtopia>
-#endif
-
 #include "settings.h"
 
 QHash<QString, QHash<QString, QVariant> > Settings::settingsCache;
 #include "settings.h"
 
 QHash<QString, QHash<QString, QVariant> > Settings::settingsCache;
@@ -61,7 +56,7 @@ void Settings::notify(const QString &key, QObject *receiver, const char *slot) {
 }
 
 QStringList Settings::allLocalKeys() {
 }
 
 QStringList Settings::allLocalKeys() {
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(group);
   QStringList res = s.allKeys();
   s.endGroup();
   s.beginGroup(group);
   QStringList res = s.allKeys();
   s.endGroup();
@@ -75,7 +70,7 @@ QStringList Settings::localChildKeys(const QString &rootkey) {
   else
     g = QString("%1/%2").arg(group, rootkey);
 
   else
     g = QString("%1/%2").arg(group, rootkey);
 
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(g);
   QStringList res = s.childKeys();
   s.endGroup();
   s.beginGroup(g);
   QStringList res = s.childKeys();
   s.endGroup();
@@ -89,7 +84,7 @@ QStringList Settings::localChildGroups(const QString &rootkey) {
   else
     g = QString("%1/%2").arg(group, rootkey);
 
   else
     g = QString("%1/%2").arg(group, rootkey);
 
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(g);
   QStringList res = s.childGroups();
   s.endGroup();
   s.beginGroup(g);
   QStringList res = s.childGroups();
   s.endGroup();
@@ -97,7 +92,7 @@ QStringList Settings::localChildGroups(const QString &rootkey) {
 }
 
 void Settings::setLocalValue(const QString &key, const QVariant &data) {
 }
 
 void Settings::setLocalValue(const QString &key, const QVariant &data) {
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(group);
   s.setValue(key, data);
   s.endGroup();
   s.beginGroup(group);
   s.setValue(key, data);
   s.endGroup();
@@ -109,7 +104,7 @@ void Settings::setLocalValue(const QString &key, const QVariant &data) {
 
 const QVariant &Settings::localValue(const QString &key, const QVariant &def) {
   if(!isCached(group, key)) {
 
 const QVariant &Settings::localValue(const QString &key, const QVariant &def) {
   if(!isCached(group, key)) {
-    QSettings s(org(), appName);
+    QSettings s(fileName(), format());
     s.beginGroup(group);
     setCacheValue(group, key, s.value(key, def));
     s.endGroup();
     s.beginGroup(group);
     setCacheValue(group, key, s.value(key, def));
     s.endGroup();
@@ -118,7 +113,7 @@ const QVariant &Settings::localValue(const QString &key, const QVariant &def) {
 }
 
 void Settings::removeLocalKey(const QString &key) {
 }
 
 void Settings::removeLocalKey(const QString &key) {
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(group);
   s.remove(key);
   s.endGroup();
   s.beginGroup(group);
   s.remove(key);
   s.endGroup();
index 1d3f28e..627cb8a 100644 (file)
 
 #include <QCoreApplication>
 #include <QHash>
 
 #include <QCoreApplication>
 #include <QHash>
+#include <QSettings>
 #include <QString>
 #include <QVariant>
 
 #include <QString>
 #include <QVariant>
 
+#include "quassel.h"
+
 class SettingsChangeNotifier : public QObject {
   Q_OBJECT
 
 class SettingsChangeNotifier : public QObject {
   Q_OBJECT
 
@@ -62,13 +65,17 @@ protected:
   QString appName;
 
 private:
   QString appName;
 
 private:
-  inline QString org() {
-#ifdef Q_WS_MAC
-    return QCoreApplication::organizationDomain();
+  inline QSettings::Format format() {
+#ifdef Q_WS_WIN
+    return QSettings::IniFormat;
 #else
 #else
-    return QCoreApplication::organizationName();
+    return QSettings::NativeFormat;
 #endif
   }
 #endif
   }
+  inline QString fileName() {
+    return Quassel::configDirPath() + appName
+           + ((format() == QSettings::NativeFormat) ? QLatin1String(".conf") : QLatin1String(".ini"));
+  }
 
   static QHash<QString, QHash<QString, QVariant> > settingsCache;
   static QHash<QString, QHash<QString, SettingsChangeNotifier *> > settingsChangeNotifier;
 
   static QHash<QString, QHash<QString, QVariant> > settingsCache;
   static QHash<QString, QHash<QString, SettingsChangeNotifier *> > settingsChangeNotifier;