Add System.manufacturer, Systemem.model, System.version (TODO: Windows)
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -28,3 +28,4 @@ legacy/project/obj
|
|||||||
package-lock.json
|
package-lock.json
|
||||||
node_modules
|
node_modules
|
||||||
!templates/**/node_modules
|
!templates/**/node_modules
|
||||||
|
.vscode/
|
||||||
|
|||||||
@@ -136,8 +136,11 @@ class NativeCFFI {
|
|||||||
@:cffi private static function lime_system_get_directory (type:Int, company:String, title:String):Dynamic;
|
@:cffi private static function lime_system_get_directory (type:Int, company:String, title:String):Dynamic;
|
||||||
@:cffi private static function lime_system_get_display (index:Int):Dynamic;
|
@:cffi private static function lime_system_get_display (index:Int):Dynamic;
|
||||||
@:cffi private static function lime_system_get_ios_tablet ():Bool;
|
@:cffi private static function lime_system_get_ios_tablet ():Bool;
|
||||||
|
@:cffi private static function lime_system_get_manufacturer ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_model ():Dynamic;
|
||||||
@:cffi private static function lime_system_get_num_displays ():Int;
|
@:cffi private static function lime_system_get_num_displays ():Int;
|
||||||
@:cffi private static function lime_system_get_timer ():Float;
|
@:cffi private static function lime_system_get_timer ():Float;
|
||||||
|
@:cffi private static function lime_system_get_version ():Dynamic;
|
||||||
@:cffi private static function lime_system_open_file (path:String):Void;
|
@:cffi private static function lime_system_open_file (path:String):Void;
|
||||||
@:cffi private static function lime_system_open_url (url:String, target:String):Void;
|
@:cffi private static function lime_system_open_url (url:String, target:String):Void;
|
||||||
@:cffi private static function lime_text_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
@:cffi private static function lime_text_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ import js.html.Element;
|
|||||||
import js.Browser;
|
import js.Browser;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
import sys.io.Process;
|
||||||
|
#end
|
||||||
|
|
||||||
#if !lime_debug
|
#if !lime_debug
|
||||||
@:fileXml('tags="haxe,release"')
|
@:fileXml('tags="haxe,release"')
|
||||||
@:noDebug
|
@:noDebug
|
||||||
@@ -57,8 +61,11 @@ class System {
|
|||||||
public static var documentsDirectory (get, null):String;
|
public static var documentsDirectory (get, null):String;
|
||||||
public static var endianness (get, null):Endian;
|
public static var endianness (get, null):Endian;
|
||||||
public static var fontsDirectory (get, null):String;
|
public static var fontsDirectory (get, null):String;
|
||||||
|
public static var manufacturer (get, null):String;
|
||||||
|
public static var model (get, null):String;
|
||||||
public static var numDisplays (get, null):Int;
|
public static var numDisplays (get, null):Int;
|
||||||
public static var userDirectory (get, null):String;
|
public static var userDirectory (get, null):String;
|
||||||
|
public static var version (get, null):String;
|
||||||
|
|
||||||
@:noCompletion private static var __applicationConfig:Map<String, Config>;
|
@:noCompletion private static var __applicationConfig:Map<String, Config>;
|
||||||
@:noCompletion private static var __applicationEntryPoint:Map<String, Function>;
|
@:noCompletion private static var __applicationEntryPoint:Map<String, Function>;
|
||||||
@@ -514,6 +521,25 @@ class System {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function __runProcess (command:String, args:Array<String> = null):String {
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (args == null) args = [];
|
||||||
|
|
||||||
|
var process = new Process (command, args);
|
||||||
|
var value = StringTools.trim (process.stdout.readLine ().toString ());
|
||||||
|
process.close ();
|
||||||
|
return value;
|
||||||
|
|
||||||
|
} catch (e:Dynamic) {}
|
||||||
|
#end
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Get & Set Methods
|
// Get & Set Methods
|
||||||
@@ -619,6 +645,72 @@ class System {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function get_manufacturer ():String {
|
||||||
|
|
||||||
|
#if android
|
||||||
|
var manufacturer:String = JNI.createStaticField ("android/os/Build", "MANUFACTURER", "Ljava/lang/String;").get ();
|
||||||
|
if (manufacturer != null) {
|
||||||
|
return manufacturer.charAt (0).toUpperCase () + manufacturer.substr (1);
|
||||||
|
}
|
||||||
|
#elseif (ios || mac)
|
||||||
|
return "Apple";
|
||||||
|
#elseif linux
|
||||||
|
return __runProcess ("cat", [ "/sys/devices/virtual/dmi/id/product_name" ]);
|
||||||
|
#end
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function get_model ():String {
|
||||||
|
|
||||||
|
#if android
|
||||||
|
var manufacturer:String = JNI.createStaticField ("android/os/Build", "MANUFACTURER", "Ljava/lang/String;").get ();
|
||||||
|
var model:String = JNI.createStaticField ("android/os/Build", "MODEL", "Ljava/lang/String;").get ();
|
||||||
|
if (manufacturer != null && model != null) {
|
||||||
|
if (StringTools.startsWith (model.toLowerCase (), manufacturer.toLowerCase ())) {
|
||||||
|
model = StringTools.trim (model.substr (manufacturer.length));
|
||||||
|
while (StringTools.startsWith (model, "-")) {
|
||||||
|
model = StringTools.trim (model.substr (1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
#elseif ios
|
||||||
|
return NativeCFFI.lime_system_get_model ();
|
||||||
|
#elseif mac
|
||||||
|
return __runProcess ("sysctl", [ "-n", "hw.model" ]);
|
||||||
|
#elseif linux
|
||||||
|
return __runProcess ("cat", [ "/sys/devices/virtual/dmi/id/sys_vendor" ]);
|
||||||
|
#end
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function get_version ():String {
|
||||||
|
|
||||||
|
#if android
|
||||||
|
var release = JNI.createStaticField ("android/os/Build$VERSION", "RELEASE", "Ljava/lang/String;").get ();
|
||||||
|
var api = JNI.createStaticField ("android/os/Build$VERSION", "SDK_INT", "I").get ();
|
||||||
|
if (release != null && api != null) return "Android " + release + " (API " + api + ")";
|
||||||
|
#elseif ios
|
||||||
|
var name = "iOS";
|
||||||
|
var version:String = NativeCFFI.lime_system_get_version ();
|
||||||
|
if (name != null && version != null) return name + " " + version;
|
||||||
|
#elseif mac
|
||||||
|
//var name = __runProcess ("sw_vers", [ "-productName" ]);
|
||||||
|
var name = "macOS";
|
||||||
|
var version = __runProcess ("sw_vers", [ "-productVersion" ]);
|
||||||
|
if (name != null && version != null) return name + " " + version;
|
||||||
|
#elseif linux
|
||||||
|
return __runProcess ("lsb_release", [ "-ds" ]);
|
||||||
|
#end
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ namespace lime {
|
|||||||
static std::wstring* GetIOSDirectory (SystemDirectory type);
|
static std::wstring* GetIOSDirectory (SystemDirectory type);
|
||||||
static bool GetIOSTablet ();
|
static bool GetIOSTablet ();
|
||||||
#endif
|
#endif
|
||||||
|
static std::wstring* GetManufacturer ();
|
||||||
|
static std::wstring* GetModel ();
|
||||||
|
static std::wstring* GetVersion ();
|
||||||
#ifdef HX_WINDOWS
|
#ifdef HX_WINDOWS
|
||||||
static int GetWindowsConsoleMode (int handleType);
|
static int GetWindowsConsoleMode (int handleType);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1481,6 +1481,44 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value lime_system_get_manufacturer () {
|
||||||
|
|
||||||
|
std::wstring* manufacturer = System::GetManufacturer ();
|
||||||
|
|
||||||
|
if (manufacturer) {
|
||||||
|
|
||||||
|
value result = alloc_wstring (manufacturer->c_str ());
|
||||||
|
delete manufacturer;
|
||||||
|
return result;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return alloc_null ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value lime_system_get_model () {
|
||||||
|
|
||||||
|
std::wstring* model = System::GetModel ();
|
||||||
|
|
||||||
|
if (model) {
|
||||||
|
|
||||||
|
value result = alloc_wstring (model->c_str ());
|
||||||
|
delete model;
|
||||||
|
return result;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return alloc_null ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int lime_system_get_num_displays () {
|
int lime_system_get_num_displays () {
|
||||||
|
|
||||||
return System::GetNumDisplays ();
|
return System::GetNumDisplays ();
|
||||||
@@ -1495,6 +1533,25 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value lime_system_get_version () {
|
||||||
|
|
||||||
|
std::wstring* version = System::GetVersion ();
|
||||||
|
|
||||||
|
if (version) {
|
||||||
|
|
||||||
|
value result = alloc_wstring (version->c_str ());
|
||||||
|
delete version;
|
||||||
|
return result;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return alloc_null ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int lime_system_get_windows_console_mode (int handleType) {
|
int lime_system_get_windows_console_mode (int handleType) {
|
||||||
|
|
||||||
#ifdef HX_WINDOWS
|
#ifdef HX_WINDOWS
|
||||||
@@ -1976,8 +2033,11 @@ namespace lime {
|
|||||||
DEFINE_PRIME3 (lime_system_get_directory);
|
DEFINE_PRIME3 (lime_system_get_directory);
|
||||||
DEFINE_PRIME1 (lime_system_get_display);
|
DEFINE_PRIME1 (lime_system_get_display);
|
||||||
DEFINE_PRIME0 (lime_system_get_ios_tablet);
|
DEFINE_PRIME0 (lime_system_get_ios_tablet);
|
||||||
|
DEFINE_PRIME0 (lime_system_get_manufacturer);
|
||||||
|
DEFINE_PRIME0 (lime_system_get_model);
|
||||||
DEFINE_PRIME0 (lime_system_get_num_displays);
|
DEFINE_PRIME0 (lime_system_get_num_displays);
|
||||||
DEFINE_PRIME0 (lime_system_get_timer);
|
DEFINE_PRIME0 (lime_system_get_timer);
|
||||||
|
DEFINE_PRIME0 (lime_system_get_version);
|
||||||
DEFINE_PRIME1 (lime_system_get_windows_console_mode);
|
DEFINE_PRIME1 (lime_system_get_windows_console_mode);
|
||||||
DEFINE_PRIME1v (lime_system_open_file);
|
DEFINE_PRIME1v (lime_system_open_file);
|
||||||
DEFINE_PRIME2v (lime_system_open_url);
|
DEFINE_PRIME2v (lime_system_open_url);
|
||||||
|
|||||||
@@ -8,6 +8,27 @@
|
|||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetManufacturer () {
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetModel () {
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetVersion () {
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef HX_WINDOWS
|
#ifdef HX_WINDOWS
|
||||||
int System::GetWindowsConsoleMode (int handleType) {
|
int System::GetWindowsConsoleMode (int handleType) {
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#import <sys/utsname.h>
|
||||||
#include <system/System.h>
|
#include <system/System.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -61,6 +62,41 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetManufacturer () {
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetModel () {
|
||||||
|
|
||||||
|
#ifdef IPHONE
|
||||||
|
struct utsname systemInfo;
|
||||||
|
uname (&systemInfo);
|
||||||
|
|
||||||
|
std::string model = std::string (systemInfo.machine);
|
||||||
|
return new std::wstring (model.begin (), model.end ());
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::wstring* System::GetVersion () {
|
||||||
|
|
||||||
|
#ifdef IPHONE
|
||||||
|
NSString *versionString = [[UIDevice currentDevice] systemVersion];
|
||||||
|
std::string result = std::string ([versionString UTF8String]);
|
||||||
|
return new std::wstring (result.begin (), result.end ());
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void System::OpenFile (const char* path) {
|
void System::OpenFile (const char* path) {
|
||||||
|
|
||||||
OpenURL (path, NULL);
|
OpenURL (path, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user