1 /* Copyright (c) 2020 Samsung Electronics Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
17 using Tizen.NUI.BaseComponents;
18 using Tizen.NUI.Components;
19 using System.ComponentModel;
21 namespace Tizen.NUI.Wearable
24 /// [Draft] This class provides a list view styled by wearable ux.
25 /// List will lay out all items with Fish-Eye layout manager.
27 [Obsolete("This has been deprecated in API12")]
28 [EditorBrowsable(EditorBrowsableState.Never)]
29 public class WearableList : RecyclerView
31 private RecycleItem FocusedItem = null;
34 /// Default constructor.
36 /// <since_tizen> 8 </since_tizen>
37 [Obsolete("This has been deprecated in API12")]
38 [EditorBrowsable(EditorBrowsableState.Never)]
39 public WearableList() : base(new RecycleAdapter(), new FishEyeLayoutManager())
41 ScrollingDirection = ScrollableBase.Direction.Vertical;
43 ScrollDragStarted += OnScrollDragStarted;
44 ScrollAnimationEnded += OnAnimationEnded;
46 ContentContainer.PositionUsesPivotPoint = true;
47 ContentContainer.ParentOrigin = Tizen.NUI.ParentOrigin.Center;
48 ContentContainer.PivotPoint = Tizen.NUI.PivotPoint.TopCenter;
49 NoticeAnimationEndBeforePosition = 50;
51 ScrollAvailableArea = new Vector2(0, ContentContainer.SizeHeight);
55 Scrollbar = new CircularScrollbar();
56 DecelerationThreshold = 60.0f;
57 DecelerationRate = 0.991f;
61 [Obsolete("This has been deprecated in API12")]
62 [EditorBrowsable(EditorBrowsableState.Never)]
63 protected override void SetScrollbar()
65 if(LayoutManager != null)
67 Scrollbar.Initialize(ContentContainer.Size.Height, LayoutManager.StepSize, ContentContainer.CurrentPosition.Y, false);
72 [Obsolete("This has been deprecated in API12")]
73 [EditorBrowsable(EditorBrowsableState.Never)]
74 public new RecycleAdapter Adapter
85 foreach (View child in Children)
87 child.PositionUsesPivotPoint = true;
88 child.ParentOrigin = Tizen.NUI.ParentOrigin.TopCenter;
91 ScrollAvailableArea = new Vector2( 0, ContentContainer.SizeHeight );
96 /// Set focus to item which has specific data index.
98 /// <param name="dataIndex">Data index of item.</param>
99 /// <param name="animated">If set true, scroll to item using animation.</param>
100 /// <since_tizen> 8 </since_tizen>
101 [Obsolete("This has been deprecated in API12")]
102 public void SetFocus(int dataIndex, bool animated)
104 if (LayoutManager == null)
109 foreach (RecycleItem item in Children)
111 if (item.DataIndex == dataIndex)
113 RecycleItem prevFocusedItem = FocusedItem;
114 prevFocusedItem?.OnFocusLost();
116 FocusedItem.OnFocusGained();
118 ScrollTo(item.DataIndex * LayoutManager.StepSize, animated);
123 private void OnAnimationEnded(object source, ScrollEventArgs args)
128 /// This helps developer who wants to know before scroll is reaching target position.
130 /// <param name="targetPosition">Index of item.</param>
131 /// <since_tizen> 8 </since_tizen>
132 [Obsolete("This has been deprecated in API12")]
133 protected override void OnPreReachedTargetPosition(float targetPosition)
135 if (LayoutManager == null)
139 int targetDataIndex = (int)Math.Round(Math.Abs(targetPosition) / LayoutManager.StepSize);
141 for (int i = 0; i < Children.Count; i++)
143 RecycleItem item = Children[i] as RecycleItem;
149 if (targetDataIndex == item.DataIndex)
152 item.OnFocusGained();
158 private void OnScrollDragStarted(object source, ScrollEventArgs args)
160 RecycleItem prevFocusedItem = FocusedItem;
161 prevFocusedItem?.OnFocusLost();