[Xaml] Remove code of VisualState
authorFang Xiaohui <xiaohui.fang@samsung.com>
Wed, 25 Aug 2021 01:54:09 +0000 (09:54 +0800)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Wed, 1 Sep 2021 08:20:01 +0000 (17:20 +0900)
src/Tizen.NUI/src/internal/Xaml/VisualState/VisualState.cs [deleted file]
src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroup.cs [deleted file]
src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupList.cs [deleted file]
src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupListExtensions.cs [deleted file]
src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateManager.cs [deleted file]
src/Tizen.NUI/src/internal/Xaml/VisualState/WatchAddList.cs [deleted file]
src/Tizen.NUI/src/public/XamlBinding/BindablePropertyConverter.cs
src/Tizen.NUI/src/public/XamlBinding/Setter.cs

diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualState.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualState.cs
deleted file mode 100755 (executable)
index de3ccd6..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    [RuntimeNameProperty(nameof(Name))]
-    internal sealed class VisualState
-    {
-        public VisualState()
-        {
-            Setters = new ObservableCollection<Setter>();
-        }
-
-        public string Name { get; set; }
-        public IList<Setter> Setters { get; }
-        public Type TargetType { get; set; }
-
-        internal VisualState Clone()
-        {
-            var clone = new VisualState { Name = Name, TargetType = TargetType };
-            foreach (var setter in Setters)
-            {
-                clone.Setters.Add(setter);
-            }
-
-            return clone;
-        }
-    }
-}
diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroup.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroup.cs
deleted file mode 100755 (executable)
index d55184b..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    [RuntimeNameProperty(nameof(Name))]
-    [ContentProperty(nameof(States))]
-    internal sealed class VisualStateGroup
-    {
-        public VisualStateGroup()
-        {
-            States = new WatchAddList<VisualState>(OnStatesChanged);
-        }
-
-        public Type TargetType { get; set; }
-        public string Name { get; set; }
-        public IList<VisualState> States { get; }
-        public VisualState CurrentState { get; internal set; }
-
-        internal VisualState GetState(string name)
-        {
-            foreach (VisualState state in States)
-            {
-                if (string.CompareOrdinal(state.Name, name) == 0)
-                {
-                    return state;
-                }
-            }
-
-            return null;
-        }
-
-        internal VisualStateGroup Clone()
-        {
-            var clone = new VisualStateGroup { TargetType = TargetType, Name = Name, CurrentState = CurrentState };
-            foreach (VisualState state in States)
-            {
-                clone.States.Add(state.Clone());
-            }
-
-            return clone;
-        }
-
-        internal event EventHandler StatesChanged;
-
-        void OnStatesChanged(IList<VisualState> list)
-        {
-            if (list.Any(state => string.IsNullOrEmpty(state.Name)))
-            {
-                throw new InvalidOperationException("State names may not be null or empty");
-            }
-
-            StatesChanged?.Invoke(this, EventArgs.Empty);
-        }
-    }
-}
diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupList.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupList.cs
deleted file mode 100755 (executable)
index 1faa931..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    internal class VisualStateGroupList : IList<VisualStateGroup>
-    {
-        readonly IList<VisualStateGroup> _internalList;
-
-        void Validate(IList<VisualStateGroup> groups)
-        {
-            // If we have 1 group, no need to worry about duplicate group names
-            if (groups.Count > 1)
-            {
-                if (groups.GroupBy(vsg => vsg.Name).Any(g => g.Count() > 1))
-                {
-                    throw new InvalidOperationException("VisualStateGroup Names must be unique");
-                }
-            }
-
-            // State names must be unique within this group list, so pull in all 
-            // the states in all the groups, group them by name, and see if we have
-            // and duplicates
-            if (groups.SelectMany(group => group.States).GroupBy(state => state.Name).Any(g => g.Count() > 1))
-            {
-                throw new InvalidOperationException("VisualState Names must be unique");
-            }
-        }
-
-        public VisualStateGroupList()
-        {
-            _internalList = new WatchAddList<VisualStateGroup>(Validate);
-        }
-
-        void ValidateOnStatesChanged(object sender, EventArgs eventArgs)
-        {
-            Validate(_internalList);
-        }
-
-        public IEnumerator<VisualStateGroup> GetEnumerator()
-        {
-            return _internalList.GetEnumerator();
-        }
-
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return ((IEnumerable)_internalList).GetEnumerator();
-        }
-
-        public void Add(VisualStateGroup item)
-        {
-            _internalList.Add(item);
-            item.StatesChanged += ValidateOnStatesChanged;
-        }
-
-        public void Clear()
-        {
-            foreach (var group in _internalList)
-            {
-                group.StatesChanged -= ValidateOnStatesChanged;
-            }
-
-            _internalList.Clear();
-        }
-
-        public bool Contains(VisualStateGroup item)
-        {
-            return _internalList.Contains(item);
-        }
-
-        public void CopyTo(VisualStateGroup[] array, int arrayIndex)
-        {
-            _internalList.CopyTo(array, arrayIndex);
-        }
-
-        public bool Remove(VisualStateGroup item)
-        {
-            item.StatesChanged -= ValidateOnStatesChanged;
-            return _internalList.Remove(item);
-        }
-
-        public int Count => _internalList.Count;
-
-        public bool IsReadOnly => false;
-
-        public int IndexOf(VisualStateGroup item)
-        {
-            return _internalList.IndexOf(item);
-        }
-
-        public void Insert(int index, VisualStateGroup item)
-        {
-            item.StatesChanged += ValidateOnStatesChanged;
-            _internalList.Insert(index, item);
-        }
-
-        public void RemoveAt(int index)
-        {
-            _internalList[index].StatesChanged -= ValidateOnStatesChanged;
-            _internalList.RemoveAt(index);
-        }
-
-        public VisualStateGroup this[int index]
-        {
-            get => _internalList[index];
-            set => _internalList[index] = value;
-        }
-    }
-}
diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupListExtensions.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateGroupListExtensions.cs
deleted file mode 100755 (executable)
index b25cb6a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    internal static class VisualStateGroupListExtensions
-    {
-        internal static IList<VisualStateGroup> Clone(this IList<VisualStateGroup> groups)
-        {
-            var actual = new VisualStateGroupList();
-            foreach (var group in groups)
-            {
-                actual.Add(group.Clone());
-            }
-
-            return actual;
-        }
-    }
-}
diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateManager.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/VisualStateManager.cs
deleted file mode 100755 (executable)
index 1f0c8d3..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    internal static class VisualStateManager
-    {
-        internal class CommonStates
-        {
-            public const string Normal = "Normal";
-            public const string Disabled = "Disabled";
-            public const string Focused = "Focused";
-        }
-
-        private static VisualStateGroupList visualStateGroups;
-        public static readonly BindableProperty VisualStateGroupsProperty =
-            BindableProperty.CreateAttached("VisualStateGroups", typeof(VisualStateGroupList), typeof(BaseHandle),
-                defaultValue: null, propertyChanged: VisualStateGroupsPropertyChanged,
-                defaultValueCreator: (BindableObject obj)=>
-                {
-                    if (null == visualStateGroups)
-                    {
-                        visualStateGroups = new VisualStateGroupList();
-                    }
-
-                    return visualStateGroups;
-                });
-
-        static void VisualStateGroupsPropertyChanged(BindableObject bindable, object oldValue, object newValue)
-        {
-            GoToState((BaseHandle)bindable, CommonStates.Normal);
-        }
-
-        public static IList<VisualStateGroup> GetVisualStateGroups(BaseHandle visualElement)
-        {
-            return (IList<VisualStateGroup>)visualElement.GetValue(VisualStateGroupsProperty);
-        }
-
-        public static void SetVisualStateGroups(BaseHandle visualElement, VisualStateGroupList value)
-        {
-            visualElement.SetValue(VisualStateGroupsProperty, value);
-        }
-
-        public static bool GoToState(BaseHandle visualElement, string name)
-        {
-            if (!visualElement.IsSet(VisualStateGroupsProperty))
-            {
-                return false;
-            }
-
-            var groups = (IList<VisualStateGroup>)visualElement.GetValue(VisualStateGroupsProperty);
-
-            foreach (VisualStateGroup group in groups)
-            {
-                if (group.CurrentState?.Name == name)
-                {
-                    // We're already in the target state; nothing else to do
-                    return true;
-                }
-
-                // See if this group contains the new state
-                var target = group.GetState(name);
-                if (target == null)
-                {
-                    continue;
-                }
-
-                // If we've got a new state to transition to, unapply the setters from the current state
-                if (group.CurrentState != null)
-                {
-                    foreach (Setter setter in group.CurrentState.Setters)
-                    {
-                        setter.UnApply(visualElement);
-                    }
-                }
-
-                // Update the current state
-                group.CurrentState = target;
-
-                // Apply the setters from the new state
-                foreach (Setter setter in target.Setters)
-                {
-                    setter.Apply(visualElement);
-                }
-
-                return true;
-            }
-
-            return false;
-        }
-
-        public static bool HasVisualStateGroups(this BaseHandle element)
-        {
-            return element.IsSet(VisualStateGroupsProperty);
-        }
-    }
-}
diff --git a/src/Tizen.NUI/src/internal/Xaml/VisualState/WatchAddList.cs b/src/Tizen.NUI/src/internal/Xaml/VisualState/WatchAddList.cs
deleted file mode 100755 (executable)
index cdff63f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.
- * 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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Tizen.NUI;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Xaml
-{
-    internal class WatchAddList<T> : IList<T>
-    {
-        readonly Action<List<T>> _onAdd;
-        readonly List<T> _internalList;
-
-        public WatchAddList(Action<List<T>> onAdd)
-        {
-            _onAdd = onAdd;
-            _internalList = new List<T>();
-        }
-
-        public IEnumerator<T> GetEnumerator()
-        {
-            return _internalList.GetEnumerator();
-        }
-
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return ((IEnumerable)_internalList).GetEnumerator();
-        }
-
-        public void Add(T item)
-        {
-            _internalList.Add(item);
-            _onAdd(_internalList);
-        }
-
-        public void Clear()
-        {
-            _internalList.Clear();
-        }
-
-        public bool Contains(T item)
-        {
-            return _internalList.Contains(item);
-        }
-
-        public void CopyTo(T[] array, int arrayIndex)
-        {
-            _internalList.CopyTo(array, arrayIndex);
-        }
-
-        public bool Remove(T item)
-        {
-            return _internalList.Remove(item);
-        }
-
-        public int Count => _internalList.Count;
-
-        public bool IsReadOnly => false;
-
-        public int IndexOf(T item)
-        {
-            return _internalList.IndexOf(item);
-        }
-
-        public void Insert(int index, T item)
-        {
-            _internalList.Insert(index, item);
-            _onAdd(_internalList);
-        }
-
-        public void RemoveAt(int index)
-        {
-            _internalList.RemoveAt(index);
-        }
-
-        public T this[int index]
-        {
-            get => _internalList[index];
-            set => _internalList[index] = value;
-        }
-    }
-}
index 8cbff47..6b76b79 100755 (executable)
@@ -63,11 +63,8 @@ namespace Tizen.NUI.Binding
                 if (parentValuesProvider.TargetObject is Setter)
                 {
                     var triggerBase = parent as TriggerBase;
-                    var visualState = parent as VisualState;
                     if (triggerBase != null)
                         type = triggerBase.TargetType;
-                    else if (visualState != null)
-                        type = FindTypeForVisualState(parentValuesProvider, lineinfo);
                 }
                 else if (parentValuesProvider.TargetObject is Trigger)
                     type = (parentValuesProvider.TargetObject as Trigger).TargetType;
@@ -124,40 +121,5 @@ namespace Tizen.NUI.Binding
                 throw new XamlParseException($"The PropertyName of {type.Name}.{name} is not {propertyName}", lineinfo);
             return bp;
         }
-
-        Type FindTypeForVisualState(IProvideParentValues parentValueProvider, IXmlLineInfo lineInfo)
-        {
-            var parents = parentValueProvider.ParentObjects.ToList();
-
-            // Skip 0; we would not be making this check if TargetObject were not a Setter
-            // Skip 1; we would not be making this check if the immediate parent were not a VisualState
-
-            // VisualStates must be in a VisualStateGroup
-            if (!(parents[2] is VisualStateGroup))
-            {
-                throw new XamlParseException($"Expected {nameof(VisualStateGroup)} but found {parents[2]}.", lineInfo);
-            }
-
-            var vsTarget = parents[3];
-
-            // Are these Visual States directly on a VisualElement?
-            if (vsTarget is BaseHandle)
-            {
-                return vsTarget.GetType();
-            }
-
-            if (!(parents[3] is VisualStateGroupList))
-            {
-                throw new XamlParseException($"Expected {nameof(VisualStateGroupList)} but found {parents[3]}.", lineInfo);
-            }
-
-            if (!(parents[4] is Setter))
-            {
-                throw new XamlParseException($"Expected {nameof(Setter)} but found {parents[4]}.", lineInfo);
-            }
-
-            throw new XamlParseException("NUI doesn't support VisualState", lineInfo);
-
-        }
     }
 }
index 4ab183c..c66a8bb 100755 (executable)
@@ -86,10 +86,7 @@ namespace Tizen.NUI.Binding
                 target.SetDynamicResource(Property, dynamicResource.Key, fromStyle);
             else
             {
-                if (Value is IList<VisualStateGroup> visualStateGroupCollection)
-                    target.SetValue(Property, visualStateGroupCollection.Clone(), fromStyle);
-                else
-                    target.SetValue(Property, Value, fromStyle);
+                target.SetValue(Property, Value, fromStyle);
             }
         }