summaryrefslogtreecommitdiff
path: root/ElmSharp/ElmSharp
diff options
context:
space:
mode:
authorSungHyun Min <shyun.min@samsung.com>2017-05-25 13:28:43 +0900
committerSungHyun Min <shyun.min@samsung.com>2017-05-25 13:40:23 +0900
commiteda88f68fc6c1b3df24e2d77bd59043951525cad (patch)
tree9a4066bf1c49eee3b1e3148252e9a08c9ffe9673 /ElmSharp/ElmSharp
parente1ba94758ddca850d8d26c79b011fda6483f599a (diff)
downloadelm-sharp-eda88f68fc6c1b3df24e2d77bd59043951525cad.tar.gz
elm-sharp-eda88f68fc6c1b3df24e2d77bd59043951525cad.tar.bz2
elm-sharp-eda88f68fc6c1b3df24e2d77bd59043951525cad.zip
Add SetFormatCallback in MultiButtonEntry
Change-Id: I7129eaeb28bd84205fc96ecf6474382672419c84 Signed-off-by: SungHyun Min <shyun.min@samsung.com>
Diffstat (limited to 'ElmSharp/ElmSharp')
-rwxr-xr-xElmSharp/ElmSharp/MultiButtonEntry.cs40
1 files changed, 35 insertions, 5 deletions
diff --git a/ElmSharp/ElmSharp/MultiButtonEntry.cs b/ElmSharp/ElmSharp/MultiButtonEntry.cs
index 475f01f..21d9a54 100755
--- a/ElmSharp/ElmSharp/MultiButtonEntry.cs
+++ b/ElmSharp/ElmSharp/MultiButtonEntry.cs
@@ -30,9 +30,11 @@ namespace ElmSharp
{
HashSet<MultiButtonEntryItem> _children = new HashSet<MultiButtonEntryItem>();
List<Func<string, bool>> _filters = new List<Func<string, bool>>();
+ Func<int, string> _formatFunc = null;
Entry _entry = null;
- Interop.Elementary.MultiButtonEntryItemFilterCallback _filtercallback;
+ Interop.Elementary.MultiButtonEntryItemFilterCallback _filterCallback;
+ Interop.Elementary.MultiButtonEntryFormatCallback _formatCallback;
SmartEvent _clicked;
SmartEvent _expanded;
@@ -59,7 +61,8 @@ namespace ElmSharp
_itemLongPressed = new SmartEvent<MultiButtonEntryItemEventArgs>(this, "item,longpressed", MultiButtonEntryItemEventArgs.CreateFromSmartEvent);
_itemAdded = new SmartEvent<MultiButtonEntryItemEventArgs>(this, "item,added", MultiButtonEntryItemEventArgs.CreateAndAddFromSmartEvent);
- _filtercallback = new Interop.Elementary.MultiButtonEntryItemFilterCallback(FilterCallbackHandler);
+ _filterCallback = new Interop.Elementary.MultiButtonEntryItemFilterCallback(FilterCallbackHandler);
+ _formatCallback = new Interop.Elementary.MultiButtonEntryFormatCallback(FormatCallbackHandler);
_clicked.On += (sender, e) => Clicked?.Invoke(this, EventArgs.Empty);
_expanded.On += (sender, e) => Expanded?.Invoke(this, EventArgs.Empty);
@@ -263,6 +266,10 @@ namespace ElmSharp
public void Clear()
{
Interop.Elementary.elm_multibuttonentry_clear(RealHandle);
+ foreach (var item in _children)
+ {
+ item.Deleted -= Item_Deleted;
+ }
_children.Clear();
}
@@ -275,7 +282,7 @@ namespace ElmSharp
_filters.Add(func);
if (_filters.Count == 1)
{
- Interop.Elementary.elm_multibuttonentry_item_filter_append(RealHandle, _filtercallback, IntPtr.Zero);
+ Interop.Elementary.elm_multibuttonentry_item_filter_append(RealHandle, _filterCallback, IntPtr.Zero);
}
}
@@ -288,7 +295,7 @@ namespace ElmSharp
_filters.Insert(0, func);
if (_filters.Count == 1)
{
- Interop.Elementary.elm_multibuttonentry_item_filter_prepend(RealHandle, _filtercallback, IntPtr.Zero);
+ Interop.Elementary.elm_multibuttonentry_item_filter_prepend(RealHandle, _filterCallback, IntPtr.Zero);
}
}
@@ -301,10 +308,33 @@ namespace ElmSharp
_filters.Remove(func);
if (_filters.Count == 0)
{
- Interop.Elementary.elm_multibuttonentry_item_filter_remove(RealHandle, _filtercallback, IntPtr.Zero);
+ Interop.Elementary.elm_multibuttonentry_item_filter_remove(RealHandle, _filterCallback, IntPtr.Zero);
+ }
+ }
+
+ /// <summary>
+ /// Set a function to format the string that will be used to display the hidden items counter.
+ /// If func is NULL, the default format will be used, which is "+ 'the hidden items counter'".
+ /// </summary>
+ /// <param name="func">The function to return string to show</param>
+ public void SetFormatCallback(Func<int, string> func)
+ {
+ if (func == null)
+ {
+ Interop.Elementary.elm_multibuttonentry_format_function_set(RealHandle, null, IntPtr.Zero);
+ }
+ else
+ {
+ _formatFunc = func;
+ Interop.Elementary.elm_multibuttonentry_format_function_set(RealHandle, _formatCallback, IntPtr.Zero);
}
}
+ string FormatCallbackHandler(int count, IntPtr data)
+ {
+ return _formatFunc(count);
+ }
+
void Item_Deleted(object sender, EventArgs e)
{
var removed = sender as MultiButtonEntryItem;