#include "util.h"
typedef struct {
-
char *pkgid;
char *appid;
char *name;
Eina_Bool multi_launch;
Eina_Bool isAlreadySet;
time_t launch_time;
-
} list_type_default_s;
task_mgr_error_e list_create();
main_h main_get_info(void);
+void screen_reader_set_highlight_by_index(int index, Eina_Bool can_highlight);
+void screen_reader_grab_highlight_by_index(int index);
+void screen_reader_update(int cur_page);
+
#endif //__TASK_MGR_H__
description {
state : "show" 0.0;
visible : 1;
-
min : 98 98;
max : 98 98;
-
rel1 {
relative : 0.5 0.5;
to : "bg";
index_refresh(main_info);
}
+static Eina_Bool _screen_reader_launch_app(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info)
+{
+ Evas_Object *parent = NULL;
+
+ if (data == NULL || obj == NULL) {
+ _E("parameter is NULL");
+ return EINA_TRUE;
+ }
+
+ parent = elm_atspi_accessible_parent_get(obj);
+ if (parent == NULL) {
+ _E("Failed to get parent object of access object");
+ return EINA_TRUE;
+ }
+
+ _clicked_cb(data, parent, NULL, NULL);
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool _screen_reader_del_app(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info)
+{
+ Evas_Object *parent = NULL;
+
+ if (data == NULL || obj == NULL) {
+ _E("parameter is NULL");
+ return EINA_TRUE;
+ }
+
+ parent = elm_atspi_accessible_parent_get(obj);
+ if (parent == NULL) {
+ _E("Failed to get parent object of access object");
+ return EINA_TRUE;
+ }
+
+ _item_del_cb(data, parent, NULL, NULL);
+
+ return EINA_TRUE;
+}
+
Evas_Object *item_create(void *data, list_type_default_s *info)
{
main_h main_info = data;
evas_object_show(label);
elm_object_part_content_set(item, "txt.app_name", label);
+
+ elm_atspi_accessible_can_highlight_set(label, EINA_FALSE);
}
icon = evas_object_image_add(evas_object_evas_get(item));
evas_object_event_callback_add(item, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb_t, main_info);
evas_object_data_set(item, DATA_KEY_ITEM_INFO, info);
+ /* Screen Reader */
+ Evas_Object *ao_app_icon = NULL;
+ Evas_Object *ao_del_icon = NULL;
+ char buf[128] = { 0, };
+
+ ao_app_icon = elm_access_object_register(icon, item);
+ elm_atspi_accessible_name_set(ao_app_icon, info->name ? strdup(info->name) : NULL);
+ snprintf(buf, sizeof(buf), S_("IDS_AT_BODY_PAGE_P1SD_OF_P2SD_T_TTS"), main_info->cur_page + 1, eina_list_count(main_info->pkg_list));
+ elm_atspi_accessible_description_set(ao_app_icon, buf ? strdup(buf) : NULL);
+ elm_atspi_accessible_translation_domain_set(ao_app_icon, PACKAGE);
+ elm_atspi_accessible_reading_info_type_set(ao_app_icon, (ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION));
+ elm_access_action_cb_set(ao_app_icon, ELM_ACCESS_ACTION_ACTIVATE, _screen_reader_launch_app, main_info);
+ elm_atspi_accessible_can_highlight_set(ao_app_icon, EINA_FALSE);
+
+ ao_del_icon = elm_access_object_register((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(item), "img.recent_delete_bg"), item);
+ elm_atspi_accessible_name_set(ao_del_icon, strdup(S_("IDS_TASKMGR_OPT_CLOSE")));
+ elm_atspi_accessible_description_set(ao_del_icon, strdup(S_("IDS_ACCS_BODY_BUTTON_TTS")));
+ elm_atspi_accessible_translation_domain_set(ao_del_icon, PACKAGE);
+ elm_atspi_accessible_reading_info_type_set(ao_del_icon, (ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION));
+ elm_access_action_cb_set(ao_del_icon, ELM_ACCESS_ACTION_ACTIVATE, _screen_reader_del_app, main_info);
+ elm_atspi_accessible_can_highlight_set(ao_del_icon, EINA_FALSE);
+
return item;
ERROR:
return &main_info;
}
+void screen_reader_set_highlight_by_index(int index, Eina_Bool can_highlight)
+{
+ Evas_Object *box = NULL;
+ Evas_Object *item = NULL;
+ Evas_Object *target_obj = NULL;
+ Evas_Object *access_obj = NULL;
+ Eina_List *item_list = NULL;
+ main_h main_info = NULL;
+
+ main_info = main_get_info();
+ if (main_info == NULL) {
+ _E("main_info is NULL");
+ return;
+ }
+ if (main_info->scroller == NULL) {
+ _E("scroller is NULL");
+ return;
+ }
+ box = elm_object_content_get(main_info->scroller);
+ if (box == NULL) {
+ _E("box is NULL");
+ return;
+ }
+ item_list = elm_box_children_get(box);
+ if (item_list == NULL) {
+ _E("item list is NULL");
+ return;
+ }
+ item = eina_list_nth(item_list, index);
+ if (item == NULL) {
+ _E("item is NULL");
+ return;
+ }
+
+ target_obj = elm_object_part_content_get(item, "img.app_image");
+ if (target_obj) {
+ access_obj = elm_access_object_get(target_obj);
+ if (access_obj) {
+ char buf[128] = { 0, };
+ snprintf(buf, sizeof(buf), S_("IDS_AT_BODY_PAGE_P1SD_OF_P2SD_T_TTS"), main_info->cur_page + 1, eina_list_count(main_info->pkg_list));
+ elm_atspi_accessible_description_set(access_obj, buf ? strdup(buf) : NULL);
+ elm_atspi_accessible_can_highlight_set(access_obj, can_highlight);
+ }
+ }
+
+ target_obj = NULL;
+
+ target_obj = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(item), "img.recent_delete_bg");
+ if (target_obj) {
+ access_obj = elm_access_object_get(target_obj);
+ if (access_obj) {
+ elm_atspi_accessible_can_highlight_set(access_obj, can_highlight);
+ }
+ }
+}
+
+void screen_reader_grab_highlight_by_index(int index)
+{
+ Evas_Object *box = NULL;
+ Evas_Object *item = NULL;
+ Evas_Object *target_obj = NULL;
+ Evas_Object *access_obj = NULL;
+ Eina_List *item_list = NULL;
+ main_h main_info = NULL;
+
+ main_info = main_get_info();
+ if (main_info == NULL) {
+ _E("main_info is NULL");
+ return;
+ }
+
+ if (main_info->scroller == NULL) {
+ _E("scroller is NULL");
+ return;
+ }
+
+ box = elm_object_content_get(main_info->scroller);
+ if (box == NULL) {
+ _E("box is NULL");
+ return;
+ }
+
+ item_list = elm_box_children_get(box);
+ if (item_list == NULL) {
+ _E("item list is NULL");
+ return;
+ }
+
+ item = eina_list_nth(item_list, index);
+ if (item == NULL) {
+ _E("item is NULL");
+ return;
+ }
+
+ target_obj = elm_object_part_content_get(item, "img.app_image");
+ if (target_obj == NULL) {
+ _E("target object is NULL");
+ return;
+ }
+
+ access_obj = elm_access_object_get(target_obj);
+ if (access_obj == NULL) {
+ _E("access object is NULL");
+ return;
+ }
+
+ elm_atspi_component_highlight_grab(access_obj);
+}
+
+void screen_reader_update(int cur_page)
+{
+ Evas_Object *box = NULL;
+ Eina_List *pkg_list = NULL;
+ main_h main_info = NULL;
+ int i = 0, total = 0;
+
+ main_info = main_get_info();
+ if (main_info == NULL) {
+ _E("data is NULL");
+ return;
+ }
+
+ box = elm_object_content_get(main_info->scroller);
+ if (box == NULL) {
+ _E("box is NULL");
+ return;
+ }
+
+ pkg_list = elm_box_children_get(box);
+ if (pkg_list == NULL) {
+ _E("pkg list is NULL");
+ return;
+ }
+
+ total = eina_list_count(pkg_list);
+ for (i = 0; i < total; i++) {
+ if (i == cur_page) {
+ screen_reader_set_highlight_by_index(i, EINA_TRUE);
+ screen_reader_grab_highlight_by_index(i);
+ } else {
+ screen_reader_set_highlight_by_index(i, EINA_FALSE);
+ }
+ }
+}
+
static Eina_Bool _back_key_pressed(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info)
{
_D("");
main_h main_info = data;
Evas_Object *layout = NULL;
Eina_Bool ret = EINA_FALSE;
+ char edje_path[PATH_MAX] = {0, };
+ int res = 0;
// create layout
layout = elm_layout_add(main_info->win);
goto_if(!layout, ERROR);
- char edje_path[PATH_MAX] = {0, };
- int res = 0;
res = getEdjepath(LAYOUT, edje_path, sizeof(edje_path));
goto_if(res < 0, ERROR);
+
_D("edje_path is : %s", edje_path);
- ret = elm_layout_file_set(layout, edje_path, "taskmanager-main");
+ ret = elm_layout_file_set(layout, edje_path, "taskmanager-main");
goto_if(EINA_FALSE == ret, ERROR);
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_resize(layout, main_info->root_w, main_info->root_h);
evas_object_show(layout);
+ /* Screen Reader */
+ Evas_Object *ao_layout = NULL;
+ ao_layout = elm_access_object_register((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(layout), "bg"), layout);
+ elm_atspi_accessible_name_set(ao_layout, strdup(S_("IDS_AT_BODY_NO_RECENT_APPS")));
+ elm_atspi_accessible_translation_domain_set(ao_layout, PACKAGE);
+ elm_atspi_accessible_reading_info_type_set(ao_layout, (ELM_ACCESSIBLE_READING_INFO_TYPE_NAME));
+ elm_atspi_accessible_can_highlight_set(ao_layout, EINA_FALSE);
+
main_info->layout = layout;
// create scroller
if (layout) {
evas_object_del(layout);
layout = NULL;
- }
+ }
evas_object_del(main_info->win);
main_info->win = NULL;
return TASK_MGR_ERROR_FAIL;
_D("List count: %d", eina_list_count(main_info.pkg_list));
if (!main_info.pkg_list) {
+ Evas_Object *access_obj = NULL;
+
_E("pkg_list is empty");
- char text1[256] = { 0 };
- char text2[256] = { 0 };
- memset(text1, 0, sizeof(text1));
- memset(text2, 0, sizeof(text2));
- snprintf(text1, sizeof(text1), S_(STRING_TASK_MGR_NO_RECENT_APPS));
- snprintf(text2, sizeof(text2), S_(STRING_TASK_MGR_RECENT_APPS));
elm_layout_signal_emit(main_info.layout, "show,txt.no_apps", "txt.no_apps");
- elm_object_translatable_part_text_set(main_info.layout, "txt.no_apps", text1);
- elm_object_translatable_part_text_set(main_info.layout, "txt.recent_title", text2);
+ elm_object_translatable_part_text_set(main_info.layout, "txt.no_apps", S_(STRING_TASK_MGR_NO_RECENT_APPS));
+ elm_object_translatable_part_text_set(main_info.layout, "txt.recent_title", S_(STRING_TASK_MGR_RECENT_APPS));
+
+ access_obj = elm_access_object_get((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(main_info.layout), "bg"));
+ if (access_obj) {
+ elm_atspi_accessible_can_highlight_set(access_obj, EINA_TRUE);
+ }
+
+ access_obj = NULL;
+
+ access_obj = elm_access_object_get((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(main_info.layout), "close_all_text"));
+ if (access_obj) {
+ elm_atspi_accessible_can_highlight_set(access_obj, EINA_FALSE);
+ }
+
goto END;
}
elm_win_indicator_opacity_set(main_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
elm_win_borderless_set(main_info.win, EINA_TRUE);
+ elm_atspi_accessible_name_set(main_info.win, strdup(S_("WDS_ST_OPT_RECENT_APPS_ABB")));
evas_object_show(main_info.win);
main_info.e = evas_object_evas_get(main_info.win);
#define REMOVING_VALUE 12
#define VELOCITY_VALUE 0.45
+static Eina_Bool _screen_reader_close_all_apps(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info);
static inline int __get_msec(struct timeval *s, struct timeval *e)
{
void close_button_disabled_set(Eina_Bool is_disabled)
{
main_h main_info = main_get_info();
+ Evas_Object *access_obj = NULL;
char text[256] = { 0 };
memset(text, 0, sizeof(text));
snprintf(text, sizeof(text), S_(STRING_TASK_MGR_CLOSE_ALL));
elm_object_signal_emit(main_info->layout, "set,close,show", "close.bg");
elm_object_translatable_part_text_set(main_info->layout, "close_all_text", text);
}
+
+ /* Screen Reader */
+ access_obj = elm_access_object_get((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(main_info->layout), "close_all_text"));
+ if (access_obj) {
+ elm_atspi_accessible_can_highlight_set(access_obj, !is_disabled);
+ }
}
+
void set_freeze_scroller()
{
main_h main_info = main_get_info();
if (label)
elm_label_slide_go(label);
eina_list_free(list);
+
+ /* Screen Reader */
+ screen_reader_update(cur_page);
}
void index_create(void *data)
index_create(main_info);
}
+ /* Screen Reader */
+ screen_reader_set_highlight_by_index(0, EINA_TRUE);
+
return TASK_MGR_ERROR_NONE;
}
}
-static void _br_scroller_ani_stop_cb(void *data, Evas_Object *scroller, void *event_info)
-{
- _D("animation stoped");
-}
-
static void _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data)
{
main_h main_info = data;
}
*/
-
Evas_Object *scroller_create(void *data)
{
main_h main_info = data;
evas_object_smart_callback_add(scroller, "scroll,drag,start", _br_scroller_drag_start_cb, main_info);
evas_object_smart_callback_add(scroller, "scroll", _br_scroller_scrolled_cb, main_info);
evas_object_smart_callback_add(scroller, "scroll,anim,start", _br_scroller_ani_start_cb, NULL);
- evas_object_smart_callback_add(scroller, "scroll,anim,stop", _br_scroller_ani_stop_cb, NULL);
elm_object_style_set(scroller, "effect");
elm_object_part_content_set(main_info->layout, "list", scroller);
edje_object_signal_callback_add(elm_layout_edje_get(main_info->layout), "close_button,clicked", "clicked", _delete_all_btn_clicked_cb, main_info);
close_button_disabled_set(EINA_TRUE);
+ /* Screen Reader */
+ Evas_Object *ao_close_all_btn = NULL;
+ ao_close_all_btn = elm_access_object_register((Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(main_info->layout), "close_all_text"), main_info->layout);
+ elm_atspi_accessible_name_set(ao_close_all_btn, strdup(S_("WDS_ST_ACBUTTON_CLOSE_ALL_ABB")));
+ elm_atspi_accessible_description_set(ao_close_all_btn, strdup(S_("IDS_ACCS_BODY_BUTTON_TTS")));
+ elm_atspi_accessible_translation_domain_set(ao_close_all_btn, PACKAGE);
+ elm_atspi_accessible_reading_info_type_set(ao_close_all_btn, (ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION));
+ elm_access_action_cb_set(ao_close_all_btn, ELM_ACCESS_ACTION_ACTIVATE, _screen_reader_close_all_apps, main_info);
+
+ elm_atspi_accessible_can_highlight_set(index, EINA_FALSE);
+
return scroller;
}
evas_object_smart_callback_del(scroller, "scroll,drag,start", _br_scroller_drag_start_cb);
evas_object_smart_callback_del(scroller, "scroll", _br_scroller_scrolled_cb);
evas_object_smart_callback_del(scroller, "scroll,anim,start", _br_scroller_ani_start_cb);
- evas_object_smart_callback_del(scroller, "scroll,anim,stop", _br_scroller_ani_stop_cb);
evas_object_del(scroller);
scroller = NULL;
}
+static Eina_Bool _screen_reader_close_all_apps(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info)
+{
+ if (data == NULL) {
+ _E("parameter is NULL");
+ return EINA_TRUE;
+ }
+
+ _delete_all_btn_clicked_cb(data, NULL, NULL, NULL);
+
+ return EINA_TRUE;
+}
+
/* End of the file */