/* * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.IO; using Tizen.Internals.Errors; namespace Tizen.Applications { /// /// The class for getting the resource path. /// public static class ResourceManager { /// /// Enumeration for the resource category. /// public enum Category : int { /// /// Image format. /// Image = 0, /// /// Layout format. /// Layout, /// /// Sound format. /// Sound, /// /// Binary format. /// Binary } private static ErrorCode AppResourceManagerGet(Category category, string id, out string path) { ErrorCode err; try { err = Interop.AppCommon.AppResourceManagerGet( (Interop.AppCommon.ResourceCategory)category, id, out path); } catch (System.TypeLoadException) { err = Interop.AppCommon.LegacyAppResourceManagerGet( (Interop.AppCommon.ResourceCategory)category, id, out path); } return err; } /// /// Converts resource ID to the path name. /// /// Category to search. /// ID to search. /// Found resource path. /// Thrown in case of failed conditions. public static string GetPath(Category category, string id) { string path; ErrorCode err = AppResourceManagerGet(category, id, out path); switch (err) { case ErrorCode.InvalidParameter: throw new InvalidOperationException("Invalid parameter"); case ErrorCode.OutOfMemory: throw new InvalidOperationException("Out-of-memory at unmanaged code"); case ErrorCode.IoError: throw new InvalidOperationException("IO error at unmanaged code"); } return path; } /// /// Converts resource ID to the path name. /// /// Category to search. /// ID to search. /// Found resource path or null when the resource doesn't exist. /// Thrown in case of failed conditions. public static string TryGetPath(Category category, string id) { string path; ErrorCode err; string res; if (Application.Current != null) { res = Application.Current.DirectoryInfo.Resource + "res.xml"; } else { res = Interop.AppCommon.AppGetResourcePath() + "res.xml"; } if (!File.Exists(res)) return null; err = AppResourceManagerGet(category, id, out path); switch (err) { case ErrorCode.InvalidParameter: throw new InvalidOperationException("Invalid parameter"); case ErrorCode.OutOfMemory: throw new InvalidOperationException("Out-of-memory at unmanaged code"); case ErrorCode.IoError: return null; } return path; } } }