sync with devel/master branch
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / StyleManager.cs
1 //------------------------------------------------------------------------------
2 // <auto-generated />
3 //
4 // This file was automatically generated by SWIG (http://www.swig.org).
5 // Version 3.0.9
6 //
7 // Do not make changes to this file unless you know what you are doing--modify
8 // the SWIG interface file instead.
9 //------------------------------------------------------------------------------
10
11 namespace Tizen.NUI
12 {
13
14     using System;
15     using System.Runtime.InteropServices;
16     using Tizen.NUI.BaseComponents;
17
18     /// <summary>
19     /// StyleManager informs applications of system theme change, and supports application theme change at runtime.<br>
20     /// Applies various styles to Controls using the properties system.<br>
21     /// On theme change, it automatically updates all controls, then raises a event to inform the application.<br>
22     /// If the application wants to customize the theme, RequestThemeChange needs to be called.<br>
23     /// It provides the path to the  application resource root folder, from there the filename can an be specified along with any sub folders, e.g Images, Models etc.<br>
24     /// </summary>
25     public class StyleManager : BaseHandle
26     {
27         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
28
29         internal StyleManager(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.StyleManager_SWIGUpcast(cPtr), cMemoryOwn)
30         {
31             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
32         }
33
34         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(StyleManager obj)
35         {
36             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
37         }
38
39         /// <summary>
40         /// Dispose
41         /// </summary>
42         protected override void Dispose(DisposeTypes type)
43         {
44             if(disposed)
45             {
46                 return;
47             }
48
49             if(type == DisposeTypes.Explicit)
50             {
51                 //Called by User
52                 //Release your own managed resources here.
53                 //You should release all of your own disposable objects here.
54             }
55
56             //Release your own unmanaged resources here.
57             //You should not access any managed member here except static instance.
58             //because the execution order of Finalizes is non-deterministic.
59
60             if (swigCPtr.Handle != global::System.IntPtr.Zero)
61             {
62                 if (swigCMemOwn)
63                 {
64                     swigCMemOwn = false;
65                     NDalicPINVOKE.delete_StyleManager(swigCPtr);
66                 }
67                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
68             }
69
70             base.Dispose(type);
71         }
72
73         /// <summary>
74         /// Style changed event arguments
75         /// </summary>
76         public class StyleChangedEventArgs : EventArgs
77         {
78             private StyleManager _styleManager;
79             private StyleChangeType _styleChange;
80
81             /// <summary>
82             /// StyleManager.
83             /// </summary>
84             public StyleManager StyleManager
85             {
86                 get
87                 {
88                     return _styleManager;
89                 }
90                 set
91                 {
92                     _styleManager = value;
93                 }
94             }
95
96             /// <summary>
97             /// StyleChange - contains Style change information (default font changed or
98             /// default font size changed or theme has changed).<br>
99             /// </summary>
100             public StyleChangeType StyleChange
101             {
102                 get
103                 {
104                     return _styleChange;
105                 }
106                 set
107                 {
108                     _styleChange = value;
109                 }
110             }
111
112         }
113
114         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
115         private delegate void StyleChangedCallbackDelegate(IntPtr styleManager, Tizen.NUI.StyleChangeType styleChange);
116         private EventHandler<StyleChangedEventArgs> _styleManagerStyleChangedEventHandler;
117         private StyleChangedCallbackDelegate _styleManagerStyleChangedCallbackDelegate;
118
119         /// <summary>
120         /// Event for StyleChanged signal which can be used to subscribe/unsubscribe the
121         /// event handler provided by the user.<br>
122         /// StyleChanged signal is is emitted after the style (e.g. theme/font change) has changed
123         /// and the controls have been informed.<br>
124         /// </summary>
125         public event EventHandler<StyleChangedEventArgs> StyleChanged
126         {
127             add
128             {
129                 if (_styleManagerStyleChangedEventHandler == null)
130                 {
131                     _styleManagerStyleChangedCallbackDelegate = (OnStyleChanged);
132                     StyleChangedSignal().Connect(_styleManagerStyleChangedCallbackDelegate);
133                 }
134                 _styleManagerStyleChangedEventHandler += value;
135             }
136             remove
137             {
138                 _styleManagerStyleChangedEventHandler -= value;
139                 if (_styleManagerStyleChangedEventHandler == null && StyleChangedSignal().Empty() == false)
140                 {
141                     StyleChangedSignal().Disconnect(_styleManagerStyleChangedCallbackDelegate);
142                 }
143             }
144         }
145
146         // Callback for StyleManager StyleChangedsignal
147         private void OnStyleChanged(IntPtr styleManager, StyleChangeType styleChange)
148         {
149             StyleChangedEventArgs e = new StyleChangedEventArgs();
150
151             // Populate all members of "e" (StyleChangedEventArgs) with real data
152             e.StyleManager = StyleManager.GetStyleManagerFromPtr(styleManager);
153             e.StyleChange = styleChange;
154
155             if (_styleManagerStyleChangedEventHandler != null)
156             {
157                 //here we send all data to user event handlers
158                 _styleManagerStyleChangedEventHandler(this, e);
159             }
160         }
161
162         internal static StyleManager GetStyleManagerFromPtr(global::System.IntPtr cPtr)
163         {
164             StyleManager ret = new StyleManager(cPtr, false);
165             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
166             return ret;
167         }
168
169         /// <summary>
170         /// Creates a StyleManager handle.<br>
171         /// this can be initialized with StyleManager::Get().<br>
172         /// </summary>
173         public StyleManager() : this(NDalicPINVOKE.new_StyleManager(), true)
174         {
175             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
176         }
177
178         /// <summary>
179         /// Gets the singleton of StyleManager object.
180         /// </summary>
181         /// <returns>A handle to the StyleManager control</returns>
182         public static StyleManager Get()
183         {
184             StyleManager ret = new StyleManager(NDalicPINVOKE.StyleManager_Get(), true);
185             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
186             return ret;
187         }
188
189         /// <summary>
190         /// Applies a new theme to the application. <br>
191         /// This will be merged on top of the default Toolkit theme.<br>
192         /// If the application theme file doesn't style all controls that the
193         /// application uses, then the default Toolkit theme will be used
194         /// instead for those controls.<br>
195         /// </summary>
196         /// <param name="themeFile">A relative path is specified for style theme</param>
197         public void ApplyTheme(string themeFile)
198         {
199             NDalicPINVOKE.StyleManager_ApplyTheme(swigCPtr, themeFile);
200             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
201         }
202
203         /// <summary>
204         /// Applies the default Toolkit theme.
205         /// </summary>
206         public void ApplyDefaultTheme()
207         {
208             NDalicPINVOKE.StyleManager_ApplyDefaultTheme(swigCPtr);
209             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
210         }
211
212         /// <summary>
213         /// Sets a constant for use when building styles.
214         /// </summary>
215         /// <param name="key">The key of the constant</param>
216         /// <param name="value">The value of the constant</param>
217         public void SetStyleConstant(string key, PropertyValue value)
218         {
219             NDalicPINVOKE.StyleManager_SetStyleConstant(swigCPtr, key, PropertyValue.getCPtr(value));
220             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
221         }
222
223         /// <summary>
224         /// Returns the style constant set for a specific key.
225         /// </summary>
226         /// <param name="key">The key of the constant</param>
227         /// <param name="valueOut">The value of the constant if it exists</param>
228         /// <returns></returns>
229         public bool GetStyleConstant(string key, PropertyValue valueOut)
230         {
231             bool ret = NDalicPINVOKE.StyleManager_GetStyleConstant(swigCPtr, key, PropertyValue.getCPtr(valueOut));
232             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
233             return ret;
234         }
235
236         /// <summary>
237         /// Applies the specified style to the control.
238         /// </summary>
239         /// <param name="control">The control to which to apply the style</param>
240         /// <param name="jsonFileName">The name of the JSON style file to apply</param>
241         /// <param name="styleName">The name of the style within the JSON file to apply</param>
242         public void ApplyStyle(View control, string jsonFileName, string styleName)
243         {
244             NDalicPINVOKE.StyleManager_ApplyStyle(swigCPtr, View.getCPtr(control), jsonFileName, styleName);
245             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
246         }
247
248         internal StyleChangedSignal StyleChangedSignal()
249         {
250             StyleChangedSignal ret = new StyleChangedSignal(NDalicPINVOKE.StyleManager_StyleChangedSignal(swigCPtr), false);
251             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
252             return ret;
253         }
254
255     }
256 }