Add support for cache directory to wxStandardPaths::GetUserDir()

This has direct equivalent under macOS and when using XDG.

See #17727.
This commit is contained in:
VZ
2016-11-29 19:32:14 +01:00
committed by GitHub
parent ac31c85901
commit 4212202a9a
6 changed files with 26 additions and 0 deletions

View File

@@ -51,6 +51,7 @@ public:
enum Dir
{
Dir_Cache,
Dir_Documents,
Dir_Desktop,
Dir_Downloads,

View File

@@ -69,6 +69,16 @@ public:
/// Possible values for userDir parameter of GetUserDir().
enum Dir
{
/**
Directory for caching files.
Example return values:
- Unix: @c ~/.cache
- Windows: @c "C:\Users\username\AppData\Local"
- Mac: @c ~/Library/Caches
*/
Dir_Cache,
/**
Directory containing user documents.

View File

@@ -223,6 +223,9 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
int csidl;
switch (userDir)
{
case Dir_Cache:
csidl = CSIDL_LOCAL_APPDATA;
break;
case Dir_Desktop:
csidl = CSIDL_DESKTOPDIRECTORY;
break;

View File

@@ -103,6 +103,9 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
NSSearchPathDirectory dirType;
switch (userDir)
{
case Dir_Cache:
dirType = NSCachesDirectory;
break;
case Dir_Desktop:
dirType = NSDesktopDirectory;
break;

View File

@@ -238,6 +238,14 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
{
wxLogNull logNull;
wxString homeDir = wxFileName::GetHomeDir();
if (userDir == Dir_Cache)
{
if (wxGetenv(wxT("XDG_CACHE_HOME")))
return wxGetenv(wxT("XDG_CACHE_HOME"));
else
return homeDir + wxT("/.cache");
}
wxString configPath;
if (wxGetenv(wxT("XDG_CONFIG_HOME")))
configPath = wxGetenv(wxT("XDG_CONFIG_HOME"));

View File

@@ -404,6 +404,7 @@ void InteractiveOutputTestCase::TestStandardPaths()
wxPrintf(wxT("Data dir (user):\t%s\n"), stdp.GetUserDataDir().c_str());
wxPrintf(wxT("Data dir (user local):\t%s\n"), stdp.GetUserLocalDataDir().c_str());
wxPrintf(wxT("Documents dir:\t\t%s\n"), stdp.GetDocumentsDir().c_str());
wxPrintf(wxT("Cache dir:\t\t%s\n"), stdp.GetUserDir(wxStandardPaths::Dir_Cache).c_str());
wxPrintf(wxT("Desktop dir:\t\t%s\n"), stdp.GetUserDir(wxStandardPaths::Dir_Desktop).c_str());
wxPrintf(wxT("Downloads dir:\t\t%s\n"), stdp.GetUserDir(wxStandardPaths::Dir_Downloads).c_str());
wxPrintf(wxT("Music dir:\t\t%s\n"), stdp.GetUserDir(wxStandardPaths::Dir_Music).c_str());