Пример #1
0
        public static CFException FromCFError(IntPtr cfErrorHandle, bool release)
        {
            if (cfErrorHandle == IntPtr.Zero)
            {
                throw new ArgumentNullException(nameof(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?.ToString(), i.Value?.ToString());
                    }
                }
            }
            if (release)
            {
                CFObject.CFRelease(cfErrorHandle);
            }
            return(e);
        }
Пример #2
0
 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);
     }
 }
Пример #3
0
        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);
                }
        }
Пример #4
0
        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);
                }
        }
Пример #5
0
        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), releaseHandle: true));
            }
        }
Пример #6
0
 public string GetStringValue(string key)
 {
     using (var str = new CFString(key)) {
         return(CFString.FetchString(CFDictionaryGetValue(Handle, str.Handle)));
     }
 }