From 08e94830da561b743cc87438ec2a7da22dac6c9d Mon Sep 17 00:00:00 2001 From: Jiyun Yang Date: Mon, 3 May 2021 16:31:43 +0900 Subject: [PATCH] [NUI] Disable external theme in TV profile and make theme data compact signed-off-by: Jiyun Yang --- src/Tizen.NUI/src/public/BaseComponents/View.cs | 46 ++++++++++++++-------- .../public/BaseComponents/ViewBindableProperty.cs | 28 +++++++------ .../src/public/BaseComponents/ViewInternal.cs | 13 +++--- src/Tizen.NUI/src/public/Theme/ThemeManager.cs | 9 ++++- 4 files changed, 61 insertions(+), 35 deletions(-) diff --git a/src/Tizen.NUI/src/public/BaseComponents/View.cs b/src/Tizen.NUI/src/public/BaseComponents/View.cs index aa61926..04ff8ed 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/View.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/View.cs @@ -39,13 +39,19 @@ namespace Tizen.NUI.BaseComponents private int heightPolicy = LayoutParamPolicies.WrapContent; // Layout height policy private float weight = 0.0f; // Weighting of child View in a Layout private bool backgroundImageSynchronosLoading = false; - private bool controlStatePropagation = false; - private ViewStyle viewStyle; - private bool themeChangeSensitive = false; private bool excludeLayouting = false; private LayoutTransition layoutTransition; - private ControlState controlStates = ControlState.Normal; private TransitionOptions transitionOptions = null; + private ThemeData themeData; + + internal class ThemeData + { + public bool controlStatePropagation = false; + public ViewStyle viewStyle; + public bool themeChangeSensitive = false; + public ControlState controlStates = ControlState.Normal; + public ViewSelectorData selectorData; + } static View() { } @@ -159,12 +165,13 @@ namespace Tizen.NUI.BaseComponents { get { - if (null == viewStyle) + if (themeData == null) themeData = new ThemeData(); + + if (themeData.viewStyle == null) { ApplyStyle(CreateViewStyle()); } - - return viewStyle; + return themeData.viewStyle; } } @@ -180,24 +187,25 @@ namespace Tizen.NUI.BaseComponents { get { - return controlStates; + return themeData == null ? ControlState.Normal : themeData.controlStates; } protected set { - if (controlStates == value) + if (ControlState == value) { return; } - var prevState = controlStates; + var prevState = ControlState; - controlStates = value; + if (themeData == null) themeData = new ThemeData(); + themeData.controlStates = value; var changeInfo = new ControlStateChangedEventArgs(prevState, value); ControlStateChangeEventInternal?.Invoke(this, changeInfo); - if (controlStatePropagation) + if (themeData.controlStatePropagation) { foreach (View child in Children) { @@ -2400,10 +2408,14 @@ namespace Tizen.NUI.BaseComponents [EditorBrowsable(EditorBrowsableState.Never)] public bool EnableControlStatePropagation { - get => controlStatePropagation; + get => themeData?.controlStatePropagation ?? false; set { - controlStatePropagation = value; + if (EnableControlStatePropagation == value) return; + + if (themeData == null) themeData = new ThemeData(); + + themeData.controlStatePropagation = value; foreach (View child in Children) { @@ -2522,9 +2534,11 @@ namespace Tizen.NUI.BaseComponents /// 9 public virtual void ApplyStyle(ViewStyle viewStyle) { - if (viewStyle == null || this.viewStyle == viewStyle) return; + if (viewStyle == null || themeData?.viewStyle == viewStyle) return; + + if (themeData == null) themeData = new ThemeData(); - this.viewStyle = viewStyle; + themeData.viewStyle = viewStyle; if (viewStyle.DirtyProperties == null || viewStyle.DirtyProperties.Count == 0) { diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs index 93aad5b..bae584a 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs @@ -82,7 +82,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.ClearBackground(view); + view.themeData?.selectorData?.ClearBackground(view); if (newValue is Selector selector) { @@ -118,7 +118,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.Color?.Reset(view); + view.themeData?.selectorData?.Color?.Reset(view); if (newValue is Selector selector) { @@ -143,10 +143,10 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - if (view.selectorData != null) + if (view.themeData?.selectorData != null) { - view.selectorData.BackgroundColor?.Reset(view); - view.selectorData.BackgroundImage?.Reset(view); + view.themeData.selectorData.BackgroundColor?.Reset(view); + view.themeData.selectorData.BackgroundImage?.Reset(view); } if (newValue is Selector selector) @@ -175,7 +175,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.BackgroundImageBorder?.Reset(view); + view.themeData?.selectorData?.BackgroundImageBorder?.Reset(view); if (newValue is Selector selector) { @@ -599,7 +599,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.Opacity?.Reset(view); + view.themeData?.selectorData?.Opacity?.Reset(view); if (newValue is Selector selector) { @@ -1499,7 +1499,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.ClearShadow(view); + view.themeData?.selectorData?.ClearShadow(view); if (newValue is Selector selector) { @@ -1530,7 +1530,7 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - view.selectorData?.ClearShadow(view); + view.themeData?.selectorData?.ClearShadow(view); if (newValue is Selector selector) { @@ -1624,11 +1624,13 @@ namespace Tizen.NUI.BaseComponents { var view = (View)bindable; - if (view.themeChangeSensitive == (bool)newValue) return; + if (view.ThemeChangeSensitive == (bool)newValue) return; - view.themeChangeSensitive = (bool)newValue; + if (view.themeData == null) view.themeData = new ThemeData(); - if (view.themeChangeSensitive) + view.themeData.themeChangeSensitive = (bool)newValue; + + if (view.themeData.themeChangeSensitive) { ThemeManager.ThemeChangedInternal.Add(view.OnThemeChanged); } @@ -1639,7 +1641,7 @@ namespace Tizen.NUI.BaseComponents }, defaultValueCreator: (bindable) => { - return ((View)bindable).themeChangeSensitive; + return ((View)bindable).themeData?.themeChangeSensitive ?? false; }); /// diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs index 8245bcd..19fe227 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs @@ -28,8 +28,6 @@ namespace Tizen.NUI.BaseComponents /// 3 public partial class View { - private ViewSelectorData selectorData; - internal string styleName; /// @@ -1109,8 +1107,8 @@ namespace Tizen.NUI.BaseComponents //Called by User //Release your own managed resources here. //You should release all of your own disposable objects here. - selectorData?.Reset(this); - if (themeChangeSensitive) + themeData?.selectorData?.Reset(this); + if (ThemeChangeSensitive) { ThemeManager.ThemeChangedInternal.Remove(OnThemeChanged); } @@ -1384,6 +1382,11 @@ namespace Tizen.NUI.BaseComponents } } - private ViewSelectorData EnsureSelectorData() => selectorData ?? (selectorData = new ViewSelectorData()); + private ViewSelectorData EnsureSelectorData() + { + if (themeData == null) themeData = new ThemeData(); + + return themeData.selectorData ?? (themeData.selectorData = new ViewSelectorData()); + } } } diff --git a/src/Tizen.NUI/src/public/Theme/ThemeManager.cs b/src/Tizen.NUI/src/public/Theme/ThemeManager.cs index e20c05f..c720316 100755 --- a/src/Tizen.NUI/src/public/Theme/ThemeManager.cs +++ b/src/Tizen.NUI/src/public/Theme/ThemeManager.cs @@ -15,6 +15,10 @@ * */ +#if !PROFILE_TV +#define ExternalThemeEnabled +#endif + using System; using System.Collections.Generic; using System.ComponentModel; @@ -215,6 +219,7 @@ namespace Tizen.NUI /// The external theme instance to be applied as base. internal static void ApplyExternalTheme(IExternalTheme externalTheme) { +#if ExternalThemeEnabled Debug.Assert(defaultTheme != null); if (defaultTheme.HasSameIdAndVersion(externalTheme)) @@ -249,6 +254,7 @@ namespace Tizen.NUI defaultTheme = newTheme; NotifyThemeChanged(); +#endif } internal static void AddPackageTheme(IThemeCreator themeCreator) @@ -262,12 +268,13 @@ namespace Tizen.NUI var packageTheme = themeCreator.Create(); Debug.Assert(packageTheme != null); +#if ExternalThemeEnabled var externalTheme = ExternalThemeManager.GetCurrentTheme(); if (externalTheme != null && !packageTheme.HasSameIdAndVersion(externalTheme)) { packageTheme.ApplyExternalTheme(externalTheme, themeCreator.GetExternalThemeKeyListSet()); } - +#endif if (defaultTheme == null) { defaultTheme = new Theme() -- 2.7.4