/* * 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 System.Collections.Generic; namespace ElmSharp { /// /// A flip selector is a widget to show a set of text items,one at a time.with the same sheet switching style as the clock widget, when one changes the current displaying sheet. /// public class FlipSelector : Layout { SmartEvent _selected; SmartEvent _overflowed; SmartEvent _underflowed; /// /// Creates and initializes a new instance of the FlipSelector. /// /// Parent EvasObject public FlipSelector(EvasObject parent) : base(parent) { _selected = new SmartEvent(this, Handle, "selected"); _overflowed = new SmartEvent(this, Handle, "overflowed"); _underflowed = new SmartEvent(this, Handle, "underflowed"); _selected.On += SelectedChanged; _overflowed.On += OverflowedChanged; _underflowed.On += UnderflowedChanged; } /// /// Selected will be triggered when be Selected /// public event EventHandler Selected; /// /// Overflowed will be triggered when Overflowed /// public event EventHandler Overflowed; /// /// Underflowed will be triggered when be Underflowed /// public event EventHandler Underflowed; /// /// Sets or gets the interval on time updates for an user mouse button hold on a flip selector widget. /// public double Interval { get { return Interop.Elementary.elm_flipselector_first_interval_get(Handle); } set { Interop.Elementary.elm_flipselector_first_interval_set(Handle, value); } } /// /// Gets the currently selected item in a flip selector widget. /// public FlipSelectorItem SelectedItem { get { IntPtr handle = Interop.Elementary.elm_flipselector_selected_item_get(Handle); return ItemObject.GetItemByHandle(handle) as FlipSelectorItem; } } /// /// Gets the first item in the given flip selector widget's list of items. /// public FlipSelectorItem FirstItem { get { IntPtr handle = Interop.Elementary.elm_flipselector_first_item_get(Handle); return ItemObject.GetItemByHandle(handle) as FlipSelectorItem; } } /// /// Gets the last item in the given flip selector widget's list of items. /// public FlipSelectorItem LastItem { get { IntPtr handle = Interop.Elementary.elm_flipselector_last_item_get(Handle); return ItemObject.GetItemByHandle(handle) as FlipSelectorItem; } } /// /// Appends a (text) item to a flip selector widget. /// /// text value /// /// A handle to the item added or NULL, on errors /// /// /// The widget's list of labels to show will be appended with the given value. If the user wishes so, a callback function pointer can be passed, which will get called when this same item is selected. /// public FlipSelectorItem Append(string text) { FlipSelectorItem item = new FlipSelectorItem(text); item.Handle = Interop.Elementary.elm_flipselector_item_append(Handle, text, null, (IntPtr)item.Id); return item; } /// /// Prepend a (text) item to a flip selector widget. /// /// Prepend text /// A handle to the item added or NULL, on errors /// /// The widget's list of labels to show will be prepended with the given value. If the user wishes so, a callback function pointer can be passed, which will get called when this same item is selected. /// public FlipSelectorItem Prepend(string text) { FlipSelectorItem item = new FlipSelectorItem(text); item.Handle = Interop.Elementary.elm_flipselector_item_prepend(Handle, text, null, (IntPtr)item.Id); return item; } /// /// To remove the given item. /// /// FlipSelector's item public void Remove(FlipSelectorItem item) { if (item as FlipSelectorItem != null) item.Delete(); } /// /// Programmatically select the next item of a flip selector widget. /// /// /// The selection will be animated. Also, if it reaches the beginning of its list of member items, it will continue with the last one backwards. /// public void Next() { Interop.Elementary.elm_flipselector_flip_next(Handle); } /// /// Programmatically select the previous item of a flip selector widget. /// public void Prev() { Interop.Elementary.elm_flipselector_flip_prev(Handle); } protected override IntPtr CreateHandle(EvasObject parent) { return Interop.Elementary.elm_flipselector_add(parent.Handle); } void SelectedChanged(object sender, EventArgs e) { SelectedItem?.SendSelected(); Selected?.Invoke(this, EventArgs.Empty); } void OverflowedChanged(object sender, EventArgs e) { Overflowed?.Invoke(this, e); } void UnderflowedChanged(object sender, EventArgs e) { Underflowed?.Invoke(this, e); } } }