private ImageView overlayImage;
private TextLabel buttonText;
- private ImageControl buttonIcon;
+ private ImageView buttonIcon;
private EventHandler<StateChangedEventArgs> stateChangeHander;
if (null == buttonIcon)
{
- buttonIcon = new ImageControl();
+ buttonIcon = new ImageView();
this.Add(buttonIcon);
}
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty ItemShadowUrlProperty = BindableProperty.Create(nameof(ItemShadowUrl), typeof(string), typeof(ButtonGroup), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty ItemImageShadowProperty = BindableProperty.Create(nameof(ItemImageShadow), typeof(ImageShadow), typeof(ButtonGroup), null, propertyChanged: (bindable, oldValue, newValue) =>
{
ButtonGroup btGroup = (ButtonGroup)bindable;
- if (btGroup.itemGroup != null && newValue != null)
- {
- foreach (Button btn in btGroup.itemGroup)
- {
- if (btn.Style.Shadow.ResourceUrl == null)
- {
- btn.Style.Shadow.ResourceUrl = new Selector<string>();
- }
- btn.Style.Shadow.ResourceUrl = (string)newValue;
- }
- btGroup.itemShadowUrl = (string)newValue;
- }
- },
- defaultValueCreator: (bindable) =>
- {
- ButtonGroup btGroup = (ButtonGroup)bindable;
- return btGroup.itemShadowUrl;
- });
-
- /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty ItemShadowBorderProperty = BindableProperty.Create(nameof(ItemShadowBorder), typeof(Rectangle), typeof(ButtonGroup), new Rectangle(), propertyChanged: (bindable, oldValue, newValue) =>
- {
- ButtonGroup btGroup = (ButtonGroup)bindable;
- if (btGroup.itemGroup != null && newValue != null)
+ if (btGroup.itemGroup != null)
{
+ var shadow = (ImageShadow)newValue;
foreach (Button btn in btGroup.itemGroup)
{
- btn.Style.Shadow.Border = (Rectangle)newValue;
+ btn.Style.ImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
}
- btGroup.itemShadowBorder = (Rectangle)newValue;
+ btGroup.itemImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
}
},
defaultValueCreator: (bindable) =>
{
ButtonGroup btGroup = (ButtonGroup)bindable;
- return btGroup.itemShadowBorder;
+ return btGroup.itemImageShadow;
});
static ButtonGroup() { }
/// Get or set shadow resource of item.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public string ItemShadowUrl
+ public ImageShadow ItemImageShadow
{
- get
- {
- return (string)GetValue(ItemShadowUrlProperty);
- }
- set
- {
- SetValue(ItemShadowUrlProperty, value);
- }
- }
-
- /// <summary>
- /// Get or set shadow border of item.
- /// </summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Rectangle ItemShadowBorder
- {
- get
- {
- return (Rectangle)GetValue(ItemShadowBorderProperty);
- }
- set
- {
- SetValue(ItemShadowBorderProperty, value);
- }
+ get => (ImageShadow)GetValue(ItemImageShadowProperty);
+ set => SetValue(ItemImageShadowProperty, value);
}
/// <summary>
private Selector<Color> overLayBackgroundColorSelector = new Selector<Color>();
private string itemBackgroundImageUrl;
private Rectangle itemBackgroundBorder = new Rectangle();
- private string itemShadowUrl;
- private Rectangle itemShadowBorder = new Rectangle();
+ private ImageShadow itemImageShadow;
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public class Control : VisualView
{
- /// <summary> BackgroundImageProperty</summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create("ControlBackgroundImage", typeof(Selector<string>), typeof(Control), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var control = (Control)bindable;
- if (null != newValue)
- {
- control.BackgroundImageSelector.Clone((Selector<string>)newValue);
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var control = (Control)bindable;
- return control.BackgroundImageSelector;
- });
- /// <summary>BackgroundBorderProperty</summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new static readonly BindableProperty BackgroundImageBorderProperty = BindableProperty.Create("ControlBackgroundImageBorder", typeof(Selector<Rectangle>), typeof(Control), default(Rectangle), propertyChanged: (bindable, oldValue, newValue) =>
- {
- var control = (Control)bindable;
- if (null != newValue)
- {
- control.backgroundImageBorderSelector.Clone((Selector<Rectangle>)newValue);
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var control = (Control)bindable;
- return control.backgroundImageBorderSelector;
- });
- /// <summary> BackgroundColorProperty </summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create("ControlBackgroundColor", typeof(Selector<Color>), typeof(Control), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var control = (Control)bindable;
- if (null != newValue)
- {
- control.BackgroundColorSelector.Clone((Selector<Color>)newValue);
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var control = (Control)bindable;
- return control.BackgroundColorSelector;
- });
/// <summary> Control style. </summary>
/// <since_tizen> 6 </since_tizen>
/// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
private TapGestureDetector tapGestureDetector = new TapGestureDetector();
private bool isFocused = false;
- internal ImageView backgroundImage = new ImageView();
- internal ImageView shadowImage;
-
/// 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 ControlStyle Style => ViewStyle as ControlStyle;
Initialize(style);
}
- private TriggerableSelector<string> _backgroundImageSelector;
- private TriggerableSelector<string> BackgroundImageSelector
- {
- get
- {
- if (null == _backgroundImageSelector)
- {
- _backgroundImageSelector = new TriggerableSelector<string>(backgroundImage, ImageView.ResourceUrlProperty);
- }
- return _backgroundImageSelector;
- }
- }
- private TriggerableSelector<Rectangle> _backgroundImageBorderSelector;
- private TriggerableSelector<Rectangle> backgroundImageBorderSelector
- {
- get
- {
- if (null == _backgroundImageBorderSelector)
- {
- _backgroundImageBorderSelector = new TriggerableSelector<Rectangle>(backgroundImage, ImageView.BorderProperty);
- }
- return _backgroundImageBorderSelector;
- }
- }
- private TriggerableSelector<Color> _backgroundColorSelector;
- private TriggerableSelector<Color> BackgroundColorSelector
- {
- get
- {
- if (null == _backgroundColorSelector)
- {
- _backgroundColorSelector = new TriggerableSelector<Color>(backgroundImage, View.BackgroundColorProperty);
- }
- return _backgroundColorSelector;
- }
- }
- /// <summary>
- /// Override view's BackgroundImage.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new Selector<string> BackgroundImage
- {
- get => (Selector<string>)GetValue(BackgroundImageProperty);
- set => SetValue(BackgroundImageProperty, value);
- }
-
- /// <summary>
- /// Override view's BackgroundImageBorder.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new Selector<Rectangle> BackgroundImageBorder
- {
- get => (Selector<Rectangle>)GetValue(BackgroundImageBorderProperty);
- set => SetValue(BackgroundImageBorderProperty, value);
- }
- /// <summary>
- /// Override view's BackgroundBorder.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public new Selector<Color> BackgroundColor
- {
- get => (Selector<Color>)GetValue(BackgroundColorProperty);
- set => SetValue(BackgroundColorProperty, value);
- }
-
- /// <summary>
- /// Shadow image.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<string> ShadowImage
- {
- get
- {
- return Style.Shadow.ResourceUrl;
- }
- set
- {
- Style.Shadow.ResourceUrl = value;
- }
- }
-
- /// <summary>
- /// Shadow image border.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<Rectangle> ShadowImageBorder
- {
- get
- {
- return Style.Shadow.Border;
- }
- set
- {
- Style.Shadow.Border = value;
- }
- }
-
internal void ApplyAttributes(View view, ViewStyle viewStyle)
{
view.CopyFrom(viewStyle);
tapGestureDetector.Detach(this);
}
- if (backgroundImage != null)
- {
- Utility.Dispose(backgroundImage);
- }
- if (shadowImage != null)
- {
- Utility.Dispose(shadowImage);
- }
-
base.Dispose(type);
}
isFocused = false;
}
- /// 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 override void ApplyStyle(ViewStyle viewStyle)
- {
- base.ApplyStyle(viewStyle);
-
- ControlStyle controlStyle = viewStyle as ControlStyle;
-
- if (null != controlStyle?.Shadow)
- {
- if (null == shadowImage)
- {
- shadowImage = new ImageView()
- {
- WidthResizePolicy = ResizePolicyType.FillToParent,
- HeightResizePolicy = ResizePolicyType.FillToParent,
- };
- this.Add(shadowImage);
- shadowImage.LowerToBottom();
- }
-
- shadowImage.ApplyStyle(controlStyle.Shadow);
- }
- if (null != controlStyle.BackgroundImage)
- {
- backgroundImage.WidthResizePolicy = ResizePolicyType.FillToParent;
- backgroundImage.HeightResizePolicy = ResizePolicyType.FillToParent;
- this.Add(backgroundImage);
- }
- }
-
/// <summary>
/// Tap gesture callback.
/// </summary>
+++ /dev/null
-/*
- * Copyright(c) 2019 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.
- * 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.ComponentModel;
-using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Components
-{
- /// <summary>
- /// The control component is class of image. Temporarily for SelectButton.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public class ImageControl : 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 ResourceUrlProperty = BindableProperty.Create("ImageControlResourceUrl", typeof(Selector<string>), typeof(ImageControl), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var imageControl = (ImageControl)bindable;
- if (null != newValue)
- {
- imageControl.ResourceUrlSelector.Clone((Selector<string>)newValue);
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var imageControl = (ImageControl)bindable;
- return imageControl.ResourceUrlSelector;
- });
- /// 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 BorderProperty = BindableProperty.Create("ImageControlBorder", typeof(Selector<Rectangle>), typeof(ImageControl), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var imageControl = (ImageControl)bindable;
- if (null == newValue)
- {
- imageControl.BorderSelector.Clone((Selector<Rectangle>)newValue);
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var imageControl = (ImageControl)bindable;
- return imageControl.BorderSelector;
- });
-
- internal ImageView imageView;
-
- static ImageControl() { }
-
- /// <summary>
- /// Construct an empty Control.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControl() : base()
- {
- Initialize(null);
- }
-
- /// <summary>
- /// Construct with style.
- /// </summary>
- /// <param name="style">Create style customized by user</param>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControl(ImageControlStyle style) : base(style)
- {
- Initialize(null);
- }
-
- /// <summary>
- /// Construct with style
- /// </summary>
- /// <param name="style">Style to be applied</param>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControl(string style) : base(style)
- {
- Initialize(style);
- }
-
- /// 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 new ImageControlStyle Style => ViewStyle as ImageControlStyle;
-
- /// <summary>
- /// Override view's BackgroundImage.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<string> ResourceUrl
- {
- get => (Selector<string>)GetValue(ResourceUrlProperty);
- set => SetValue(ResourceUrlProperty, value);
- }
-
- /// <summary>
- /// Override view's BackgroundImageBorder.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<Rectangle> Border
- {
- get => (Selector<Rectangle>)GetValue(BorderProperty);
- set => SetValue(BorderProperty, value);
- }
-
- private TriggerableSelector<string> _resourceUrlSelector;
- private TriggerableSelector<string> ResourceUrlSelector
- {
- get
- {
- if (null == _resourceUrlSelector)
- {
- _resourceUrlSelector = new TriggerableSelector<string>(imageView, ImageView.ResourceUrlProperty);
- }
- return _resourceUrlSelector;
- }
- }
- private TriggerableSelector<Rectangle> _borderSelector;
- private TriggerableSelector<Rectangle> BorderSelector
- {
- get
- {
- if (null == _borderSelector)
- {
- _borderSelector = new TriggerableSelector<Rectangle>(imageView, ImageView.BorderProperty);
- }
- return _borderSelector;
- }
- }
-
- /// 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 override void ApplyStyle(ViewStyle viewStyle)
- {
- base.ApplyStyle(viewStyle);
-
- ImageControlStyle imageControlStyle = viewStyle as ImageControlStyle;
- if (null != imageControlStyle)
- {
- if (null == imageView)
- {
- imageView = new ImageView()
- {
- PositionUsesPivotPoint = true,
- ParentOrigin = Tizen.NUI.ParentOrigin.Center,
- PivotPoint = Tizen.NUI.PivotPoint.Center,
- WidthResizePolicy = ResizePolicyType.UseNaturalSize,
- HeightResizePolicy = ResizePolicyType.UseNaturalSize,
- };
- this.Add(imageView);
- }
- imageView.RaiseToTop();
- }
- }
-
- /// <summary>
- /// Dispose Control and all children on it.
- /// </summary>
- /// <param name="type">Dispose type.</param>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- protected override void Dispose(DisposeTypes type)
- {
- if (disposed)
- {
- return;
- }
-
- if (imageView != null)
- {
- Utility.Dispose(imageView);
- }
-
- base.Dispose(type);
- }
-
- /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- protected override ViewStyle GetViewStyle()
- {
- return new ImageControlStyle(); ;
- }
-
- private void Initialize(string style)
- {
- if (null == imageView)
- {
- imageView = new ImageView()
- {
- PositionUsesPivotPoint = true,
- ParentOrigin = Tizen.NUI.ParentOrigin.Center,
- PivotPoint = Tizen.NUI.PivotPoint.Center,
- WidthResizePolicy = ResizePolicyType.UseNaturalSize,
- HeightResizePolicy = ResizePolicyType.UseNaturalSize,
- };
- this.Add(imageView);
- }
- }
- }
-}
/// 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 ButtonShadowProperty = BindableProperty.Create(nameof(ButtonShadow), typeof(string), typeof(Popup), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty ButtonImageShadowProperty = BindableProperty.Create(nameof(ButtonImageShadow), typeof(ImageShadow), typeof(Popup), null, propertyChanged: (bindable, oldValue, newValue) =>
{
var instance = (Popup)bindable;
- if (newValue != null)
- {
- if (instance.Style.Buttons.Shadow.ResourceUrl == null)
- {
- instance.Style.Buttons.Shadow.ResourceUrl = new Selector<string>();
- }
- instance.btGroup.ItemShadowUrl = (string)newValue;
- instance.Style.Buttons.Shadow.ResourceUrl = (string)newValue;
- }
+ ImageShadow shadow = (ImageShadow)newValue;
+ instance.btGroup.ItemImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
+ instance.Style.Buttons.ImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
},
defaultValueCreator: (bindable) =>
{
var instance = (Popup)bindable;
- return instance.Style?.Buttons?.Shadow?.ResourceUrl?.All;
+ return instance.Style?.Buttons?.ImageShadow?.All;
});
- /// 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 ButtonShadowBorderProperty = BindableProperty.Create(nameof(ButtonShadowBorder), typeof(Rectangle), typeof(Popup), new Rectangle(0, 0, 0, 0), propertyChanged: (bindable, oldValue, newValue) =>
- {
- var instance = (Popup)bindable;
- if (newValue != null)
- {
- if (instance.Style.Buttons.Shadow.Border == null)
- {
- instance.Style.Buttons.Shadow.Border = new Selector<Rectangle>();
- }
- instance.btGroup.ItemShadowBorder = (Rectangle)newValue;
- instance.Style.Buttons.Shadow.Border = (Rectangle)newValue;
- }
- },
- defaultValueCreator: (bindable) =>
- {
- var instance = (Popup)bindable;
- return instance.Style?.Buttons?.Shadow?.Border?.All;
- });
private TextLabel titleText;
private ButtonGroup btGroup = null;
}
/// <summary>
- /// Shadow offset in Popup, including left, right, up and bottom offset.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Vector4 ShadowOffset
- {
- get;
- set;
- }
-
- /// <summary>
/// Button height in Popup.
/// </summary>
/// <since_tizen> 6 </since_tizen>
}
/// <summary>
- /// Button shadow's resource url in Popup.
+ /// Button's image shadow in Popup.
/// </summary>
/// <since_tizen> 6 </since_tizen>
/// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public string ButtonShadow
+ public ImageShadow ButtonImageShadow
{
- get
- {
- return (string)GetValue(ButtonShadowProperty);
- }
- set
- {
- SetValue(ButtonShadowProperty, value);
- }
+ get => (ImageShadow)GetValue(ButtonImageShadowProperty);
+ set => SetValue(ButtonImageShadowProperty, value);
}
- /// <summary>
- /// Button shadow's border in Popup.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Rectangle ButtonShadowBorder
- {
- get
- {
-
- return (Rectangle)GetValue(ButtonShadowBorderProperty);
- }
- set
- {
- SetValue(ButtonShadowBorderProperty, value);
- }
- }
/// <summary>
/// Set button text by index.
private void UpdateView()
{
- UpdateShadowExtens();
btGroup.UpdateButton(Style.Buttons);
UpdateContentView();
UpdateTitle();
ContentView.RaiseToTop();
}
- private void UpdateShadowExtens()
- {
- if (Style.ShadowExtents != null)
- {
- Style.Shadow.Size = new Size(Size.Width + Style.ShadowExtents.Start + Style.ShadowExtents.End, Size.Height + Style.ShadowExtents.Top + Style.ShadowExtents.Bottom);
- }
- }
-
private void UpdateTitle()
{
if (titleText != null && string.IsNullOrEmpty(Style.Title.Text.All) && Style.Title.Size != null)
/// <since_tizen> 6 </since_tizen>
/// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControlStyle Icon { get; set; }
+ public ImageViewStyle Icon { get; set; }
/// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
};
Text.PropertyChanged += SubStyleCalledEvent;
- Icon = new ImageControlStyle()
+ Icon = new ImageViewStyle()
{
PositionUsesPivotPoint = true,
ParentOrigin = Tizen.NUI.ParentOrigin.Center,
[EditorBrowsable(EditorBrowsableState.Never)]
public class ControlStyle : ViewStyle
{
- /// 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 BackgroundImageProperty = BindableProperty.Create("ControlBackgroundImage", typeof(Selector<string>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var controlStyle = (ControlStyle)bindable;
- if (null == controlStyle.backgroundImage) controlStyle.backgroundImage = new Selector<string>();
- controlStyle.backgroundImage.Clone(null == newValue ? new Selector<string>() : (Selector<string>)newValue);
- },
- defaultValueCreator: (bindable) =>
- {
- var controlStyle = (ControlStyle)bindable;
- return controlStyle.backgroundImage;
- });
- /// 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 BackgroundColorProperty = BindableProperty.Create("ControlBackgroundColor", typeof(Selector<Color>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var controlStyle = (ControlStyle)bindable;
- if (null == controlStyle.backgroundColor) controlStyle.backgroundColor = new Selector<Color>();
- controlStyle.backgroundColor.Clone(null == newValue ? new Selector<Color>() : (Selector<Color>)newValue);
- },
- defaultValueCreator: (bindable) =>
- {
- var controlStyle = (ControlStyle)bindable;
- return controlStyle.backgroundColor;
- });
- /// 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 BackgroundImageBorderProperty = BindableProperty.Create("ControlBackgroundImageBorder", typeof(Selector<Rectangle>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var controlStyle = (ControlStyle)bindable;
- if (null == controlStyle.backgroundImageBorder) controlStyle.backgroundImageBorder = new Selector<Rectangle>();
- controlStyle.backgroundImageBorder.Clone(null == newValue ? new Selector<Rectangle>() : (Selector<Rectangle>)newValue);
- },
- defaultValueCreator: (bindable) =>
- {
- var controlStyle = (ControlStyle)bindable;
- return controlStyle.backgroundImageBorder;
- });
-
- private Selector<string> backgroundImage;
- private Selector<Rectangle> backgroundImageBorder;
- private Selector<Color> backgroundColor;
-
static ControlStyle () { }
/// <summary>
{
if(null == style) return;
- InitSubstyle();
-
this.CopyFrom(style);
}
- /// <summary>Background image resource.</summary>
- /// 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 new Selector<string> BackgroundImage
- {
- get
- {
- Selector<string> image = (Selector<string>)GetValue(BackgroundImageProperty);
- return (null != image) ? image : backgroundImage = new Selector<string>();
- }
- set => SetValue(BackgroundImageProperty, value);
- }
-
- /// <summary>Background image border.</summary>
- /// 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 new Selector<Rectangle> BackgroundImageBorder
- {
- get
- {
- Selector<Rectangle> boder = (Selector<Rectangle>)GetValue(BackgroundImageBorderProperty);
- return (null != boder) ? boder : backgroundImageBorder = new Selector<Rectangle>();
- }
- set => SetValue(BackgroundImageBorderProperty, value);
- }
-
- /// <summary>Background image color. </summary>
- /// 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 new Selector<Color> BackgroundColor
- {
- get
- {
- Selector<Color> color = (Selector<Color>)GetValue(BackgroundColorProperty);
- return (null != color) ? color : backgroundColor = new Selector<Color>();
- }
- set => SetValue(BackgroundColorProperty, value);
- }
-
- /// <summary>
- /// Shadow image's Style.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// 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 ImageViewStyle Shadow { get; set; }
-
- /// 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 override void CopyFrom(BindableObject bindableObject)
- {
- base.CopyFrom(bindableObject);
-
- ControlStyle controlStyle = bindableObject as ControlStyle;
-
- if (null != controlStyle)
- {
- if (null != controlStyle.Shadow)
- {
- Shadow.CopyFrom(controlStyle.Shadow);
- }
- if (null != controlStyle.BackgroundImage)
- {
- if (null == BackgroundImage) BackgroundImage = new Selector<string>();
- BackgroundImage.Clone(controlStyle.BackgroundImage);
- }
- if (null != controlStyle.BackgroundImageBorder)
- {
- if (null == BackgroundImageBorder) BackgroundImageBorder = new Selector<Rectangle>();
- BackgroundImageBorder.Clone(controlStyle.BackgroundImageBorder);
- }
- if (null != controlStyle.BackgroundColor)
- {
- if (null == BackgroundColor) BackgroundColor = new Selector<Color>();
- BackgroundColor.Clone(controlStyle.BackgroundColor);
- }
- }
- }
-
private void InitSubstyle()
{
- Shadow = new ImageViewStyle()
- {
- PositionUsesPivotPoint = true,
- ParentOrigin = Tizen.NUI.ParentOrigin.Center,
- PivotPoint = Tizen.NUI.PivotPoint.Center,
- WidthResizePolicy = ResizePolicyType.FillToParent,
- HeightResizePolicy = ResizePolicyType.FillToParent
- };
- Shadow.PropertyChanged += SubStyleCalledEvent;
}
private void SubStyleCalledEvent(object sender, global::System.EventArgs e)
+++ /dev/null
-/*
- * Copyright(c) 2019 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.
- * 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.Collections.Generic;
-using System.ComponentModel;
-using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Components
-{
- /// <summary>
- /// ImageControlStyle is a class which saves Button's ux data.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public class ImageControlStyle : ControlStyle
- {
- /// 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 ResourceUrlProperty = BindableProperty.Create("ImageControlResourceUrl", typeof(Selector<string>), typeof(ImageControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var imageControlStyle = (ImageControlStyle)bindable;
- if (null == imageControlStyle.resourceUrlSelector) imageControlStyle.resourceUrlSelector = new Selector<string>();
- imageControlStyle.resourceUrlSelector.Clone(null == newValue ? new Selector<string>() : (Selector<string>)newValue);
- },
- defaultValueCreator: (bindable) =>
- {
- var imageControlStyle = (ImageControlStyle)bindable;
- return imageControlStyle.resourceUrlSelector;
- });
- /// 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 BorderProperty = BindableProperty.Create("ImageControlBorder", typeof(Selector<Rectangle>), typeof(ImageControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
- {
- var imageControlStyle = (ImageControlStyle)bindable;
- if (null == imageControlStyle.borderSelector) imageControlStyle.borderSelector = new Selector<Rectangle>();
- imageControlStyle.borderSelector.Clone((Selector<Rectangle>)newValue);
- },
- defaultValueCreator: (bindable) =>
- {
- var imageControlStyle = (ImageControlStyle)bindable;
- return imageControlStyle.borderSelector;
- });
-
- private Selector<string> resourceUrlSelector;
- private Selector<Rectangle> borderSelector;
-
- static ImageControlStyle() { }
-
- /// <summary>
- /// Creates a new instance of a ImageControlStyle.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControlStyle() : base() { }
-
- /// <summary>
- /// Creates a new instance of a ImageControlStyle with style.
- /// </summary>
- /// <param name="style">Create ImageControlStyle by style customized by user.</param>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ImageControlStyle(ImageControlStyle style) : base(style)
- {
- if(null == style) return;
-
- this.CopyFrom(style);
- }
-
- /// <summary>
- /// Image URL.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<string> ResourceUrl
- {
- get
- {
- Selector<string> url = (Selector<string>)GetValue(ResourceUrlProperty);
- return (null != url) ? url : resourceUrlSelector = new Selector<string>();
- }
- set => SetValue(ResourceUrlProperty, value);
- }
-
- /// <summary>
- /// Image border.
- /// </summary>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Selector<Rectangle> Border
- {
- get
- {
- Selector<Rectangle> border = (Selector<Rectangle>)GetValue(BorderProperty);
- return (null != border) ? border : borderSelector = new Selector<Rectangle>();
- }
- set => SetValue(BorderProperty, value);
- }
-
- /// 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 override void CopyFrom(BindableObject bindableObject)
- {
- base.CopyFrom(bindableObject);
-
- ImageControlStyle imageControlStyle = bindableObject as ImageControlStyle;
-
- if (null != imageControlStyle)
- {
- if (null != imageControlStyle.ResourceUrl)
- {
- if (null == ResourceUrl) ResourceUrl = new Selector<string>();
- ResourceUrl.Clone(imageControlStyle.ResourceUrl);
- }
- if (null != imageControlStyle.Border)
- {
- if (null == Border) Border = new Selector<Rectangle>();
- Border.Clone(imageControlStyle.Border);
- }
- }
- }
- }
-}
public TextLabelStyle Title { get; set; }
/// <summary>
- /// Shadow offset.
- /// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public Extents ShadowExtents { get; set; }
-
- /// <summary>
/// Popup button's attributes.
/// </summary>
/// <since_tizen> 6 </since_tizen>
{
Buttons.CopyFrom(popupAttributes.Buttons);
}
-
- if (popupAttributes.ShadowExtents != null)
- {
- ShadowExtents = new Extents(popupAttributes.ShadowExtents.Start, popupAttributes.ShadowExtents.End, popupAttributes.ShadowExtents.Top, popupAttributes.ShadowExtents.Bottom);
- }
}
}
private void InitSubStyle()
{
- ShadowExtents = new Extents(24, 24, 24, 24);
+ // TODO Apply proper shadow as a default for a Popup
+ BoxShadow = new Shadow()
+ {
+ Offset = new Vector2(5, 5),
+ };
+
Title = new TextLabelStyle()
{
Size = new Size(0, 0),
{
var viewStyle = (ViewStyle)bindable;
viewStyle.imageShadow = SelectorHelper<ImageShadow>.Clone(newValue);
+
+ if (viewStyle.imageShadow != null) viewStyle.boxShadow = null;
},
defaultValueCreator: (bindable) =>
{
{
var viewStyle = (ViewStyle)bindable;
viewStyle.boxShadow = SelectorHelper<Shadow>.Clone(newValue);
+
+ if (viewStyle.boxShadow != null) viewStyle.imageShadow = null;
},
defaultValueCreator: (bindable) =>
{
/// ImageShadow Property
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty ImageShadowProperty = BindableProperty.Create("ImageShadow", typeof(ImageShadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty ImageShadowProperty = BindableProperty.Create(nameof(ImageShadow), typeof(ImageShadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
view.imageShadow = SelectorHelper<ImageShadow>.Clone(newValue, view);
Tizen.NUI.Object.SetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_SHADOW_get(), ImageShadow.ToPropertyValue(view.imageShadow));
+
+ if (view.imageShadow != null) view.boxShadow = null;
},
defaultValueCreator: (bindable) =>
{
/// Shadow Property
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty BoxShadowProperty = BindableProperty.Create("BoxShadow", typeof(Shadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty BoxShadowProperty = BindableProperty.Create(nameof(BoxShadow), typeof(Shadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
view.boxShadow = SelectorHelper<Shadow>.Clone(newValue, view);
Tizen.NUI.Object.SetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_SHADOW_get(), Shadow.ToPropertyValue(view.boxShadow));
+
+ if (view.boxShadow != null) view.imageShadow = null;
},
defaultValueCreator: (bindable) =>
{
PivotPoint = new Position(x, y, z);
}
- private void OnImageShadowChanged(TransformablePropertyMap instance)
+ private void OnImageShadowChanged(ShadowBase instance)
{
ImageShadow = (ImageShadow)instance;
}
- private void OnBoxShadowChanged(TransformablePropertyMap instance)
+ private void OnBoxShadowChanged(ShadowBase instance)
{
BoxShadow = (Shadow)instance;
}
/// The Shadow composed of image for View
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public class ImageShadow : TransformablePropertyMap, Tizen.NUI.ICloneable
+ public class ImageShadow : ShadowBase, Tizen.NUI.ICloneable
{
private string url;
[EditorBrowsable(EditorBrowsableState.Never)]
public ImageShadow() : base()
{
+ propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.NPatch);
}
internal ImageShadow(ImageShadow other, PropertyChangedCallback callback = null) : base(other)
{
+ propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.NPatch);
+
Url = other.Url;
Border = other.Border;
OnPropertyChanged = callback;
}
/// <summary>
+ /// The string conversion
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static implicit operator ImageShadow(string value)
+ {
+ ImageShadow imageShadow = new ImageShadow()
+ {
+ Url = value ?? "",
+ };
+ return imageShadow;
+ }
+
+ /// <summary>
/// Deep copy method
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
};
}
+ /// <summary>
+ /// Deep copy method (static)
+ /// This provides nullity check.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static public object Clone(ImageShadow instance)
+ {
+ return instance == null ? null : new ImageShadow() {
+ Offset = instance.offset,
+ Scale = instance.scale,
+ Url = instance.url,
+ Border = instance.border
+ };
+ }
+
private void OnBorderChanged(int x, int y, int width, int height)
{
UpdateBorder();
}
}
- override internal string ToDebugString()
- {
- string result = "";
- // TODO
- return result;
- }
-
override internal bool IsValid()
{
- return url != null;
- }
-
- static internal new PropertyValue ToPropertyValue(TransformablePropertyMap instance)
- {
- if (instance == null || !instance.IsValid())
- {
- return new PropertyValue();
- }
-
- instance.propertyMap.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch));
-
- return new PropertyValue(instance.propertyMap);
+ return !string.IsNullOrEmpty(url);
}
}
}
/// The platform provided shadow drawing for View
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public class Shadow : TransformablePropertyMap, Tizen.NUI.ICloneable
+ public class Shadow : ShadowBase, Tizen.NUI.ICloneable
{
private static readonly Color noColor = new Color(0, 0, 0, 0);
[EditorBrowsable(EditorBrowsableState.Never)]
public Shadow() : base()
{
+ propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.Color);
+
Color = defaultColor;
}
internal Shadow(Shadow other, PropertyChangedCallback callback = null) : base(other)
{
+ propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.Color);
+
Color = other.Color;
BlurRadius = other.BlurRadius;
OnPropertyChanged = callback;
}
}
- override internal string ToDebugString()
- {
- string result = "";
- // TODO
- return result;
- }
-
override internal bool IsValid()
{
return color != null && color.A != 0;
}
-
- static internal new PropertyValue ToPropertyValue(TransformablePropertyMap instance)
- {
- if (instance == null || !instance.IsValid())
- {
- return new PropertyValue();
- }
-
- // TODO to be other blurable visual in the future
- instance.propertyMap.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Color));
-
- return new PropertyValue(instance.propertyMap);
- }
}
}
/*
- * Copyright(c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2020 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.
/// This class can be used to convert visual properties to map.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- abstract public class TransformablePropertyMap
+ abstract public class ShadowBase
{
- internal delegate void PropertyChangedCallback(TransformablePropertyMap instance);
+ internal delegate void PropertyChangedCallback(ShadowBase instance);
internal PropertyChangedCallback OnPropertyChanged = null;
private static readonly Vector2 noScale = new Vector2(1, 1);
- private static readonly Vector2 defaultOffset = new Vector2(0, 0);
-
- private static readonly Vector2 defaultOffsetPolicy = new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute);
+ private static readonly Vector2 absoluteTransformPolicy = new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute);
/// <summary>
- /// The offset value that tansform should have in common
+ /// The location offset value from the View
/// </summary>
protected internal Vector2 offset;
/// <summary>
- /// The size value in scale that tansform should have in common
+ /// The size value in scale
/// </summary>
protected internal Vector2 scale;
protected internal PropertyMap propertyMap;
/// <summary>
- /// The transform property map
- /// </summary>
- protected internal PropertyMap transformMap;
-
- /// <summary>
/// Constructor
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public TransformablePropertyMap() : this(defaultOffset, noScale)
+ public ShadowBase() : this(noOffset, noScale)
{
}
/// Copy Constructor
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
- public TransformablePropertyMap(TransformablePropertyMap other) : this(other.offset, other.scale)
+ public ShadowBase(ShadowBase other) : this(other.offset, other.scale)
{
}
/// <summary>
/// Constructor
/// </summary>
- protected internal TransformablePropertyMap(Vector2 offset, Vector2 scale)
+ protected internal ShadowBase(Vector2 offset, Vector2 scale)
{
propertyMap = new PropertyMap();
- transformMap = new PropertyMap();
- transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(defaultOffsetPolicy);
Offset = offset;
Scale = scale;
- propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
}
private void OnOffsetChanged(float x, float y)
{
- UpdateOffset();
- }
-
- private void OnScaleChanged(float widht, float height)
- {
- UpdateScale();
- }
-
- private void UpdateOffset()
- {
- if (!ClearTransformMapIfNeeds())
- {
- transformMap[(int)VisualTransformPropertyType.Offset] = PropertyValue.CreateWithGuard(offset);
- propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
- }
OnPropertyChanged?.Invoke(this);
}
- private void UpdateScale()
+ private void OnScaleChanged(float widht, float height)
{
- if (!ClearTransformMapIfNeeds())
- {
- transformMap[(int)VisualTransformPropertyType.Size] = PropertyValue.CreateWithGuard(scale);
- propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
- }
OnPropertyChanged?.Invoke(this);
}
/// <summary>
- /// Indicates whether the transform map is needed or not.
- /// This checks offset and scale values are valid.
- /// It can be overwritten in the derived class.
- /// </summary>
- virtual protected internal bool NeedTransformMap()
- {
- return (offset != null && !offset.Equals(noOffset)) || (scale != null && !scale.Equals(noScale));
- }
-
- /// <summary>
- /// If this map does not need to have transform property(= no offset and no size),
- /// clear existing transform map and return true.
- /// Return false when it needs to transform.
- /// </summary>
- protected internal bool ClearTransformMapIfNeeds()
- {
- if (!NeedTransformMap())
- {
- transformMap.Clear();
- transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(defaultOffsetPolicy);
- propertyMap[Visual.Property.Transform] = new PropertyValue();
- return true;
- }
- return false;
- }
-
- /// <summary>
/// The position offset value (x, y) from the top left corner.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
}
set
{
- offset = value == null? null : new Vector2(OnOffsetChanged, value);
- UpdateOffset();
+ offset = new Vector2(OnOffsetChanged, value ?? noOffset);
+ OnPropertyChanged?.Invoke(this);
}
}
}
set
{
- scale = value == null? null : new Vector2(OnScaleChanged, value);
- UpdateScale();
+ scale = new Vector2(OnScaleChanged, value ?? noScale);
+ OnPropertyChanged?.Invoke(this);
}
}
- abstract internal string ToDebugString();
+ private PropertyValue GetTransformMap()
+ {
+ var transformMap = new PropertyMap();
+
+ if (!offset.Equals(noOffset))
+ {
+ transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(absoluteTransformPolicy);
+ transformMap[(int)VisualTransformPropertyType.Offset] = PropertyValue.CreateWithGuard(offset);
+ }
+
+ if (!scale.Equals(noScale))
+ {
+ transformMap[(int)VisualTransformPropertyType.Size] = PropertyValue.CreateWithGuard(scale);
+ }
+
+ return transformMap.Count() == 0 ? new PropertyValue() : new PropertyValue(transformMap);
+ }
abstract internal bool IsValid();
- static internal PropertyValue ToPropertyValue(TransformablePropertyMap instance)
+ static internal PropertyValue ToPropertyValue(ShadowBase instance)
{
- return (instance != null && instance.IsValid()) ? new PropertyValue(instance.propertyMap) : new PropertyValue();
+ if (instance == null || !instance.IsValid())
+ {
+ return new PropertyValue();
+ }
+
+ instance.propertyMap[Visual.Property.Transform] = instance.GetTransformMap();
+
+ return new PropertyValue(instance.propertyMap);
}
}
}
return @"/opt/usr/globalapps/org.tizen.example.Tizen.NUI.Samples/res/images/VD/";
}
}
-
- public class SampleMain : NUIApplication, IExample
- {
- public void Activate()
- {
- defaultFocusIndicator = new View();
- defaultFocusIndicator.BackgroundColor = Color.Transparent;
- FocusManager.Instance.FocusIndicator = defaultFocusIndicator;
-
- Window.Instance.BackgroundColor = new Color(1.0f, 0.92f, 0.80f, 1.0f);
- Window.Instance.GetDefaultLayer().Add(container);
- FocusManager.Instance.SetCurrentFocusView(label[currentIndex]);
- }
-
- public void Deactivate()
- {
- Window.Instance.BackgroundColor = new Color(0.96f, 0.96f, 0.86f, 1.0f);
- View currentView = FocusManager.Instance.GetCurrentFocusView();
- currentIndex = Array.FindIndex(label, x => x == currentView);
-
- Window.Instance.GetDefaultLayer().Remove(container);
- }
-
- protected override void OnCreate()
- {
- base.OnCreate();
- container = new FlexContainer();
- container.Size2D = new Size2D(Window.Instance.Size.Width, Window.Instance.Size.Height);
- container.PivotPoint = PivotPoint.TopLeft;
- container.FlexWrap = FlexContainer.WrapType.Wrap;
- container.FlexDirection = (int)FlexContainer.FlexDirectionType.Column;
-
- var examples = from type in Assembly.GetEntryAssembly().GetTypes()
- where typeof(IExample).GetTypeInfo().IsAssignableFrom(type) && type.Namespace == this.GetType().Namespace
- && type != this.GetType() && type.GetTypeInfo().IsClass
- orderby type.Name ascending
- select type.Name;
-
- label = new MyTextView[examples.Count()];
- for (int i = 0; i < label.Length; i++)
- {
- label[i] = new MyTextView();
- label[i].Text = examples.ElementAt(i);
- label[i].Size = new Size(300, 40, 0);
- label[i].FlexMargin = new Vector4(20, 20, 40, 20);
- label[i].PointSize = 10;
- label[i].KeyEvent += SampleMain_KeyEvent;
- label[i].TouchEvent += SampleMain_TouchEvent;
- label[i].PivotPoint = PivotPoint.TopLeft;
- container.Add(label[i]);
- }
-
- label.First().UpFocusableView = label.Last();
- label.Last().DownFocusableView = label.First();
-
- Window.Instance.KeyEvent += Instance_Key;
-
- Activate();
- sampleStack.Push(this);
- }
-
- private bool SampleMain_TouchEvent(object source, View.TouchEventArgs e)
- {
- TextLabel textLabel = source as TextLabel;
- string sampleName = textLabel.Text;
- RunSample("Tizen.NUI.Samples", sampleName);
- return false; ;
- }
-
- public void ExitSample()
- {
- if (sampleStack.Count() == 1)
- {
- Exit();
- Environment.Exit(0);
- return;
- }
-
- IExample currentSample = sampleStack.Pop();
-
- currentSample.Deactivate();
- currentSample = null;
-
- FullGC();
-
- IExample nextSample = sampleStack.Peek();
- nextSample.Activate();
- }
-
- private void Instance_Key(object sender, Window.KeyEventArgs e)
- {
- if (e.Key.State == Key.StateType.Down && (e.Key.KeyPressedName == "BackSpace" || e.Key.KeyPressedName == "XF86Back" || e.Key.KeyPressedName == "Escape"))
- {
- ExitSample();
- }
- }
- public void RunSample(string @namespace, string sampleName)
- {
- object item = Activator.CreateInstance(global::System.Type.GetType(@namespace + "." + sampleName));
- if (item is IExample)
- {
- IExample currentSample = sampleStack.Peek();
- currentSample.Deactivate();
-
- FullGC();
-
- currentSample = item as IExample;
- sampleStack.Push(currentSample);
-
- currentSample.Activate();
- }
- }
- private void FullGC()
- {
- global::System.GC.Collect();
- global::System.GC.WaitForPendingFinalizers();
- global::System.GC.Collect();
- }
- private bool SampleMain_KeyEvent(object source, View.KeyEventArgs e)
- {
- TextLabel textLabel = source as TextLabel;
-
- if (e.Key.State == Key.StateType.Down)
- {
- if (e.Key.KeyPressedName == "Return")
- {
- string sampleName = textLabel.Text;
-
- RunSample("Tizen.NUI.Samples", sampleName);
-
- return true;
- }
- }
-
- return false;
- }
-
- MyTextView[] label;
- FlexContainer container;
- View defaultFocusIndicator;
- int currentIndex = 0;
- Stack<IExample> sampleStack = new Stack<IExample>();
- }
-
- public class MyTextView : TextLabel
- {
- Animation focusInAni;
- Animation focusOutAni;
-
- public MyTextView()
- {
- this.Focusable = true;
- this.FocusGained += MyTextView_FocusGained;
- this.FocusLost += MyTextView_FocusLost;
-
- focusInAni = new Animation(400);
- focusOutAni = new Animation(400);
-
- focusInAni.AnimateTo(this, "Scale", new Vector3(1.2f, 1.2f, 1.0f));
- focusOutAni.AnimateTo(this, "Scale", new Vector3(1.0f, 1.0f, 1.0f));
- }
-
- private void MyTextView_FocusLost(object sender, EventArgs e)
- {
- focusOutAni.Play();
- this.BackgroundColor = Color.Transparent;
- this.TextColor = Color.Black;
- }
-
- private void MyTextView_FocusGained(object sender, EventArgs e)
- {
- focusInAni.Play();
- this.BackgroundColor = new Color(0.69f, 0.77f, 0.87f, 1.0f);
- this.TextColor = Color.Red;
- }
- }
}
},
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
},
Overlay = new ImageViewStyle
utilityBasicButton.IsSelectable = true;
utilityBasicButton.Style.BackgroundImage = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png";
utilityBasicButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
- utilityBasicButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
- utilityBasicButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+ utilityBasicButton.Style.ImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
+ };
utilityBasicButton.Style.Overlay.ResourceUrl = new Selector<string>
{
Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
utilityServiceButton = new Button();
utilityServiceButton.Style.BackgroundImage = CommonResource.GetFHResourcePath() + "3. Button/rectangle_point_btn_normal.png";
utilityServiceButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
- utilityServiceButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
- utilityServiceButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+ utilityServiceButton.Style.ImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
+ };
utilityServiceButton.Style.Overlay.ResourceUrl = new Selector<string>
{
Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
};
utilityToggleButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
- utilityToggleButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
- utilityToggleButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+ utilityToggleButton.Style.ImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
+ };
utilityToggleButton.Style.Overlay.ResourceUrl = new Selector<string>
{
Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
Selected = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_select.png",
};
utilityOvalButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
- utilityOvalButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png";
- utilityOvalButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+ utilityOvalButton.Style.ImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
+ };
utilityOvalButton.Style.Overlay.ResourceUrl = new Selector<string>
{
Pressed = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_press_overlay.png",
IsSelectable = true,
BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png" },
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
},
Overlay = new ImageViewStyle
BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/[Button] App Primary Color/rectangle_point_btn_normal_24c447.png" },
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
},
Overlay = new ImageViewStyle
},
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
},
Overlay = new ImageViewStyle
},
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
},
Overlay = new ImageViewStyle
Disabled = "",
DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check.png",
};
- utilityCheckBox[i].Style.Icon.Shadow.ResourceUrl = new Selector<string>
+ utilityCheckBox[i].Style.Icon.ImageShadow = new Selector<ImageShadow>
{
Normal = "",
Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
ButtonStyle utilityAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>
Disabled = "",
DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check.png",
},
- Shadow = new ImageViewStyle
+ ImageShadow = new Selector<ImageShadow>
{
- ResourceUrl = new Selector<string>
- {
- Normal = "",
- Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
- Disabled = "",
- DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
- },
+ Normal = "",
+ Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
+ Disabled = "",
+ DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
},
}
};
ButtonStyle familyAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>
};
ButtonStyle foodAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Position = new Position(0, 0),
};
ButtonStyle kitchenAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Position = new Position(0, 0),
CreateDaliDemo();
Window.Instance.KeyEvent += Instance_KeyEvent;
+ Window.Instance.BackgroundColor = Color.White;
}
private void Instance_KeyEvent(object sender, Window.KeyEventArgs e)
TextColor = new Selector<Color> { All = new Color(0, 0, 0, 1) },
FontFamily = "SamsungOneUI 500",
},
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "6. List/list_ic_dropdown.png" },
popup.Style.Title.Position = new Position(64, 52);
popup.Style.Title.Text = "Popup Title";
- // Shadow and background
- popup.Style.ShadowExtents = new Extents(24, 24, 24, 24);
- popup.ShadowImage = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png";
- popup.ShadowImageBorder = new Rectangle(0, 0, 105, 105);
+ // Shadow
+ popup.Style.ImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png",
+ Border = new Rectangle(24, 24, 24, 24),
+ Offset = new Vector2(-24, -24),
+ // TODO We do not have shadow extents now, so replace it to scale value
+ Scale = new Vector2(1080f/1032f, 448f/400f),
+ };
+
+ // Background
popup.BackgroundImage = CommonResource.GetFHResourcePath() + "11. Popup/popup_background.png";
popup.BackgroundImageBorder = new Rectangle(0, 0, 81, 81);
Pressed = new Color(0.0f, 0.0f, 0.0f, 0.1f),
Selected = new Color(1.0f, 1.0f, 1.0f, 1.0f),
};
- popup.ButtonShadow = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
- popup.ButtonShadowBorder = new Rectangle(5, 5, 5, 5);
+ popup.ButtonImageShadow = new ImageShadow
+ {
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5)
+ };
popup.ButtonTextColor = color[0];
popup.ButtonHeight = 132;
popup.PopupButtonClickEvent += PopupButtonClickedEvent;
PopupStyle attrs = new PopupStyle
{
MinimumSize = new Size2D(1032, 184),
- ShadowExtents = new Extents(24, 24, 24, 24),
BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "11. Popup/popup_background.png" },
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(0, 0, 81, 81) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(0, 0, 105, 105) }
+ Url = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png",
+ Border = new Rectangle(24, 24, 24, 24),
+ Offset = new Vector2(-24, -24),
+ // TODO We do not have shadow extents now, so replace it to scale value
+ Scale = new Vector2(1080f/1032f, 448f/400f),
},
Title = new TextLabelStyle
{
PivotPoint = Tizen.NUI.PivotPoint.BottomLeft,
BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png" },
BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
- Shadow = new ImageViewStyle
+ ImageShadow = new ImageShadow
{
- ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
- Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+ Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+ Border = new Rectangle(5, 5, 5, 5),
},
Overlay = new ImageViewStyle
{
ButtonStyle utilityAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>
};
ButtonStyle familyAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>
};
ButtonStyle foodAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>
};
ButtonStyle kitchenAttrs = new ButtonStyle
{
- Icon = new ImageControlStyle
+ Icon = new ImageViewStyle
{
Size = new Size(48, 48),
Opacity = new Selector<float?>