X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FTizen.NUI.Components%2FControls%2FPopup.cs;h=f046782ce06737aedbb1c18db8ca861a375dfd37;hb=df054bbf5c249915d78db8b05dfa7542c96a5af3;hp=3b6648760101f8c78dcba6f2aa93a55d78dcc8ef;hpb=fb680d0804068bef1e9644f51640ebb9c78ba04c;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git diff --git a/src/Tizen.NUI.Components/Controls/Popup.cs b/src/Tizen.NUI.Components/Controls/Popup.cs index 3b66487..f046782 100755 --- a/src/Tizen.NUI.Components/Controls/Popup.cs +++ b/src/Tizen.NUI.Components/Controls/Popup.cs @@ -1,5 +1,5 @@ /* - * Copyright(c) 2019 Samsung Electronics Co., Ltd. + * Copyright(c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,6 @@ * */ using System; -using System.Collections.Generic; using Tizen.NUI.BaseComponents; using Tizen.NUI.Binding; using System.ComponentModel; @@ -28,24 +27,22 @@ namespace Tizen.NUI.Components /// /// 6 [Obsolete("Deprecated in API8; Will be removed in API10")] - public class Popup : Control + public partial class Popup : Control { /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static readonly BindableProperty ButtonHeightProperty = BindableProperty.Create(nameof(ButtonHeight), typeof(int), typeof(Popup), default(int), propertyChanged: (bindable, oldValue, newValue) => { var instance = (Popup)bindable; - if (newValue != null && instance?.Style?.Buttons?.Size != null ) + if (newValue != null) { - instance.Style.Buttons.Size.Height = (int)newValue; instance.btGroup.Itemheight = (int)newValue; instance.UpdateView(); } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return (int)(instance.Style?.Buttons?.Size?.Height ?? 0); + return (int)((Popup)bindable).btGroup.Itemheight; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -55,17 +52,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - if (instance.Style?.Buttons?.Text != null) - { - instance.Style.Buttons.Text.PointSize = (float)newValue; - } instance.btGroup.ItemPointSize = (float)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.Text?.PointSize?.All ?? 0; + return ((Popup)bindable).btGroup.ItemPointSize; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -75,14 +67,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - instance.Style.Buttons.Text.FontFamily = (string)newValue; instance.btGroup.ItemFontFamily = (string)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.Text?.FontFamily.All; + return ((Popup)bindable).btGroup.ItemFontFamily; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -91,18 +81,13 @@ namespace Tizen.NUI.Components { var instance = (Popup)bindable; if (newValue != null) - { - if (instance.Style?.Buttons?.Text != null) - { - instance.Style.Buttons.Text.TextColor = (Color)newValue; - } + { instance.btGroup.ItemTextColor = (Color)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.Text?.TextColor?.All; + return ((Popup)bindable).btGroup.ItemTextColor; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -112,14 +97,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - instance.Style.Buttons.Overlay.BackgroundColor = (Selector)newValue; instance.btGroup.OverLayBackgroundColorSelector = (Selector)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.Overlay?.BackgroundColor; + return ((Popup)bindable).btGroup.OverLayBackgroundColorSelector; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -129,14 +112,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - instance.Style.Buttons.Text.HorizontalAlignment = (HorizontalAlignment)newValue; instance.btGroup.ItemTextAlignment = (HorizontalAlignment)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.Text?.HorizontalAlignment ?? HorizontalAlignment.Center; + return ((Popup)bindable).btGroup.ItemTextAlignment; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -146,18 +127,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - if (instance.Style.Buttons.BackgroundImage == null) - { - instance.Style.Buttons.BackgroundImage = new Selector(); - } instance.btGroup.ItemBackgroundImageUrl = (string)newValue; - instance.Style.Buttons.BackgroundImage = (string)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.BackgroundImage?.All; + return ((Popup)bindable).btGroup.ItemBackgroundImageUrl; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -167,18 +142,12 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; if (newValue != null) { - if (instance.Style.Buttons.BackgroundImageBorder == null) - { - instance.Style.Buttons.BackgroundImageBorder = new Selector(); - } - instance.Style.Buttons.BackgroundImageBorder = (Rectangle)newValue; instance.btGroup.ItemBackgroundBorder = (Rectangle)newValue; } }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.BackgroundImageBorder?.All; + return ((Popup)bindable).btGroup.ItemBackgroundBorder; }); /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -188,19 +157,18 @@ namespace Tizen.NUI.Components var instance = (Popup)bindable; ImageShadow shadow = (ImageShadow)newValue; instance.btGroup.ItemImageShadow = new ImageShadow(shadow); - instance.Style.Buttons.ImageShadow = new ImageShadow(shadow); }, defaultValueCreator: (bindable) => { - var instance = (Popup)bindable; - return instance.Style?.Buttons?.ImageShadow?.All; + return ((Popup)bindable).btGroup.ItemImageShadow; }); - private TextLabel titleText; private ButtonGroup btGroup = null; private Window window = null; private Layer container = new Layer(); + private ButtonStyle buttonStyle = new ButtonStyle(); + static Popup() { } /// @@ -210,7 +178,6 @@ namespace Tizen.NUI.Components [Obsolete("Deprecated in API8; Will be removed in API10")] public Popup() : base() { - Initialize(); } /// @@ -220,7 +187,6 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] public Popup(string style) : base(style) { - Initialize(); } /// @@ -230,7 +196,6 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] public Popup(PopupStyle popupStyle) : base(popupStyle) { - Initialize(); } /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -266,14 +231,11 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] public void AddButton(string buttonText) { - if (Style.Buttons != null) - { - Button btn = new Button(Style.Buttons); - btn.Style.Text.Text = buttonText; - btn.ClickEvent += ButtonClickEvent; - btGroup.AddItem(btn); - UpdateView(); - } + Button btn = new Button(buttonStyle); + btn.Text = buttonText; + btn.ClickEvent += ButtonClickEvent; + btGroup.AddItem(btn); + UpdateView(); } /// @@ -291,11 +253,11 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] public void AddButton(string buttonText, ButtonStyle style) { - if (Style.Buttons != null && style != null) - { - Style.Buttons.CopyFrom(style); - AddButton(buttonText); - } + Button btn = new Button(style); + btn.Text = buttonText; + btn.ClickEvent += ButtonClickEvent; + btGroup.AddItem(btn); + UpdateView(); } /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API. @@ -331,12 +293,6 @@ namespace Tizen.NUI.Components public event EventHandler PopupButtonClickEvent; /// - /// Get style of popup. - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public new PopupStyle Style => ViewStyle as PopupStyle; - - /// /// Popup Title. /// [EditorBrowsable(EditorBrowsableState.Never)] @@ -346,7 +302,15 @@ namespace Tizen.NUI.Components { if (null == titleText) { - titleText = new TextLabel(); + titleText = new TextLabel + { + PositionUsesPivotPoint = true, + ParentOrigin = Tizen.NUI.ParentOrigin.TopLeft, + PivotPoint = Tizen.NUI.PivotPoint.TopLeft, + HorizontalAlignment = HorizontalAlignment.Begin, + VerticalAlignment = VerticalAlignment.Bottom, + Text = "Title" + }; Add(titleText); } return titleText; @@ -366,19 +330,19 @@ namespace Tizen.NUI.Components { get { - return Style?.Title?.Text?.All; + return GetValue(TitleTextProperty) as string; } set { - if (value != null) - { - if (Style?.Title != null) - { - Style.Title.Text = value; - } - } + SetValue(TitleTextProperty, value); + NotifyPropertyChanged(); } } + private string InternalTitleText + { + get => Title.Text; + set => Title.Text = value; + } /// /// Title text point size in Popup. @@ -389,16 +353,19 @@ namespace Tizen.NUI.Components { get { - return Style?.Title?.PointSize?.All ?? 0; + return (float)GetValue(TitlePointSizeProperty); } set { - if (Style?.Title != null) - { - Style.Title.PointSize = value; - } + SetValue(TitlePointSizeProperty, value); + NotifyPropertyChanged(); } } + private float InternalTitlePointSize + { + get => Title.PointSize; + set => Title.PointSize = value; + } /// /// Title text color in Popup. @@ -409,16 +376,19 @@ namespace Tizen.NUI.Components { get { - return Style?.Title?.TextColor?.All; + return GetValue(TitleTextColorProperty) as Color; } set { - if (Style?.Title != null) - { - Style.Title.TextColor = value; - } + SetValue(TitleTextColorProperty, value); + NotifyPropertyChanged(); } } + private Color InternalTitleTextColor + { + get => Title.TextColor; + set => Title.TextColor = value; + } /// /// Title text horizontal alignment in Popup. @@ -429,13 +399,19 @@ namespace Tizen.NUI.Components { get { - return Style?.Title?.HorizontalAlignment ?? HorizontalAlignment.Center; + return (HorizontalAlignment)GetValue(TitleTextHorizontalAlignmentProperty); } set { - Style.Title.HorizontalAlignment = value; + SetValue(TitleTextHorizontalAlignmentProperty, value); + NotifyPropertyChanged(); } } + private HorizontalAlignment InternalTitleTextHorizontalAlignment + { + get => Title.HorizontalAlignment; + set => Title.HorizontalAlignment = value; + } /// /// Title text's position in Popup. @@ -446,13 +422,19 @@ namespace Tizen.NUI.Components { get { - return Style?.Title?.Position ?? new Position(0, 0, 0); + return GetValue(TitleTextPositionProperty) as Position; } set { - Style.Title.Position = value; + SetValue(TitleTextPositionProperty, value); + NotifyPropertyChanged(); } } + private Position InternalTitleTextPosition + { + get => Title.Position; + set => Title.Position = value; + } /// /// Title text's height in Popup. @@ -463,16 +445,19 @@ namespace Tizen.NUI.Components { get { - return (int)(Style?.Title?.Size?.Height ?? 0); + return (int)GetValue(TitleHeightProperty); } set { - if (Style?.Title?.Size != null) - { - Style.Title.Size.Height = value; - } + SetValue(TitleHeightProperty, value); + NotifyPropertyChanged(); } } + private int InternalTitleHeight + { + get => (int)Title.SizeHeight; + set => Title.SizeHeight = (int)value; + } /// /// Content view in Popup, only can be gotten. @@ -492,6 +477,18 @@ namespace Tizen.NUI.Components [Obsolete("Deprecated in API8; Will be removed in API10")] public int ButtonCount { + get + { + return (int)GetValue(ButtonCountProperty); + } + set + { + SetValue(ButtonCountProperty, value); + NotifyPropertyChanged(); + } + } + private int InternalButtonCount + { get; set; } @@ -538,7 +535,7 @@ namespace Tizen.NUI.Components public string ButtonFontFamily { get - { + { return (string)GetValue(ButtonFontFamilyProperty); } set @@ -590,7 +587,7 @@ namespace Tizen.NUI.Components public HorizontalAlignment ButtonTextAlignment { get - { + { return (HorizontalAlignment)GetValue(ButtonTextAlignmentProperty); } set @@ -608,7 +605,7 @@ namespace Tizen.NUI.Components public string ButtonBackground { get - { + { return (string)GetValue(ButtonBackgroundProperty); } set @@ -627,7 +624,7 @@ namespace Tizen.NUI.Components { get { - + return (Rectangle)GetValue(ButtonBackgroundBorderProperty); } set @@ -667,7 +664,9 @@ namespace Tizen.NUI.Components /// Dispose type. /// 6 [Obsolete("Deprecated in API8; Will be removed in API10")] +#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member, It will be removed in API10 protected override void Dispose(DisposeTypes type) +#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member, It will be removed in API10 { if (disposed) { @@ -694,6 +693,8 @@ namespace Tizen.NUI.Components btGroup.Dispose(); btGroup = null; } + + buttonStyle?.Dispose(); } base.Dispose(type); @@ -729,9 +730,28 @@ namespace Tizen.NUI.Components public override void ApplyStyle(ViewStyle viewStyle) { base.ApplyStyle(viewStyle); - PopupStyle ppStyle = viewStyle as PopupStyle; - if (null != ppStyle) + + if (viewStyle is PopupStyle ppStyle) { + if (ppStyle.Buttons?.SizeHeight != null) + { + ButtonHeight = (int)ppStyle.Buttons.SizeHeight; + } + + buttonStyle = (ButtonStyle)ppStyle.Buttons?.Clone(); + if (buttonStyle.PositionUsesPivotPoint == null) buttonStyle.PositionUsesPivotPoint = true; + if (buttonStyle.ParentOrigin == null) buttonStyle.ParentOrigin = Tizen.NUI.ParentOrigin.BottomLeft; + if (buttonStyle.PivotPoint == null) buttonStyle.PivotPoint = Tizen.NUI.PivotPoint.BottomLeft; + + if (btGroup != null) + { + for (int i = 0; i < btGroup.Count; i++) + { + var button = GetButton(i); + button.ApplyStyle(buttonStyle); + } + } + Title.ApplyStyle(ppStyle.Title); Title.RaiseToTop(); } @@ -747,26 +767,23 @@ namespace Tizen.NUI.Components return new PopupStyle(); } - /// - /// Theme change callback when theme is changed, this callback will be trigger. - /// - /// The sender - /// The event data + /// [EditorBrowsable(EditorBrowsableState.Never)] - protected override void OnThemeChangedEvent(object sender, StyleManager.ThemeChangeEventArgs e) + protected override void OnUpdate() { - PopupStyle popupStyle = StyleManager.Instance.GetViewStyle(StyleName) as PopupStyle; - if (popupStyle != null) - { - string strSaveTitleText = TitleText; - Style.CopyFrom(popupStyle); - Style.Title.Text = strSaveTitleText; - UpdateView(); - } + base.OnUpdate(); + UpdateView(); } - private void Initialize() + /// + /// Initialize AT-SPI object. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public override void OnInitialize() { + base.OnInitialize(); + AccessibilityRole = Role.Dialog; + container.Add(this); container.SetTouchConsumed(true); container.SetHoverConsumed(true); @@ -788,9 +805,22 @@ namespace Tizen.NUI.Components btGroup = new ButtonGroup(this); } + /// + /// Informs AT-SPI bridge about the set of AT-SPI states associated with this object. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + protected override AccessibilityStates AccessibilityCalculateStates() + { + var states = base.AccessibilityCalculateStates(); + + states[AccessibilityState.Modal] = true; + + return states; + } + private void UpdateView() { - btGroup.UpdateButton(Style.Buttons); + btGroup.UpdateButton(buttonStyle); UpdateContentView(); UpdateTitle(); } @@ -814,9 +844,9 @@ namespace Tizen.NUI.Components private void PopupStylePropertyChanged(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName.Equals("LayoutDirection")) + if (e.PropertyName is var propName && propName != null && propName.Equals("LayoutDirection")) { - btGroup.UpdateButton(Style.Buttons); + btGroup.UpdateButton(buttonStyle); } } @@ -826,21 +856,21 @@ namespace Tizen.NUI.Components int titleY = 0; int titleH = 0; int buttonH = 0; - string strText = Style.Title.Text.All; - if (!string.IsNullOrEmpty(strText) && Style.Title.Size != null) + string strText = Title.Text; + if (!string.IsNullOrEmpty(strText) && Title.Size != null) { titleH = (int)titleText.Size.Height; } - if (!string.IsNullOrEmpty(strText) && Style.Title.Position != null) + if (!string.IsNullOrEmpty(strText) && Title.Position != null) { - titleX = (int)Style.Title.Position.X; - titleY = (int)Style.Title.Position.Y; + titleX = (int)Title.Position.X; + titleY = (int)Title.Position.Y; } - if (btGroup.Count != 0 && Style?.Buttons?.Size != null ) + if (btGroup.Count != 0) { - buttonH = (int)Style.Buttons.Size.Height; + buttonH = ButtonHeight; } ContentView.Size = new Size(Size.Width - titleX * 2, Size.Height - titleY - titleH - buttonH); ContentView.Position = new Position(titleX, titleY + titleH); @@ -849,7 +879,7 @@ namespace Tizen.NUI.Components private void UpdateTitle() { - if (titleText != null && string.IsNullOrEmpty(Style.Title.Text.All) && Style.Title.Size != null) + if (titleText != null && string.IsNullOrEmpty(Title.Text) && Title.Size != null) { titleText.RaiseToTop(); } @@ -859,10 +889,13 @@ namespace Tizen.NUI.Components /// /// 6 [Obsolete("Deprecated in API8; Will be removed in API10")] + [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")] public class ButtonClickEventArgs : EventArgs { /// Button index which is clicked in Popup /// 6 + /// It will be removed in API10 + [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:Do not declare visible instance fields")] [Obsolete("Deprecated in API8; Will be removed in API10")] public int ButtonIndex; }