add items_count for toolbar to bypase O(N) counting on an inlist

SVN revision: 66646
This commit is contained in:
Mike Blumenkrantz 2011-12-29 23:05:26 +00:00
parent f5a1818729
commit edd1fb8c75
2 changed files with 20 additions and 31 deletions

View File

@ -1563,7 +1563,6 @@ extern "C" {
* @param size The cache flush interval time * @param size The cache flush interval time
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_cache_flush_interval_all_set(int size); EAPI void elm_cache_flush_interval_all_set(int size);
/** /**
@ -1606,7 +1605,6 @@ extern "C" {
* @param size The cache flush enabled state * @param size The cache flush enabled state
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_cache_flush_enabled_all_set(Eina_Bool enabled); EAPI void elm_cache_flush_enabled_all_set(Eina_Bool enabled);
/** /**
@ -1639,7 +1637,6 @@ extern "C" {
* @param size The font cache size * @param size The font cache size
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_font_cache_all_set(int size); EAPI void elm_font_cache_all_set(int size);
/** /**
@ -1672,7 +1669,6 @@ extern "C" {
* @param size The image cache size * @param size The image cache size
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_image_cache_all_set(int size); EAPI void elm_image_cache_all_set(int size);
/** /**
@ -1707,7 +1703,6 @@ extern "C" {
* @param size The edje file cache size * @param size The edje file cache size
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_edje_file_cache_all_set(int size); EAPI void elm_edje_file_cache_all_set(int size);
/** /**
@ -1742,7 +1737,6 @@ extern "C" {
* @param size The edje collections cache size * @param size The edje collections cache size
* @ingroup Caches * @ingroup Caches
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_edje_collection_cache_all_set(int size); EAPI void elm_edje_collection_cache_all_set(int size);
/** /**
@ -1794,7 +1788,6 @@ extern "C" {
* @param scale The scaling factor to set * @param scale The scaling factor to set
* @ingroup Scaling * @ingroup Scaling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scale_all_set(double scale); EAPI void elm_scale_all_set(double scale);
/** /**
@ -2263,7 +2256,6 @@ extern "C" {
* *
* @see elm_engine_set() * @see elm_engine_set()
*/ */
// XXX: rename to elm_engine_get()
EAPI const char *elm_engine_current_get(void); EAPI const char *elm_engine_current_get(void);
/** /**
@ -2394,7 +2386,6 @@ extern "C" {
* *
* This applies all font overlays set to all objects in the UI. * This applies all font overlays set to all objects in the UI.
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_font_overlay_all_apply(void); EAPI void elm_font_overlay_all_apply(void);
/** /**
@ -2526,7 +2517,6 @@ extern "C" {
* @param size The finger size * @param size The finger size
* @ingroup Fingers * @ingroup Fingers
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_finger_size_all_set(Evas_Coord size); EAPI void elm_finger_size_all_set(Evas_Coord size);
/** /**
@ -2868,7 +2858,6 @@ extern "C" {
* @see elm_thumbscroll_bounce_enabled_get() * @see elm_thumbscroll_bounce_enabled_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled); EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
/** /**
@ -2901,7 +2890,6 @@ extern "C" {
* @see elm_thumbscroll_bounce_friction_get() * @see elm_thumbscroll_bounce_friction_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_bounce_friction_all_set(double friction); EAPI void elm_scroll_bounce_friction_all_set(double friction);
/** /**
@ -2934,7 +2922,6 @@ extern "C" {
* @see elm_thumbscroll_page_scroll_friction_get() * @see elm_thumbscroll_page_scroll_friction_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_page_scroll_friction_all_set(double friction); EAPI void elm_scroll_page_scroll_friction_all_set(double friction);
/** /**
@ -2967,7 +2954,6 @@ extern "C" {
* @see elm_thumbscroll_bring_in_scroll_friction_get() * @see elm_thumbscroll_bring_in_scroll_friction_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_bring_in_scroll_friction_all_set(double friction); EAPI void elm_scroll_bring_in_scroll_friction_all_set(double friction);
/** /**
@ -3001,7 +2987,6 @@ extern "C" {
* @see elm_thumbscroll_zoom_friction_get() * @see elm_thumbscroll_zoom_friction_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_zoom_friction_all_set(double friction); EAPI void elm_scroll_zoom_friction_all_set(double friction);
/** /**
@ -3038,7 +3023,6 @@ extern "C" {
* @see elm_thumbscroll_enabled_get() * @see elm_thumbscroll_enabled_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled); EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
/** /**
@ -3074,7 +3058,6 @@ extern "C" {
* @see elm_thumbscroll_threshould_get() * @see elm_thumbscroll_threshould_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold); EAPI void elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold);
/** /**
@ -3110,7 +3093,6 @@ extern "C" {
* @see elm_thumbscroll_momentum_threshould_get() * @see elm_thumbscroll_momentum_threshould_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold); EAPI void elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold);
/** /**
@ -3143,7 +3125,6 @@ extern "C" {
* @see elm_thumbscroll_friction_get() * @see elm_thumbscroll_friction_get()
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_friction_all_set(double friction); EAPI void elm_scroll_thumbscroll_friction_all_set(double friction);
/** /**
@ -3187,7 +3168,6 @@ extern "C" {
* *
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_border_friction_all_set(double friction); EAPI void elm_scroll_thumbscroll_border_friction_all_set(double friction);
/** /**
@ -3228,7 +3208,6 @@ extern "C" {
* *
* @ingroup Scrolling * @ingroup Scrolling
*/ */
// XXX: deprecate and replace with elm_config_all_flush()
EAPI void elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction); EAPI void elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction);
/** /**
@ -4343,7 +4322,6 @@ extern "C" {
* *
* @see elm_win_transparent_set() * @see elm_win_transparent_set()
*/ */
// XXX: deprecate this
EAPI Eina_Bool elm_win_transparent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_win_transparent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
@ -4356,7 +4334,6 @@ extern "C" {
* *
* @see elm_win_alpha_set() * @see elm_win_alpha_set()
*/ */
// XXX: deprecate this
EAPI void elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent) EINA_ARG_NONNULL(1); EAPI void elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent) EINA_ARG_NONNULL(1);
/** /**
@ -4850,7 +4827,6 @@ extern "C" {
* @param parent The parent object * @param parent The parent object
* @return The new object or NULL if it cannot be created * @return The new object or NULL if it cannot be created
*/ */
// XXX: deprecate this
EAPI Evas_Object *elm_win_inwin_add(Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Evas_Object *elm_win_inwin_add(Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
@ -4866,7 +4842,6 @@ extern "C" {
* *
* @param obj The inwin to activate * @param obj The inwin to activate
*/ */
// XXX: deprecate this
EAPI void elm_win_inwin_activate(Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_win_inwin_activate(Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
@ -4879,7 +4854,6 @@ extern "C" {
* @param obj The inwin object * @param obj The inwin object
* @param content The object to set as content * @param content The object to set as content
*/ */
// XXX: deprecate this
EAPI void elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); EAPI void elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/** /**
@ -4897,7 +4871,6 @@ extern "C" {
* @param obj The inwin object * @param obj The inwin object
* @return The content that is being used * @return The content that is being used
*/ */
// XXX: deprecate this
EAPI Evas_Object *elm_win_inwin_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Evas_Object *elm_win_inwin_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
@ -4908,7 +4881,6 @@ extern "C" {
* @param obj The inwin object * @param obj The inwin object
* @return The content that was being used * @return The content that was being used
*/ */
// XXX: deprecate this
EAPI Evas_Object *elm_win_inwin_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Evas_Object *elm_win_inwin_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
@ -5705,11 +5677,8 @@ extern "C" {
ELM_IMAGE_ROTATE_90 = 1, /**< rotate 90 degrees clockwise */ ELM_IMAGE_ROTATE_90 = 1, /**< rotate 90 degrees clockwise */
ELM_IMAGE_ROTATE_180 = 2, /**< rotate 180 degrees clockwise */ ELM_IMAGE_ROTATE_180 = 2, /**< rotate 180 degrees clockwise */
ELM_IMAGE_ROTATE_270 = 3, /**< rotate 90 degrees counter-clockwise (i.e. 270 degrees clockwise) */ ELM_IMAGE_ROTATE_270 = 3, /**< rotate 90 degrees counter-clockwise (i.e. 270 degrees clockwise) */
// XXX: remove
/*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_90_CW = 1, /**< rotate 90 degrees clockwise */ /*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_90_CW = 1, /**< rotate 90 degrees clockwise */
// XXX: remove
/*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_180_CW = 2, /**< rotate 180 degrees clockwise */ /*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_180_CW = 2, /**< rotate 180 degrees clockwise */
// XXX: remove
/*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_90_CCW = 3, /**< rotate 90 degrees counter-clockwise (i.e. 270 degrees clockwise) */ /*EINA_DEPRECATED*/ELM_IMAGE_ROTATE_90_CCW = 3, /**< rotate 90 degrees counter-clockwise (i.e. 270 degrees clockwise) */
ELM_IMAGE_FLIP_HORIZONTAL = 4, /**< flip image horizontally */ ELM_IMAGE_FLIP_HORIZONTAL = 4, /**< flip image horizontally */
ELM_IMAGE_FLIP_VERTICAL = 5, /**< flip image vertically */ ELM_IMAGE_FLIP_VERTICAL = 5, /**< flip image vertically */
@ -16685,6 +16654,14 @@ extern "C" {
* @ingroup Toolbar * @ingroup Toolbar
*/ */
EAPI Eina_Bool elm_toolbar_horizontal_get(const Evas_Object *obj); EAPI Eina_Bool elm_toolbar_horizontal_get(const Evas_Object *obj);
/**
* Get the number of items in a toolbar
* @param obj The toolbar object
* @return The number of items in @p obj toolbar
* @ingroup Toolbar
*/
EAPI unsigned int elm_toolbar_items_count(const Evas_Object *obj) EINA_ARG_NONNULL(1) EINA_PURE;
/** /**
* @} * @}
*/ */

View File

@ -16,6 +16,7 @@ struct _Widget_Data
Elm_Toolbar_Shrink_Mode shrink_mode; Elm_Toolbar_Shrink_Mode shrink_mode;
Elm_Icon_Lookup_Order lookup_order; Elm_Icon_Lookup_Order lookup_order;
int icon_size; int icon_size;
unsigned int item_count;
double align; double align;
Eina_Bool homogeneous : 1; Eina_Bool homogeneous : 1;
Eina_Bool no_select : 1; Eina_Bool no_select : 1;
@ -855,6 +856,7 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_RESIZE, evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_RESIZE,
_resize_item, obj); _resize_item, obj);
if ((!wd->items) && wd->always_select) _item_select(it); if ((!wd->items) && wd->always_select) _item_select(it);
wd->item_count++;
return it; return it;
} }
@ -1460,6 +1462,7 @@ elm_toolbar_item_del(Elm_Object_Item *it)
obj2 = WIDGET(item); obj2 = WIDGET(item);
next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(item)->next); next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(item)->next);
wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item)); wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item));
wd->item_count--;
if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items); if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
if (wd->always_select && item->selected && next) _item_select(next); if (wd->always_select && item->selected && next) _item_select(next);
_item_del(item); _item_del(item);
@ -2025,3 +2028,12 @@ elm_toolbar_horizontal_get(const Evas_Object *obj)
if (!wd) return EINA_FALSE; if (!wd) return EINA_FALSE;
return !wd->vertical; return !wd->vertical;
} }
EAPI unsigned int
elm_toolbar_items_count(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) 0;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return 0;
return wd->item_count;
}