*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#include <QSettings>
 #include <QStringList>
 
-#ifdef Q_WS_QWS
-#include <Qtopia>
-#endif
-
 #include "settings.h"
 
 QHash<QString, QHash<QString, QVariant> > Settings::settingsCache;
 }
 
 QStringList Settings::allLocalKeys() {
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(group);
   QStringList res = s.allKeys();
   s.endGroup();
   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();
   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();
 }
 
 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();
 
 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();
 }
 
 void Settings::removeLocalKey(const QString &key) {
-  QSettings s(org(), appName);
+  QSettings s(fileName(), format());
   s.beginGroup(group);
   s.remove(key);
   s.endGroup();
 
 
 #include <QCoreApplication>
 #include <QHash>
+#include <QSettings>
 #include <QString>
 #include <QVariant>
 
+#include "quassel.h"
+
 class SettingsChangeNotifier : public QObject {
   Q_OBJECT
 
   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
-    return QCoreApplication::organizationName();
+    return QSettings::NativeFormat;
 #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;