void
EflMultiLineCandidate::item_pressed(Evas_Object *item)
{
+ const char *str = edje_object_part_text_get(item, "candidate");
+ item_pressed(str? str : "");
+}
+
+void
+EflMultiLineCandidate::item_pressed(std::string str)
+{
#ifdef _TV
m_candidates_item.clear();
g_ui->enable_highlight_ui(TRUE);
m_highlight_mode = false;
#endif
- const char *str = edje_object_part_text_get(
- item, "candidate");
-
int index = -1;
- if (str) {
- vector<string>::const_iterator it =
- find(cur_candidates.begin(), cur_candidates.end(), str);
- if (it != cur_candidates.end()) {
- index = it-cur_candidates.begin();
- } else {
- index = -1;
- }
+ vector<string>::const_iterator it =
+ find(cur_candidates.begin(), cur_candidates.end(), str);
+ if (it != cur_candidates.end()) {
+ index = it-cur_candidates.begin();
+ } else {
+ index = -1;
}
//hide_more_view();
MultiEventDesc desc;
desc.type = MultiEventDesc::CANDIDATE_ITEM_MOUSE_DOWN;
desc.index = index;
- desc.text = str? str : "";
+ desc.text = str;
notify_listeners(desc);
}
return item_text_size;
}
+static Eina_Bool
+_item_access_action(void *data, Evas_Object *access_object, Elm_Access_Action_Info *action_info)
+{
+ const char * name = elm_atspi_accessible_name_get(access_object);
+ LOGD("access_action callback on item: %s", name);
+ if (!name)
+ return EINA_FALSE;
+
+ EflMultiLineCandidate *candidate = (EflMultiLineCandidate *)data;
+ candidate->item_pressed(name);
+ return EINA_TRUE;
+}
+
+void
+EflMultiLineCandidate::register_access_object(Evas_Object* obj, std::string name, const Elm_Access_Action_Cb access_action, const void *data)
+{
+ Evas_Object * access_object = elm_access_object_register(obj, m_window);
+ if (!access_object)
+ return;
+ elm_atspi_accessible_name_set(access_object, name.c_str());
+ elm_atspi_accessible_role_set(access_object, ELM_ATSPI_ROLE_PUSH_BUTTON);
+ if (access_action)
+ elm_access_action_cb_set(access_object, ELM_ACCESS_ACTION_ACTIVATE, access_action, data);
+}
+
+
void
EflMultiLineCandidate::update(const vector<string> &vec_str)
{
}
Evas_Object *item = get_candidate_item(item_text_size);
edje_object_part_text_set(item, "candidate", vec_str[i].c_str());
+ register_access_object(item, vec_str[i], _item_access_action, this);
y_start = (CANDIDATE_WINDOW_HEIGHT*m_screenRatio - item_text_size.height)/2;
elm_table_pack(m_candidateTable, item, cur_item_sum, y_start,
item_text_size.width, item_text_size.height);
int y_start = 0;
Evas_Object *item = get_candidate_item(item_text_size);
edje_object_part_text_set(item, "candidate", vec_str[i].c_str());
+ register_access_object(item, vec_str[i], _item_access_action, this);
y_start = (CANDIDATE_WINDOW_HEIGHT*m_screenRatio - item_text_size.height)/2;
elm_table_pack(m_candidateTable, item, cur_item_sum, y_start,
item_text_size.width, item_text_size.height);
void more_btn_clicked();
void more_btn_released();
void close_btn_clicked();
+ void item_pressed(std::string str);
void item_pressed(Evas_Object *);
void item_released(Evas_Object *);
void item_moved(Evas_Object *);
void show_view();
void hide_view();
+ void register_access_object(Evas_Object* obj, std::string name, const Elm_Access_Action_Cb access_action = NULL, const void *data = NULL);
Evas_Object *get_candidate_item(candidate_item_size item_text_size);
candidate_item_size get_candidate_item_text_size(std::string srcStr);
Evas_Object * get_candidate_seperate_line_vertical();