public static CFException FromCFError(IntPtr cfErrorHandle, bool release) { if (cfErrorHandle == IntPtr.Zero) { throw new ArgumentException("cfErrorHandle must not be null.", "cfErrorHandle"); } var e = new CFException( CFString.FetchString(CFErrorCopyDescription(cfErrorHandle), releaseHandle: true), (NSString)Runtime.GetNSObject(CFErrorGetDomain(cfErrorHandle)), CFErrorGetCode(cfErrorHandle), CFString.FetchString(CFErrorCopyFailureReason(cfErrorHandle), releaseHandle: true), CFString.FetchString(CFErrorCopyRecoverySuggestion(cfErrorHandle), releaseHandle: true)); var cfUserInfo = CFErrorCopyUserInfo(cfErrorHandle); if (cfUserInfo != IntPtr.Zero) { using (var userInfo = new NSDictionary(cfUserInfo)) { foreach (var i in userInfo) { e.Data.Add(i.Key, i.Value); } } } if (release) { CFObject.CFRelease(cfErrorHandle); } return(e); }
static string ToString(IntPtr cfStringRef, bool release) { var r = CFString.FetchString(cfStringRef); if (release && (cfStringRef != IntPtr.Zero)) { CFObject.CFRelease(cfStringRef); } return(r); }
public static string[] GetLocalizations(NSUrl bundle) { if (bundle == null) { throw new ArgumentNullException("bundle"); } using (var cfArray = new CFArray(CFBundleCopyLocalizationsForURL(bundle.Handle), true)) { var cultureInfo = new string [cfArray.Count]; for (int index = 0; index < cfArray.Count; index++) { cultureInfo [index] = CFString.FetchString(cfArray.GetValue(index)); } return(cultureInfo); } }
public static string[] GetPreferredLocalizations(string[] locArray) { if (locArray == null) { throw new ArgumentNullException("locArray"); } var cfString = new CFString [locArray.Length]; for (int index = 0; index < locArray.Length; index++) { cfString [index] = new CFString(locArray [index]); } using (var cfLocArray = CFArray.FromNativeObjects(cfString)) using (var cfArray = new CFArray(CFBundleCopyPreferredLocalizationsFromArray(cfLocArray.Handle), true)) { var cultureInfo = new string [cfArray.Count]; for (int index = 0; index < cfArray.Count; index++) { cultureInfo [index] = CFString.FetchString(cfArray.GetValue(index)); } return(cultureInfo); } }
public static string[] GetLocalizationsForPreferences(string[] locArray, string[] prefArray) { if (locArray == null) { throw new ArgumentNullException("locArray"); } if (prefArray == null) { throw new ArgumentNullException("prefArray"); } var cfLocal = new CFString [locArray.Length]; for (int index = 0; index < locArray.Length; index++) { cfLocal [index] = new CFString(locArray [index]); } var cfPref = new CFString [prefArray.Length]; for (int index = 0; index < prefArray.Length; index++) { cfPref [index] = new CFString(prefArray [index]); } using (CFArray cfLocalArray = CFArray.FromNativeObjects(cfLocal), cfPrefArray = CFArray.FromNativeObjects(cfPref)) using (var cfArray = new CFArray(CFBundleCopyLocalizationsForPreferences(cfLocalArray.Handle, cfPrefArray.Handle), true)) { var cultureInfo = new string [cfArray.Count]; for (int index = 0; index < cfArray.Count; index++) { cultureInfo [index] = CFString.FetchString(cfArray.GetValue(index)); } return(cultureInfo); } }
public string GetLocalizedString(string key, string defaultValue, string tableName) { if (String.IsNullOrEmpty(key)) { throw new ArgumentException("key"); } if (String.IsNullOrEmpty(tableName)) { throw new ArgumentException("tableName"); } // we do allow null and simply use an empty string to avoid the extra check if (defaultValue == null) { defaultValue = string.Empty; } using (CFString cfKey = new CFString(key), cfValue = new CFString(defaultValue), cfTable = new CFString(tableName)) { return(CFString.FetchString(CFBundleCopyLocalizedString(handle, cfKey.Handle, cfValue.Handle, cfTable.Handle))); } }
public string GetStringValue(string key) { using (var str = new CFString(key)) { return(CFString.FetchString(CFDictionaryGetValue(Handle, str.handle))); } }