Browse Source

Implemented DirAccess get_drive and get_drive_count for OS X

Marcelo 8 years ago
parent
commit
fb871b5ada
2 changed files with 20 additions and 1 deletions
  1. 3 0
      platform/osx/dir_access_osx.h
  2. 17 1
      platform/osx/dir_access_osx.mm

+ 3 - 0
platform/osx/dir_access_osx.h

@@ -46,6 +46,9 @@
 class DirAccessOSX : public DirAccessUnix {
 class DirAccessOSX : public DirAccessUnix {
 protected:
 protected:
 	virtual String fix_unicode_name(const char *p_name) const;
 	virtual String fix_unicode_name(const char *p_name) const;
+
+	virtual int get_drive_count();
+	virtual String get_drive(int p_drive);
 };
 };
 
 
 #endif //UNIX ENABLED
 #endif //UNIX ENABLED

+ 17 - 1
platform/osx/dir_access_osx.mm

@@ -33,7 +33,8 @@
 
 
 #include <errno.h>
 #include <errno.h>
 
 
-#include <Foundation/NSString.h>
+#include <AppKit/NSWorkspace.h>
+#include <Foundation/Foundation.h>
 
 
 String DirAccessOSX::fix_unicode_name(const char *p_name) const {
 String DirAccessOSX::fix_unicode_name(const char *p_name) const {
 
 
@@ -45,4 +46,19 @@ String DirAccessOSX::fix_unicode_name(const char *p_name) const {
 	return fname;
 	return fname;
 }
 }
 
 
+int DirAccessOSX::get_drive_count() {
+	NSArray *vols = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths];
+	return [vols count];
+}
+
+String DirAccessOSX::get_drive(int p_drive) {
+	NSArray *vols = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths];
+	int count = [vols count];
+
+	ERR_FAIL_INDEX_V(p_drive, count, "");
+
+	NSString *path = vols[p_drive];
+	return String([path UTF8String]);
+}
+
 #endif //posix_enabled
 #endif //posix_enabled