more option 관련해서…

more option 관련해서…

BY 09 Mar 2016 Native Application Development

안녕하세요… 

BasicUIApplication sample 에서

more option 과 rotary 를 혼합하여 테스트 중 입니다.

1) more option 을 누르기 전 : 베젤을 좌,우로 움직이면 eext_rotary_object_event_callback_add 에서

                                                 정의된 Eext_Rotary_Event_Cb로 이벤트를 받을 수 있었습니다.

2) more option 을 누른 후 : back 버튼 누른 후 다시 1번과 동일하게 베젤을 좌,우로 이동 시 정의된 Eext_Rotary_Event_Cb로 이벤트가  오지않으며,

                                                 오직,,,more option 상태에서만 Eext_Rotary_Event_Cb로 이벤트가 받아지고 있습니다.

위 같이  eext_more_option_add 와 eext_rotary_object_event_callback_add 을 같이 사용하여,

more option을 누른 후에도 more option의 item을 베젤을 통해 이벤트를 받고 싶으며,

또한, more option이 아닌 경우에도 베젤을 통해 이벤트를 받고 싶습니다.  방법 좀 부탁드립니다…..

혹여, 제가 테스트 했던 소스를 붙여 보도록 하겠습니다.

static void
create_base_gui(appdata_s *ad)
{
 char edj_path[PATH_MAX] = {0, };

 /* Window */
 ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
 elm_win_conformant_set(ad->win, EINA_TRUE);
 elm_win_autodel_set(ad->win, EINA_TRUE);

 if (elm_win_wm_rotation_supported_get(ad->win)) {
  int rots[4] = { 0, 90, 180, 270 };
  elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4);
 }

 evas_object_smart_callback_add(ad->win, “delete,request”, win_delete_request_cb, NULL);

 /* Conformant */
 ad->conform = elm_conformant_add(ad->win);
 elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
 elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE);
 evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 elm_win_resize_object_add(ad->win, ad->conform);
 evas_object_show(ad->conform);
 evas_object_show(ad->win);

 ad->circle_surface = eext_circle_surface_conformant_add(ad->conform);
 ad->layout = elm_layout_add(ad->conform);
 elm_layout_theme_set(ad->layout, “layout”, “application”, “default”);
 evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 evas_object_show(ad->layout);
 elm_object_content_set(ad->conform, ad->layout);

 ad->nf = elm_naviframe_add(ad->layout);
 elm_object_part_content_set(ad->layout, “elm.swallow.content”, ad->nf);
 evas_object_show(ad->nf);

 app_get_resource(EDJ_FILE, edj_path, (int)PATH_MAX);
 ad->layout = elm_layout_add(ad->win);
 elm_layout_file_set(ad->layout, edj_path, “main”);
 evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 eext_object_event_callback_add(ad->layout, EEXT_CALLBACK_BACK, layout_back_cb, ad);
 evas_object_show(ad->layout);
 elm_object_part_text_set(ad->layout, “main.view.title”, “Hello EFL”);
 elm_object_content_set(ad->layout, ad->nf);

 Evas_Object *more_option = eext_more_option_add(ad->layout);
 for (int i = 0; i < 16; ++i) {
  if (i == 0)
   _creat_page(more_option, i);
  else
   _creat_page(more_option, i);
 }
 elm_object_part_content_set(ad->layout, “main.view.more”, more_option);
 elm_naviframe_item_push(ad->nf , “More Option Demo”, NULL, NULL, ad->layout, “empty”);

 rotary_init(ad);
}

void
rotary_init(appdata_s *ad)
{
 eext_rotary_object_event_callback_add(ad->layout, _rotary_cb, ad);

 eext_rotary_object_event_activated_set(ad->layout, EINA_TRUE);
}

Written by