[NUI] Update theme system
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Xaml / MarkupExtensions / ThemeResourcePathExtension.cs
1 /*
2  * Copyright(c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 using System;
19 using System.ComponentModel;
20 using Tizen.NUI.Binding;
21
22 namespace Tizen.NUI.Xaml
23 {
24     /// <summary> The class to support theme resource path. </summary>
25     [EditorBrowsable(EditorBrowsableState.Never)]
26     [ContentProperty(nameof(FilePath))]
27     [AcceptEmptyServiceProvider]
28     public class ThemeResourcePathExtension : IMarkupExtension<string>
29     {
30         /// <summary></summary>
31         [EditorBrowsable(EditorBrowsableState.Never)]
32         public ThemeResourcePathExtension()
33         {
34         }
35
36         /// <summary></summary>
37         [EditorBrowsable(EditorBrowsableState.Never)]
38         public string FilePath { get; set; }
39
40         /// <inheritdoc/>
41         [EditorBrowsable(EditorBrowsableState.Never)]
42         public string ProvideValue(IServiceProvider serviceProvider) => ExternalThemeManager.SharedResourcePath + FilePath;
43
44         /// <inheritdoc/>
45         [EditorBrowsable(EditorBrowsableState.Never)]
46         object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
47         {
48             return (this as IMarkupExtension<string>).ProvideValue(serviceProvider);
49         }
50     }
51 }