Exemplo n.º 1
0
/**
 * @brief Implementation AtkObject->ref_child callback
 *
 * ATK doc says:\n
 * Gets a reference to the specified accessible child of the object. The
 * accessible children are 0-based so the first accessible child is at index 0,
 * the second at index 1 and so on.
 *
 * @returns an AtkObject representing the specified accessible child of the
 * accessible.
 */
static AtkObject *
eail_naviframe_ref_child(AtkObject *obj, gint i)
{
   Eina_List *list;
   EailNaviframe *naviframe;
   EailWidget *widget;
   Evas_Object *e_object;

   g_return_val_if_fail(EAIL_IS_NAVIFRAME(obj), NULL);

   naviframe = EAIL_NAVIFRAME(obj);
   widget = EAIL_WIDGET(naviframe);

   e_object = eail_widget_get_widget(widget);

   list = elm_naviframe_items_get(e_object);
   int list_count = eina_list_count(list);
   if (i >= list_count)
     {
        eina_list_free(list);
        return NULL;
     }

   AtkObject *child = eail_naviframe_page_new(obj, i);
   atk_object_initialize(child, eina_list_nth(list, i));
   g_object_ref(child);
   naviframe->cached_pages = eina_list_append(naviframe->cached_pages, child);

   eina_list_free(list);

   return child;
}
Exemplo n.º 2
0
/**
 * @brief handler for event which is raised when naviframe page is changed
 * ("transition,finished" event)
 *
 * @param data passed to callback
 * @param obj object that raised event
 * @param event_info additional event info
 */
void
_eail_naviframe_handle_page_changed_event(void *data,
                                          Evas_Object *obj,
                                          void *event_info)
{
   EailNaviframe *naviframe_obj = NULL;
   g_return_if_fail(EAIL_IS_NAVIFRAME(data));
   gint n_children = 0;

   eail_emit_atk_signal
                  (ATK_OBJECT(data), "visible-data-changed", ATK_TYPE_OBJECT);

   naviframe_obj = EAIL_NAVIFRAME(data);
   if (!naviframe_obj) return;

   _eail_naviframe_emit_signals_changed(ATK_OBJECT(naviframe_obj));

   n_children = eail_naviframe_n_children_get(ATK_OBJECT(naviframe_obj));
   DBG("N_CHILDREN: %d", n_children);

   if (n_children && n_children > naviframe_obj->child_count_last)
     {
         eail_emit_children_changed(TRUE, ATK_OBJECT(data), n_children - 1);
     }
   else if(n_children < naviframe_obj->child_count_last)
    {
         eail_emit_children_changed(FALSE, ATK_OBJECT(data), n_children);
    }

   naviframe_obj->child_count_last = n_children;
}
Exemplo n.º 3
0
/**
 * @brief Implementation AtkObject->get_n_children callback
 *
 * ATK doc says:\n
 * Gets the number of accessible children of the accessible.
 *
 * @param obj an AtkObject
 *
 * @returns an integer representing the number of accessible children of
 * the accessible
 */
static gint
eail_naviframe_n_children_get(AtkObject *obj)
{
   EailNaviframe *naviframe;
   Evas_Object *widget;
   Eina_List *list;
   int list_count;

   g_return_val_if_fail(EAIL_IS_NAVIFRAME(obj), -1);

   naviframe = EAIL_NAVIFRAME(obj);
   widget = eail_widget_get_widget(EAIL_WIDGET(naviframe));
   list = elm_naviframe_items_get(widget);
   list_count = eina_list_count(list);
   eina_list_free(list);

   return list_count;
}
Exemplo n.º 4
0
/**
 * @brief
 *
 * @param naviframe an AtkObject
 * @param navi_tab_item an Elm_Object_Item item
 * @returns accessible naviframe page
 */
AtkObject *
eail_naviframe_page_new(AtkObject *naviframe, Elm_Object_Item *navi_tab_item)
{
   AtkObject *atk_object;
   EailNaviframePage *page;
   Evas_Object *o, *widget;

   g_return_val_if_fail(EAIL_IS_NAVIFRAME(naviframe), NULL);

   widget = eail_widget_get_widget(EAIL_WIDGET(naviframe));

   g_return_val_if_fail(widget != NULL, NULL);

   atk_object = g_object_new(EAIL_TYPE_NAVIFRAME_PAGE, NULL);
   page = EAIL_NAVIFRAME_PAGE(atk_object);

   page->naviframe = widget;

   page->page = navi_tab_item;

   page->child_count = 0;

   o = elm_object_item_part_content_get(page->page, "prev_btn");
   if (o && elm_object_widget_check(o))
     page->content[page->child_count++] = o;

   o = elm_object_item_part_content_get(page->page, "icon");
   if (o && elm_object_widget_check(o))
     page->content[page->child_count++] = o;

   o = elm_object_item_part_content_get(page->page, "next_btn");
   if (o && elm_object_widget_check(o))
     page->content[page->child_count++] = o;

   o = elm_object_item_part_content_get(page->page, "default");
   if (o && elm_object_widget_check(o))
     page->content[page->child_count++] = o;

   page->parent_naviframe = naviframe;

   atk_object->layer = ATK_LAYER_WIDGET;

   return atk_object;
}
Exemplo n.º 5
0
/**
 * @brief click action callback
 *
 * @param action an AtkAction
 * @param data user data
 * @return TRUE on success, FALSE otherwise
 */
static gboolean
eail_naviframe_action_click(AtkAction *action, void *data)
{
   EailNaviframe *naviframe;
   Evas_Object *widget, *target;
   Elm_Object_Item *it;

   g_return_val_if_fail(EAIL_IS_NAVIFRAME(action), FALSE);

   naviframe = EAIL_NAVIFRAME(action);

   widget = eail_widget_get_widget(EAIL_WIDGET(naviframe));
   it = elm_naviframe_top_item_get(widget);
   if (!elm_naviframe_item_title_visible_get(it)) return FALSE;

   target = elm_object_item_widget_get(it);
   if (!target) return FALSE;

   evas_object_smart_callback_call(target, "title,clicked", it);

   return TRUE;
}