X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FTizen.NUI%2Fsrc%2Fpublic%2FBaseComponents%2FStyle%2FSelector.cs;h=34c44a695e540bfcbc0c49dd2fd89ad84403ce4b;hb=7d2c1760de4801232d369153d56b8621d1038011;hp=7c4b431d745ca08021a9cd7a5edc5e730cb6dbf8;hpb=d0c101f074bcce710226d55ff9c81d451ce2d51e;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git
diff --git a/src/Tizen.NUI/src/public/BaseComponents/Style/Selector.cs b/src/Tizen.NUI/src/public/BaseComponents/Style/Selector.cs
index 7c4b431..34c44a6 100755
--- a/src/Tizen.NUI/src/public/BaseComponents/Style/Selector.cs
+++ b/src/Tizen.NUI/src/public/BaseComponents/Style/Selector.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.
@@ -18,7 +18,6 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using Tizen.NUI.Binding;
-using Tizen.NUI.Components;
namespace Tizen.NUI.BaseComponents
{
@@ -34,32 +33,36 @@ namespace Tizen.NUI.BaseComponents
private readonly bool cloneable = typeof(ICloneable).IsAssignableFrom(typeof(T));
///
- /// The list for adding state-value pair.
+ /// The list for adding .
///
[EditorBrowsable(EditorBrowsableState.Never)]
- List> StateValueList { get; set; } = new List>();
+ List> SelectorItems { get; set; } = new List>();
///
- /// Adds the specified state and value.
+ /// Adds the specified state and value to the .
///
/// The state.
/// The value associated with state.
[EditorBrowsable(EditorBrowsableState.Never)]
- public void Add(ControlState state, T value) => Add(new StateValuePair(state, value));
+ public void Add(ControlState state, T value)
+ {
+ SelectorItems.Add(new SelectorItem(state, value));
+ All = default;
+ }
///
- /// Adds the specified state and value.
+ /// Adds the specified state and value to the .
///
- ///
+ /// The selector item class that stores a state-value pair.
[EditorBrowsable(EditorBrowsableState.Never)]
- public void Add(StateValuePair stateValuePair)
+ public void Add(SelectorItem selectorItem)
{
// To prevent a state from having multiple values, remove existing state-value pair.
- int index = StateValueList.FindIndex(x => x.State == stateValuePair.State);
+ int index = SelectorItems.FindIndex(x => x.State == selectorItem.State);
if (index != -1)
- StateValueList.RemoveAt(index);
+ SelectorItems.RemoveAt(index);
- StateValueList.Add(stateValuePair);
+ SelectorItems.Add(selectorItem);
}
/// 6
@@ -108,7 +111,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Normal
{
- get => StateValueList.Find(x => x.State == ControlState.Normal).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Normal).Value;
set => Add(ControlState.Normal, value);
}
///
@@ -119,8 +122,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Pressed
{
-
- get => StateValueList.Find(x => x.State == ControlState.Pressed).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Pressed).Value;
set => Add(ControlState.Pressed, value);
}
///
@@ -131,7 +133,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Focused
{
- get => StateValueList.Find(x => x.State == ControlState.Focused).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Focused).Value;
set => Add(ControlState.Focused, value);
}
///
@@ -142,7 +144,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Selected
{
- get => StateValueList.Find(x => x.State == ControlState.Selected).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Selected).Value;
set => Add(ControlState.Selected, value);
}
///
@@ -153,8 +155,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Disabled
{
-
- get => StateValueList.Find(x => x.State == ControlState.Disabled).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Disabled).Value;
set => Add(ControlState.Disabled, value);
}
///
@@ -165,7 +166,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T DisabledFocused
{
- get => StateValueList.Find(x => x.State == ControlState.DisabledFocused).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.DisabledFocused).Value;
set => Add(ControlState.DisabledFocused, value);
}
///
@@ -175,7 +176,7 @@ namespace Tizen.NUI.BaseComponents
/// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
public T SelectedFocused
{
- get => StateValueList.Find(x => x.State == ControlState.SelectedFocused).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.SelectedFocused).Value;
set => Add(ControlState.SelectedFocused, value);
}
///
@@ -186,8 +187,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T DisabledSelected
{
-
- get => StateValueList.Find(x => x.State == ControlState.DisabledSelected).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.DisabledSelected).Value;
set => Add(ControlState.DisabledSelected, value);
}
@@ -199,7 +199,7 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public T Other
{
- get => StateValueList.Find(x => x.State == ControlState.Other).Value;
+ get => SelectorItems.Find(x => x.State == ControlState.Other).Value;
set => Add(ControlState.Other, value);
}
@@ -207,11 +207,12 @@ namespace Tizen.NUI.BaseComponents
/// Gets the number of elements.
///
[EditorBrowsable(EditorBrowsableState.Never)]
- public int Count => StateValueList.Count;
+ public int Count => SelectorItems.Count;
///
/// Get value by State.
///
+ /// Thrown when state is null.
/// 6
/// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
/// True if the selector has a given state value, false otherwise.
@@ -225,29 +226,36 @@ namespace Tizen.NUI.BaseComponents
return true;
}
+ if (state == null)
+ throw new ArgumentNullException(nameof(state));
+
result = default;
- int index = StateValueList.FindIndex(x => x.State == state);
+ int index = SelectorItems.FindIndex(x => x.State == state);
if (index >= 0)
{
- result = StateValueList[index].Value;
+ result = SelectorItems[index].Value;
return true;
}
+ if (null == state)
+ {
+ throw new ArgumentNullException(nameof(state));
+ }
if (state.IsCombined)
{
- index = StateValueList.FindIndex(x => state.Contains(x.State));
+ index = SelectorItems.FindIndex(x => state.Contains(x.State));
if (index >= 0)
{
- result = StateValueList[index].Value;
+ result = SelectorItems[index].Value;
return true;
}
}
- index = StateValueList.FindIndex(x => x.State == ControlState.Other);
+ index = SelectorItems.FindIndex(x => x.State == ControlState.Other);
if (index >= 0)
{
- result = StateValueList[index].Value;
+ result = SelectorItems[index].Value;
return true;
}
@@ -261,7 +269,7 @@ namespace Tizen.NUI.BaseComponents
public void Clear()
{
All = default;
- StateValueList.Clear();
+ SelectorItems.Clear();
}
///
@@ -270,7 +278,7 @@ namespace Tizen.NUI.BaseComponents
{
string result = $"[All, {All}]";
- foreach (var item in StateValueList)
+ foreach (var item in SelectorItems)
{
result += $", {item}";
}
@@ -293,28 +301,49 @@ namespace Tizen.NUI.BaseComponents
}
///
+ /// Clone with type converter.
+ ///
+ /// Thrown when converter is null.
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Selector Clone(Converter converter)
+ {
+ if (converter == null) throw new ArgumentNullException(nameof(converter));
+
+ Selector result = new Selector();
+ result.All = converter(All);
+ result.SelectorItems = SelectorItems.ConvertAll>(m => new SelectorItem(m.State, converter(m.Value)));
+
+ return result;
+ }
+
+ ///
/// Copy values from other selector.
///
+ /// Thrown when other is null.
[EditorBrowsable(EditorBrowsableState.Never)]
public void Clone(Selector other)
{
+ if (null == other)
+ {
+ throw new ArgumentNullException(nameof(other));
+ }
+
if (cloneable)
{
All = (T)((ICloneable)other.All)?.Clone();
- StateValueList = other.StateValueList.ConvertAll(m => new StateValuePair(m.State, (T)((ICloneable)m.Value)?.Clone()));
+ SelectorItems = other.SelectorItems.ConvertAll(m => new SelectorItem(m.State, (T)((ICloneable)m.Value)?.Clone()));
}
else
{
All = other.All;
- StateValueList = other.StateValueList.ConvertAll(m => m);
+ SelectorItems = other.SelectorItems.ConvertAll(m => m);
}
}
internal bool HasMultiValue()
{
- return StateValueList.Count > 1;
+ return SelectorItems.Count > 1;
}
-
}
///
@@ -349,10 +378,15 @@ namespace Tizen.NUI.BaseComponents
///
/// Return the containing selector. It can be null.
///
+ /// Thrown when view is null.
[EditorBrowsable(EditorBrowsableState.Never)]
public Selector Get(View view)
{
if (!dirty) return selector;
+ if (null == view)
+ {
+ throw new ArgumentNullException(nameof(view));
+ }
T value = default;
@@ -377,11 +411,17 @@ namespace Tizen.NUI.BaseComponents
/// The View that is affected by this TriggerableSelector.
/// The copy target.
/// Whether it updates the target view after update the selector or not.
+ /// Thrown when view is null.
[EditorBrowsable(EditorBrowsableState.Never)]
public void Update(View view, Selector otherSelector, bool updateView = false)
{
Reset(view);
+ if (null == view)
+ {
+ throw new ArgumentNullException(nameof(view));
+ }
+
if (otherSelector == null)
{
return;
@@ -427,7 +467,10 @@ namespace Tizen.NUI.BaseComponents
[EditorBrowsable(EditorBrowsableState.Never)]
public void Reset(View view)
{
- view.ControlStateChangeEventInternal -= OnViewControlState;
+ if (view != null)
+ {
+ view.ControlStateChangeEventInternal -= OnViewControlState;
+ }
selector?.Clear();
selector = null;
dirty = false;
@@ -442,4 +485,67 @@ namespace Tizen.NUI.BaseComponents
}
}
}
+
+ ///
+ /// The selector item class that stores a state-value pair.
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public class SelectorItem
+ {
+ ///
+ /// The default constructor.
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public SelectorItem() {}
+
+ ///
+ /// The constructor with the specified state and value.
+ ///
+ /// The state
+ /// The value associated with state.
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public SelectorItem(ControlState state, T value)
+ {
+ State = state;
+ Value = value;
+ }
+
+ ///
+ /// The state
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public ControlState State { get; set; }
+
+ ///
+ /// The value associated with state.
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public T Value { get; set; }
+
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override string ToString() => $"[{State}, {Value}]";
+ }
+
+ ///
+ /// Extension class for .
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static class SelectorExtensions
+ {
+ ///
+ /// Adds the specified state and value to the .
+ ///
+ /// The list for adding state-value pair.
+ /// The state.
+ /// The value associated with state.
+ /// Thrown when given list is null.
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static void Add(this IList> list, ControlState state, T value)
+ {
+ if (list == null) throw new ArgumentNullException(nameof(list));
+
+ list.Add(new SelectorItem(state, value));
+ }
+ }
}