From 32af513e83651d8791677005bc19d4fbd7b5dcb9 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 7 Jul 2011 15:12:29 +0000 Subject: [PATCH] Use proper cache location for spotify on Mac too. --- spotifyblob/blob/CMakeLists.txt | 10 ++++++++++ spotifyblob/blob/spotify_utilities.cpp | 6 ++++-- spotifyblob/blob/spotify_utilities.h | 3 +++ spotifyblob/blob/spotify_utilities.mm | 27 ++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 spotifyblob/blob/spotify_utilities.mm diff --git a/spotifyblob/blob/CMakeLists.txt b/spotifyblob/blob/CMakeLists.txt index c30612de5..377844741 100644 --- a/spotifyblob/blob/CMakeLists.txt +++ b/spotifyblob/blob/CMakeLists.txt @@ -21,6 +21,10 @@ set(HEADERS spotifyclient.h ) +if(APPLE) + list(APPEND SOURCES spotify_utilities.mm) +endif(APPLE) + qt4_wrap_cpp(MOC ${HEADERS}) if(WIN32 AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ENABLE_WIN32_CONSOLE) @@ -40,6 +44,12 @@ target_link_libraries(clementine-spotifyblob clementine-spotifyblob-messages ) +if(APPLE) + target_link_libraries(clementine-spotifyblob + /System/Library/Frameworks/Foundation.framework + ) +endif(APPLE) + if(NOT APPLE) # macdeploy.py takes care of this on mac install(TARGETS clementine-spotifyblob diff --git a/spotifyblob/blob/spotify_utilities.cpp b/spotifyblob/blob/spotify_utilities.cpp index 6c72e44ce..c1fe4a037 100644 --- a/spotifyblob/blob/spotify_utilities.cpp +++ b/spotifyblob/blob/spotify_utilities.cpp @@ -7,6 +7,7 @@ namespace utilities { +#ifndef Q_OS_DARWIN // See spotify_utilities.mm for Mac implementation. QString GetUserCacheDirectory() { #ifndef Q_OS_WINDOWS const char* xdg_cache_dir = getenv("XDG_CACHE_HOME"); @@ -15,14 +16,15 @@ QString GetUserCacheDirectory() { } return QString::fromLocal8Bit(xdg_cache_dir); -#else +#else // Q_OS_WINDOWS const char* cache_dir = getenv("APPDATA"); if (!cache_dir) { return QDir::homePath() + "/.config/"; } return QDir::fromNativeSeparators(QString::fromLocal8Bit(cache_dir)); -#endif +#endif // Q_OS_WINDOWS } +#endif // Q_OS_DARWIN QString GetCacheDirectory() { QString user_cache = GetUserCacheDirectory(); diff --git a/spotifyblob/blob/spotify_utilities.h b/spotifyblob/blob/spotify_utilities.h index 37265d0c8..55a7d55b8 100644 --- a/spotifyblob/blob/spotify_utilities.h +++ b/spotifyblob/blob/spotify_utilities.h @@ -5,6 +5,9 @@ namespace utilities { +// Get the path to the current user's local cache for all apps. +QString GetUserCacheDirectory(); +// Get the path for Clementine's cache. QString GetCacheDirectory(); } diff --git a/spotifyblob/blob/spotify_utilities.mm b/spotifyblob/blob/spotify_utilities.mm new file mode 100644 index 000000000..7a11cfcc6 --- /dev/null +++ b/spotifyblob/blob/spotify_utilities.mm @@ -0,0 +1,27 @@ +#include "spotify_utilities.h" + +#import +#import + +namespace utilities { + +QString GetUserCacheDirectory() { + NSAutoreleasePool* pool = [NSAutoreleasePool alloc]; + [pool init]; + + NSArray* paths = NSSearchPathForDirectoriesInDomains( + NSCachesDirectory, + NSUserDomainMask, + YES); + QString ret; + if ([paths count] > 0) { + NSString* user_path = [paths objectAtIndex:0]; + ret = QString::fromUtf8([user_path UTF8String]); + } else { + ret = "~/Library/Caches"; + } + [pool drain]; + return ret; +} + +}