diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-08-31 10:58:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-31 10:58:02 +0200 |
commit | 433d4ada05df2477e85af3f4605a869696a743cc (patch) | |
tree | 70c53ddcd17305bbc33a2b9a541e62a6147b4658 | |
parent | b3496ee7abecca3ac82c10987fd58e9801d9a93f (diff) | |
parent | 9d841b5336e2ed65634935aa69b6432bf36cbe1f (diff) |
Merge pull request #10765 from poke1024/osx-system-dir
Implements OS_OSX::get_system_dir()
-rw-r--r-- | platform/osx/os_osx.h | 2 | ||||
-rw-r--r-- | platform/osx/os_osx.mm | 40 |
2 files changed, 42 insertions, 0 deletions
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index 5bfed1ee50..ebaebd84ce 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -160,6 +160,8 @@ public: virtual MainLoop *get_main_loop() const; + virtual String get_system_dir(SystemDir p_dir) const; + virtual bool can_draw() const; virtual void set_clipboard(const String &p_text); diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index f1260bc088..f502fb9a9c 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1327,6 +1327,46 @@ MainLoop *OS_OSX::get_main_loop() const { return main_loop; } +String OS_OSX::get_system_dir(SystemDir p_dir) const { + + NSSearchPathDirectory id = 0; + + switch (p_dir) { + case SYSTEM_DIR_DESKTOP: { + id = NSDesktopDirectory; + } break; + case SYSTEM_DIR_DOCUMENTS: { + id = NSDocumentDirectory; + } break; + case SYSTEM_DIR_DOWNLOADS: { + id = NSDownloadsDirectory; + } break; + case SYSTEM_DIR_MOVIES: { + id = NSMoviesDirectory; + } break; + case SYSTEM_DIR_MUSIC: { + id = NSMusicDirectory; + } break; + case SYSTEM_DIR_PICTURES: { + id = NSPicturesDirectory; + } break; + } + + String ret; + if (id) { + + NSArray *paths = NSSearchPathForDirectoriesInDomains(id, NSUserDomainMask, YES); + if (paths && [paths count] >= 1) { + + char *utfs = strdup([[paths firstObject] UTF8String]); + ret.parse_utf8(utfs); + free(utfs); + } + } + + return ret; +} + bool OS_OSX::can_draw() const { return true; |