示例#1
0
        public NSUrl[] GetResourceUrls(string resourceType, string subDirName, string localizationName)
        {
            if (String.IsNullOrEmpty(resourceType))
            {
                throw new ArgumentException("resourceType");
            }

            if (String.IsNullOrEmpty(localizationName))
            {
                throw new ArgumentException("localizationName");
            }

            using (CFString cfType = new CFString(resourceType),
                   cfDirName = new CFString(subDirName ?? string.Empty),
                   cfLocalization = new CFString(localizationName))
                using (var cfArray = new CFArray(CFBundleCopyResourceURLsOfTypeForLocalization(handle, cfType.Handle,
                                                                                               String.IsNullOrEmpty(subDirName) ? IntPtr.Zero : cfDirName.Handle,
                                                                                               cfLocalization.Handle), true)) {
                    var urls = new NSUrl [cfArray.Count];
                    for (int index = 0; index < cfArray.Count; index++)
                    {
                        urls [index] = Runtime.GetNSObject <NSUrl> (cfArray.GetValue(index), true);
                    }
                    return(urls);
                }
        }
示例#2
0
 public static CFBundle[] GetAll()
 {
     using (var cfBundles = new CFArray(CFBundleGetAllBundles())) {
         var managedBundles = new CFBundle [cfBundles.Count];
         for (int index = 0; index < cfBundles.Count; index++)
         {
             // follow the get rule, we do not own the object
             managedBundles [index] = new CFBundle(cfBundles.GetValue(index), false);
         }
         return(managedBundles);
     }
 }
示例#3
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);
     }
 }
示例#4
0
 static CFProxy[] ParseProxies(IntPtr proxyList)
 {
     CFProxy[] proxies = null;
     if (proxyList != IntPtr.Zero)
     {
         // it was retained in the cbs.
         using (var array = new CFArray(proxyList, false)) {
             proxies = new CFProxy [array.Count];
             for (int i = 0; i < proxies.Length; i++)
             {
                 var dict = Runtime.GetNSObject <NSDictionary> (array.GetValue(i));
                 proxies[i] = new CFProxy(dict);
             }
         }
     }
     return(proxies);
 }
示例#5
0
        public NSUrl[] GetResourceUrls(string resourceType, string subDirName)
        {
            if (String.IsNullOrEmpty(resourceType))
            {
                throw new ArgumentException("resourceName");
            }

            using (CFString cfResourceType = new CFString(resourceType),
                   cfSubDir = new CFString(subDirName ?? string.Empty))
                using (var cfArray = new CFArray(CFBundleCopyResourceURLsOfType(handle, cfResourceType.Handle,
                                                                                String.IsNullOrEmpty(subDirName) ? IntPtr.Zero : cfSubDir.Handle), true)) {
                    var result = new NSUrl [cfArray.Count];
                    for (int index = 0; index < cfArray.Count; index++)
                    {
                        result [index] = Runtime.GetNSObject <NSUrl> (cfArray.GetValue(index), true);
                    }
                    return(result);
                }
        }
示例#6
0
 public static CFBundle[] GetBundlesFromDirectory(NSUrl directoryUrl, string bundleType)
 {
     if (directoryUrl == null)             // NSUrl cannot be "" by definition
     {
         throw new ArgumentNullException("directoryUrl");
     }
     if (String.IsNullOrEmpty(bundleType))
     {
         throw new ArgumentException("bundleType");
     }
     using (var bundleTypeCFSting = new CFString(bundleType))
         using (var cfBundles = new CFArray(CFBundleCreateBundlesFromDirectory(IntPtr.Zero, directoryUrl.Handle, bundleTypeCFSting.Handle), true)) {
             var managedBundles = new CFBundle [cfBundles.Count];
             for (int index = 0; index < cfBundles.Count; index++)
             {
                 // follow the create rules, therefore we do have ownership of each of the cfbundles
                 managedBundles [index] = new CFBundle(cfBundles.GetValue(index), true);
             }
             return(managedBundles);
         }
 }
示例#7
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);
                }
        }
示例#8
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);
                }
        }