diff --git a/src/ScreenOptionsExportPackage.cpp b/src/ScreenOptionsExportPackage.cpp index 405ba4f786..dbed518792 100644 --- a/src/ScreenOptionsExportPackage.cpp +++ b/src/ScreenOptionsExportPackage.cpp @@ -9,9 +9,16 @@ #include "OptionRowHandler.h" #include "LocalizedString.h" #include "SpecialFiles.h" -#include "SpecialFiles.h" #include "ScreenPrompt.h" #include "SongManager.h" +// there should probably be a better way to handle this: -aj +#if defined(_WINDOWS) + #include "archutils/Win32/SpecialDirs.h" +#elif defined(MACOSX) + // XXX! +#elif defined(UNIX) + #include "archutils/Unix/SpecialDirs.h" +#endif // main page (type list) REGISTER_SCREEN_CLASS( ScreenOptionsExportPackage ); @@ -186,10 +193,11 @@ static RString ReplaceInvalidFileNameChars( RString sOldFileName ) static bool ExportPackage( RString sPackageName, RString sDirToExport, RString &sErrorOut ) { - /* - RageFile f; + //RageFile f; // TODO: Mount Desktop/ for each OS - // SpecialDirs::GetDesktopDir() [windows only right now -aj] + RString sDesktopDir = SpecialDirs::GetDesktopDir(); + LOG->Trace( "Desktop dir: %s", sDesktopDir.c_str() ); + /* if( !f.Open("Desktop/"+sPackageName, RageFile::WRITE) ) { sErrorOut = ssprintf( "Couldn't open %s for writing: %s", fn.c_str(), f.GetError().c_str() ); diff --git a/src/arch/ArchHooks/ArchHooks_MacOSX.cpp b/src/arch/ArchHooks/ArchHooks_MacOSX.cpp index edde4fe736..2364a9aeaa 100644 --- a/src/arch/ArchHooks/ArchHooks_MacOSX.cpp +++ b/src/arch/ArchHooks/ArchHooks_MacOSX.cpp @@ -425,6 +425,10 @@ void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable ) // /Logs -> ~/Library/Logs/PRODUCT_ID PathForFolderType( dir, kDomainLibraryFolderType ); FILEMAN->Mount( "dir", ssprintf("%s/Logs/" PRODUCT_ID, dir), "/Logs" ); + + // /Desktop -> /Users//Desktop/PRODUCT_ID + PathForFolderType( dir, kDesktopFolderType ); + FILEMAN->Mount( "dir", ssprintf("%s/" PRODUCT_ID, dir), "/Desktop" ); } void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) diff --git a/src/archutils/Darwin/SpecialDirs.cpp b/src/archutils/Darwin/SpecialDirs.cpp new file mode 100644 index 0000000000..2a2c181776 --- /dev/null +++ b/src/archutils/Darwin/SpecialDirs.cpp @@ -0,0 +1,45 @@ +#include "global.h" +#include "SpecialDirs.h" +#include "ProductInfo.h" + +static void PathForFolderType( char dir[PATH_MAX], OSType folderType ) +{ + FSRef fs; + + if( FSFindFolder(kUserDomain, folderType, kDontCreateFolder, &fs) ) + FAIL_M( ssprintf("FSFindFolder(%lu) failed.", folderType) ); + if( FSRefMakePath(&fs, (UInt8 *)dir, PATH_MAX) ) + FAIL_M( "FSRefMakePath() failed." ); +} + +RString SpecialDirs::GetDesktopDir() +{ + char dir[PATH_MAX]; + PathForFolderType( dir, kDesktopFolderType ); + return RString( ssprintf("%s/" PRODUCT_ID, dir) ); +} + +/* + * (c) 2011 AJ Kelly + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/src/archutils/Darwin/SpecialDirs.h b/src/archutils/Darwin/SpecialDirs.h new file mode 100644 index 0000000000..c98eae940f --- /dev/null +++ b/src/archutils/Darwin/SpecialDirs.h @@ -0,0 +1,30 @@ +#ifndef SPECIAL_DIRS_H +#define SPECIAL_DIRS_H + +RString SpecialDirs::GetDesktopDir(); + +#endif +/* + * (c) 2011 AJ Kelly + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */