[kor][e-kor-seminar 2014][3/8] getting started - writing efl app (sanghyun lee)

19
삼성전자 이상현 연구원 ([email protected]) 2014 EFL 한국 개발자 커뮤니티 세미나

Upload: enlightenmentproject

Post on 19-Jul-2015

73 views

Category:

Software


4 download

TRANSCRIPT

삼성전자 이상현 연구원

([email protected])

2014 EFL 한국 개발자 커뮤니티 세미나

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

목차Contents

1. 최신 Tizen SDK 설치하기

2. Tizen SDK 및 EFL 템플릿 소개

3. Container 위젯으로 화면 구성하기

4. Button을 이용한 Smart Event 활용

5. EFL Sample Application

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

1. 최신 Tizen SDK 설치하기

- Tizen 홈페이지(www.tizen.org) 접속

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

1. 최신 Tizen SDK 설치하기

- JRE 설치 후 Tizen 2.3b SDK 다운로드

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

1. 최신 Tizen SDK 설치하기

- 운영체제에 맞는 SDK 다운로드하여 설치

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

Basic EDC Application

- Layout EDC 기반

Basic UI Application

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

Ecore Main Loop

- EFL event를 체크/처리하는 메인 루틴

- ecore_main_loop_begin, ecore_main_loop_quit 을 통해 활성화 및 종료

ecore API elementary API Tizen API

ecore_main_loop_begin() elm_run() app_main()

ecore_main_loop_quit() elm_exit()

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

intmain(int argc, char *argv[]){

appdata_s ad = {0,};app_event_callback_s event_callback = {0,};int ret = 0;

event_callback.create = app_create;event_callback.terminate = app_terminate;event_callback.pause = app_pause;event_callback.resume = app_resume;event_callback.app_control = app_control;event_callback.language_changed = app_language_changed;

event_callback.low_memory = NULL;event_callback.low_battery = NULL;event_callback.device_orientation = NULL;event_callback.region_format_changed = NULL;

ret = app_main(argc, argv, &event_callback, &ad);if (ret != APP_ERROR_NONE) {

dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);}

return ret;}

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

2. Tizen SDK 및 EFL 템플릿 소개

static boolapp_create(void *data){

appdata_s *ad = data;create_base_gui(ad);return true;

}

static voidcreate_base_gui(appdata_s *ad){

/* Window */ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);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);eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad);

/* Conformant*/

/* Label*/

/* Show window after base gui is set up */evas_object_show(ad->win);

}

static voidwin_delete_request_cb(void *data , Evas_Object *obj , void *event_info){

elm_exit();}

static voidwin_back_cb(void *data, Evas_Object *obj, void *event_info){

appdata_s *ad = data;/* Let window go to hide state. */elm_win_lower(ad->win);

}

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

3. Container 위젯으로 화면 구성하기

Container 위젯이란?

여러 elementary 위젯들을 화면상에 Layout 시키기 위한 위젯

e.g : Gengrid, Genlist, Box, Conformant, Grid, Layout, Naviframe, Panes, Scroller, Table

Box 위젯

Box 위젯은 Child 위젯을 Linear fansion으로 정렬하는 위젯

수직 및 수평 정렬Child object 간의 padding 가능

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

3. Container 위젯으로 화면 구성하기

elm_label :

- Text 출력 및 text 관련 기능을 제공하는 위젯

- elm_object_text_set API 로 출력할 텍스트 입력

elm_image :

- Image 출력 및 Image 관련 기능을 제공하는 위젯

- elm_image_file_set API 로 image 파일을 로드

elm_button :

- Button 생성 및 Button 관련 기능을 제공하는 위젯

- elm_object_text_set API로 button 내부 text 설정 가능

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

3. Container 위젯으로 화면 구성하기

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

3. Container 위젯으로 화면 구성하기

Evas Object의 Hint Weight : Container 내부에서 해당 Evas Object의 가중치

evas_object_size_hint_weight_set(evas object, horizontal weight, vertical weight)

EVAS_OBJECT_HINT_EXPAND : 1

Evas Object의 Hint Align : Container Boundary 내에서 Evas Object의 정렬값

evas_object_size_hint_align_set(evas object, horizontal align, vertical align)

EVAS_OBJECT_HINT_FILL : -1

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

4. Button을 이용한 Smart Event 활용

/* Button*/ad->btn = elm_button_add(ad->box);elm_object_text_set(ad->btn, "Tizen Button");evas_object_size_hint_weight_set(ad->btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

evas_object_smart_callback_add(ad->btn, "clicked", btn_clicked_cb, ad);elm_box_pack_end(ad->box, ad->btn);evas_object_show(ad->btn);

evas_object_smart_callback_add(Evas Object, Smart Callback Name, Smart Callback Function, Function Data)

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

4. Button을 이용한 Smart Event 활용

static voidbtn_clicked_cb(void *data, Evas_Object *obj, void*event_info){

appdata_s *ad = data;

if (ad->btn_press) {ad->btn_press = EINA_FALSE;elm_object_text_set(ad->label, "Hello EFL");elm_image_file_set(ad->img,

"/opt/usr/apps/org.tizen.efl_test/res/tizen.png", NULL);}else {

ad->btn_press = EINA_TRUE;elm_object_text_set(ad->label, "Button Pressed");elm_image_file_set(ad->img,

"/opt/usr/apps/org.tizen.efl_test/res/efl.png", NULL);}

}

SDK에서 EFL 앱 개발하기

2014 EFL 한국 개발자 커뮤니티 세미나

5. EFL Sample Application

SDK Sample Application 제공

1. Native UI App

- Settings

- Gallery

- Calculator

- Email

- Application Store

- Clock etc.

2. Native App

- UI Controls Sample

2014 EFL 한국 개발자 커뮤니티 세미나