Add FieldUpdate API in GenListItem 30/113130/3
authorSeungkeun Lee <sngn.lee@samsung.com>
Mon, 6 Feb 2017 07:44:01 +0000 (16:44 +0900)
committerSeungkeun Lee <sngn.lee@samsung.com>
Wed, 8 Feb 2017 05:56:21 +0000 (14:56 +0900)
 - To update Height of Item without recreation

Change-Id: I4a6dd30d7775b9d084f2ad601f9f1fe378f2c97a

ElmSharp.Test/ElmSharp.Test.csproj
ElmSharp.Test/TC/GenListTest9.cs [new file with mode: 0644]
ElmSharp/ElmSharp/GenListItem.cs
ElmSharp/Interop/Interop.Elementary.GenListView.cs
packaging/elm-sharp.spec

index 69a6c69..f5600af 100644 (file)
@@ -44,6 +44,7 @@
     <Compile Include="TC\BackgroundTest2.cs" />
     <Compile Include="TC\BackgroundTest3.cs" />
     <Compile Include="TC\EntryTest2.cs" />
+    <Compile Include="TC\GenListTest9.cs" />
     <Compile Include="TC\ScreenInformationTest.cs" />
     <Compile Include="TC\BoxLayoutTest1.cs" />
     <Compile Include="TC\BoxTest1.cs" />
       </FlavorProperties>
     </VisualStudio>
   </ProjectExtensions>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/ElmSharp.Test/TC/GenListTest9.cs b/ElmSharp.Test/TC/GenListTest9.cs
new file mode 100644 (file)
index 0000000..39a0325
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 ElmSharp;
+using System.Collections.Generic;
+
+namespace ElmSharp.Test
+{
+    class GenListTest9 : TestCaseBase
+    {
+
+        public class ItemContext
+        {
+            public object Data;
+            public GenListItem Item;
+            public EvasObject Realized;
+        }
+
+        Dictionary<EvasObject, Button> _cacheMap = new Dictionary<EvasObject, Button>();
+
+        Dictionary<ItemObject, EvasObject> _realizedMap = new Dictionary<ItemObject, EvasObject>();
+        public override string TestName => "GenListTest9";
+        public override string TestDescription => "To test FieldUpdate operation of GenList";
+
+        public override void Run(Window window)
+        {
+            Background bg = new Background(window)
+            {
+                Color = Color.White,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                WeightX = 1,
+                WeightY = 1
+            };
+            bg.Show();
+            bg.Lower();
+
+            window.AddResizeObject(bg);
+            Conformant conformant = new Conformant(window);
+            conformant.Show();
+            Box box = new Box(window)
+            {
+                AlignmentX = -1,
+                AlignmentY = -1,
+                WeightX = 1,
+                WeightY = 1
+            };
+            GenList list = new GenList(window)
+            {
+                Homogeneous = false,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                WeightX = 1,
+                WeightY = 1
+            };
+
+            GenItemClass fullyCustomizeClass = new GenItemClass("full")
+            {
+                GetContentHandler = (obj, part) =>
+                {
+                    Console.WriteLine("{0} part create requested", part);
+                    var btn = new Button(window)
+                    {
+                        AlignmentX = -1,
+                        WeightX = 1,
+                        Text = (string)(obj as ItemContext).Data
+                    };
+                    btn.MinimumHeight = 100;
+                    (obj as ItemContext).Realized = btn;
+                    (obj as ItemContext).Item?.UpdateField("elm.swallow.content", GenListItemFieldType.None);
+                    return btn;
+                },
+            };
+
+            for (int i = 0; i < 100; i++)
+            {
+                var context = new ItemContext();
+                context.Data = string.Format("{0} Item", i);
+                context.Item = list.Append(fullyCustomizeClass, context, GenListItemType.Normal);
+            }
+
+            list.Show();
+            list.ItemSelected += List_ItemSelected; ;
+            box.Show();
+            box.PackEnd(list);
+            conformant.SetContent(box);
+        }
+
+        private void List_ItemSelected(object sender, GenListItemEventArgs e)
+        {
+            var itemContext = e.Item.Data as ItemContext;
+            Console.WriteLine("{0} Item was selected", (string)(itemContext.Data));
+            itemContext.Realized.MinimumHeight += 20;
+            e.Item.UpdateField("elm.swallow.content", GenListItemFieldType.None);
+        }
+    }
+}
index 2108292..af616e5 100644 (file)
@@ -26,6 +26,16 @@ namespace ElmSharp
         DisplayOnly
     }
 
+    [Flags]
+    public enum GenListItemFieldType
+    {
+        All = 0,
+        Text = (1 << 0),
+        Content = (1 << 1),
+        State = (1 << 2),
+        None = (1 << 3)
+    };
+
     public class GenListItem : GenItem
     {
         internal GenListItem(object data, GenItemClass itemClass)
@@ -50,6 +60,11 @@ namespace ElmSharp
             Interop.Elementary.elm_genlist_item_update(Handle);
         }
 
+        public void UpdateField(string part, GenListItemFieldType type)
+        {
+            Interop.Elementary.elm_genlist_item_fields_update(Handle, part, (uint)type);
+        }
+
         public GenListSelectionMode SelectionMode
         {
             get
index d25b624..75698da 100644 (file)
@@ -132,5 +132,8 @@ internal static partial class Interop
 
         [DllImport(Libraries.Elementary)]
         internal static extern void elm_genlist_clear(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_genlist_item_fields_update(IntPtr item, string part, uint type);
     }
 }
index 9def293..b690ec0 100644 (file)
@@ -1,4 +1,4 @@
-%define DEV_VERSION beta-009
+%define DEV_VERSION beta-010
 
 Name:       elm-sharp
 Summary:    C# Binding for Elementary