2 using System.Collections.Generic;
5 using System.Threading.Tasks;
9 public class ItemObject
11 private static Dictionary<int, ItemObject> s_IdToItemTable = new Dictionary<int, ItemObject>();
12 private static Dictionary<IntPtr, ItemObject> s_HandleToItemTable = new Dictionary<IntPtr, ItemObject>();
13 private static int s_globalId = 0;
15 Interop.Evas.SmartCallback _deleteCallback;
16 IntPtr _handle = IntPtr.Zero;
18 protected ItemObject(IntPtr handle)
20 _deleteCallback = DeleteCallbackHandler;
22 s_IdToItemTable[Id] = this;
28 if (Handle != IntPtr.Zero)
29 Interop.Elementary.elm_object_item_del(Handle);
32 public int Id { get; private set; }
34 internal IntPtr Handle
45 if (_handle != IntPtr.Zero)
47 UnsetDeleteCallback();
51 s_HandleToItemTable[Handle] = this;
55 internal event EventHandler Deleted;
59 Interop.Elementary.elm_object_item_del(Handle);
60 _handle = IntPtr.Zero;
63 public void SetPartContent(string part, EvasObject content)
65 SetPartContent(part, content, false);
68 public void SetPartContent(string part, EvasObject content, bool preserveOldContent)
70 if (preserveOldContent)
72 Interop.Elementary.elm_object_item_part_content_unset(Handle, part);
74 Interop.Elementary.elm_object_item_part_content_set(Handle, part, content);
77 public void SetPartText(string part, string text)
79 Interop.Elementary.elm_object_item_part_text_set(Handle, part, text);
82 public string GetPartText(string part)
84 return Interop.Elementary.elm_object_item_part_text_get(Handle, part);
87 public static implicit operator IntPtr(ItemObject obj)
94 protected virtual void OnInvalidate() { }
96 internal static ItemObject GetItemById(int id)
99 s_IdToItemTable.TryGetValue(id, out value);
103 internal static ItemObject GetItemByHandle(IntPtr handle)
106 s_HandleToItemTable.TryGetValue(handle, out value);
110 void DeleteCallbackHandler(IntPtr data, IntPtr obj, IntPtr info)
112 Deleted?.Invoke(this, EventArgs.Empty);
114 _handle = IntPtr.Zero;
117 void UnsetDeleteCallback()
119 Interop.Elementary.elm_object_item_del_cb_set(Handle, null);
122 void SetDeleteCallback()
124 if (Handle != IntPtr.Zero)
125 Interop.Elementary.elm_object_item_del_cb_set(Handle, _deleteCallback);
128 static int GetNextId()