From fafcef89187c6c17a433e771c6bcc39a03dbc98e Mon Sep 17 00:00:00 2001
From: John Maguire <john.maguire@gmail.com>
Date: Thu, 24 Nov 2011 17:31:18 +0100
Subject: [PATCH] Proper spotify settings path on Mac.

---
 spotifyblob/blob/spotify_utilities.cpp |  2 ++
 spotifyblob/blob/spotify_utilities.mm  | 27 ++++++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/spotifyblob/blob/spotify_utilities.cpp b/spotifyblob/blob/spotify_utilities.cpp
index ecc2333c2..f5753ad48 100644
--- a/spotifyblob/blob/spotify_utilities.cpp
+++ b/spotifyblob/blob/spotify_utilities.cpp
@@ -33,6 +33,7 @@ QString GetCacheDirectory() {
   return user_cache + "/" + QCoreApplication::applicationName() + "/spotify-cache";
 }
 
+#ifndef Q_OS_DARWIN
 QString GetSettingsDirectory() {
   QSettings settings;
   QString file_name = settings.fileName();
@@ -41,5 +42,6 @@ QString GetSettingsDirectory() {
   dir.mkdir("spotify-settings");
   return info.absolutePath() + "/spotify-settings";
 }
+#endif
 
 }  // namespace utilities
diff --git a/spotifyblob/blob/spotify_utilities.mm b/spotifyblob/blob/spotify_utilities.mm
index 7a11cfcc6..7e6cf5568 100644
--- a/spotifyblob/blob/spotify_utilities.mm
+++ b/spotifyblob/blob/spotify_utilities.mm
@@ -1,6 +1,7 @@
 #include "spotify_utilities.h"
 
 #import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSFileManager.h>
 #import <Foundation/NSPathUtilities.h>
 
 namespace utilities {
@@ -24,4 +25,30 @@ QString GetUserCacheDirectory() {
   return ret;
 }
 
+QString GetSettingsDirectory() {
+  NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+  NSArray* paths = NSSearchPathForDirectoriesInDomains(
+      NSApplicationSupportDirectory,
+      NSUserDomainMask,
+      YES);
+  NSString* ret;
+  if ([paths count] > 0) {
+    ret = [paths objectAtIndex:0];
+  } else {
+    ret = @"~/Library/Application Support";
+  }
+  ret = [ret stringByAppendingString:@"/Clementine/spotify-settings"];
+
+  NSFileManager* file_manager = [NSFileManager defaultManager];
+  [file_manager createDirectoryAtPath:
+      ret
+      withIntermediateDirectories:YES
+      attributes:nil
+      error:nil];
+
+  QString path = QString::fromUtf8([ret UTF8String]);
+  [pool drain];
+  return path;
+}
+
 }