From e59b97b5fecb877c218cabd5a3ddc7c333e619ef Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 12 Jun 2017 11:16:03 +0900 Subject: [PATCH] Support appcontrol type option Change-Id: I8ea8b6cccadc2c2fa1d96a806958bfcf193f8e62 Signed-off-by: Jihoon Kim --- CMakeLists.txt | 28 ++++++++++- ise-default.xml | 8 ++- src/config.cpp | 136 ++++++++++++++++++++++++++++++++++++--------------- src/include/config.h | 33 +++++++++++++ src/include/option.h | 6 --- src/ise.cpp | 124 ++++++++++++++++++++++++++++++++++++++-------- src/option.cpp | 129 +++++++++++++++++++++++++++++++++++++++--------- 7 files changed, 374 insertions(+), 90 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 07eefe4..141462b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,6 @@ SET(ISE_SRCS src/languages.cpp src/ise-language-change.cpp src/config.cpp - src/option.cpp src/imdata.cpp src/ise-stt-mode.cpp src/ise-stt-option.cpp @@ -17,7 +16,6 @@ SET(ISE_SRCS src/sdk/ise_lang_table.cpp src/sdk/cji.cpp src/sdk/sdk.cpp - src/sdk/sdk_option.cpp src/candidate/candidate-factory.cpp src/candidate/candidate.cpp src/candidate/efl/candidate-efl.cpp @@ -31,6 +29,15 @@ SET(ISE_SRCS src/w-input-smartreply.cpp ) +SET(ISE_SETTING_SRCS + src/config.cpp + src/option.cpp + src/sdk/sdk_option.cpp + src/eflutil.cpp + src/languages.cpp + src/sdk/ise_lang_table.cpp +) + SET(ISE_PACKAGE ${PROJECT_NAME}) SET(ISE_PKGNAME ${PACKAGE}) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) @@ -77,12 +84,25 @@ FOREACH(flag ${ISE_PKGS_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) +SET(SETTING_PKGS_CHECK_MODULES + elementary + efl-extension + dlog + vconf + libxml-2.0 + capi-appfw-application + capi-appfw-preference + ) + +pkg_check_modules(ISE_SETTING_PKGS REQUIRED ${SETTING_PKGS_CHECK_MODULES}) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE -Wall") #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -finstrument-functions") SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -g") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") +ADD_DEFINITIONS("-DEXPORTED=__attribute__((visibility(\"default\")))") ADD_DEFINITIONS("-DPACKAGE=\"${ISE_PACKAGE}\"") ADD_DEFINITIONS("-DPACKAGE_NAME=\"${ISE_PKGNAME}\"") ADD_DEFINITIONS("-DRESDIR=\"${ISE_RESDIR}\"") @@ -92,6 +112,8 @@ ADD_DEFINITIONS(-DSUPPORTS_EMOTICONS) ADD_EXECUTABLE(${PROJECT_NAME} ${ISE_SRCS}) +ADD_EXECUTABLE(${PROJECT_NAME}-setting ${ISE_SETTING_SRCS}) + # For edc File ADD_CUSTOM_TARGET( candidate-single.edj @@ -230,9 +252,11 @@ endif() # For edc File end TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ISE_PKGS_LDFLAGS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME}-setting ${ISE_SETTING_PKGS_LDFLAGS}) set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${ISE_BINDIR}) +INSTALL(TARGETS ${PROJECT_NAME}-setting DESTINATION ${ISE_BINDIR}) INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.xml DESTINATION ${TZ_SYS_RO_PACKAGES}) diff --git a/ise-default.xml b/ise-default.xml index 399c439..ae63bab 100644 --- a/ise-default.xml +++ b/ise-default.xml @@ -4,7 +4,7 @@ - + @@ -89,9 +89,15 @@ + + + + + http://tizen.org/privilege/ime http://tizen.org/privilege/recorder http://tizen.org/privilege/haptic + http://tizen.org/privilege/appmanager.launch diff --git a/src/config.cpp b/src/config.cpp index 4395c34..17807b4 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -71,23 +71,42 @@ void read_ise_config_string(const char *key, std::string &value) } } -void read_ise_config_values() +void read_ise_config_int(const char *key, sclint &config_variable, sclint default_value) { - sclint integer_value = 0; - std::string string_value; + sclint integer_value = default_value; + preference_get_int(key, &integer_value); + config_variable = integer_value; +} - /* keypad mode */ - integer_value = KEYPAD_MODE_QTY; - preference_get_int(ISE_CONFIG_KEYPAD_MODE, &integer_value); - g_config_values.keypad_mode = static_cast(integer_value); +void read_ise_config_bool(const char *key, sclboolean &config_variable, sclint default_value) +{ + sclint value = default_value; + preference_get_int(key, &value); + config_variable = value; +} - /* prediction */ - integer_value = 0; - preference_get_int(ISE_CONFIG_PREDICTION_ON, &integer_value); - g_config_values.prediction_on = integer_value; +void read_ise_keypad_mode() +{ + int value; + read_ise_config_int(ISE_CONFIG_KEYPAD_MODE, value, KEYPAD_MODE_QTY); + g_config_values.keypad_mode = static_cast(value); +} - /* enabled languages */ +void read_ise_prediction_mode() +{ + read_ise_config_bool(ISE_CONFIG_PREDICTION_ON, g_config_values.prediction_on, false); +} + +void read_ise_autocapital_mode() +{ + read_ise_config_bool(ISE_CONFIG_AUTO_CAPITALISE, g_config_values.auto_capitalise, false); +} + +void read_ise_enabled_languages() +{ + std::string string_value; string_value = ""; + read_ise_config_string(ISE_CONFIG_ENABLED_LANGUAGES, string_value); if (string_value.length() > 0) { std::stringstream ss(string_value); @@ -97,52 +116,91 @@ void read_ise_config_values() g_config_values.enabled_languages = vstrings; } - /* Selected languages */ +#ifdef _TV + g_config_values.enabled_languages.push_back("English"); + g_config_values.enabled_languages.push_back("Korean"); +#endif +} + +void read_ise_selected_language() +{ + std::string string_value; string_value = ""; + read_ise_config_string(ISE_CONFIG_SELECTED_LANGUAGE, string_value); if (string_value.length() > 0) { g_config_values.selected_language = string_value; } +#ifdef _TV + g_config_values.selected_language = std::string("English"); +#endif +} + +void read_ise_autopunctuation_mode() +{ + read_ise_config_bool(ISE_CONFIG_AUTO_PUNCTUATE, g_config_values.auto_punctuate, AUTOPUNCTUATE_ON); +} + +void read_ise_sound_mode() +{ + read_ise_config_bool(ISE_CONFIG_SOUND_ON, g_config_values.sound_on, SOUND_ON); +} + +void read_ise_vibration_mode() +{ + read_ise_config_bool(ISE_CONFIG_VIBRATION_ON, g_config_values.vibration_on, VIBRATION_ON); +} + +void read_ise_character_preview_mode() +{ + read_ise_config_bool(ISE_CONFIG_PREVIEW_ON, g_config_values.preview_on, PREVIEW_ON); +} + +void read_ise_setting_guide_popup_mode() +{ + read_ise_config_bool(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_SETTING, g_config_values.first_guideset, false); +} + +void read_ise_language_guide_popup_mode() +{ + read_ise_config_bool(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_LANGUAGE_CHANGE, g_config_values.first_guidechange, false); +} + +void read_ise_config_values() +{ + /* keypad mode */ + read_ise_keypad_mode(); + + /* prediction */ + read_ise_prediction_mode(); + + /* enabled languages */ + read_ise_enabled_languages(); + + /* Selected languages */ + read_ise_selected_language(); + /* Auto capital */ - integer_value = 1; - preference_get_int(ISE_CONFIG_AUTO_CAPITALISE, &integer_value); - g_config_values.auto_capitalise = integer_value; + read_ise_autocapital_mode(); /* auto punctuation */ - integer_value = AUTOPUNCTUATE_ON; - preference_get_int(ISE_CONFIG_AUTO_PUNCTUATE, &integer_value); - g_config_values.auto_punctuate = integer_value; + read_ise_autopunctuation_mode(); /* Sound */ - integer_value = SOUND_ON; - preference_get_int(ISE_CONFIG_SOUND_ON, &integer_value); - g_config_values.sound_on = integer_value; + read_ise_sound_mode(); /* Vibration */ - integer_value = VIBRATION_ON; - preference_get_int(ISE_CONFIG_VIBRATION_ON, &integer_value); - g_config_values.vibration_on = integer_value; + read_ise_vibration_mode(); /* character preview */ - integer_value = PREVIEW_ON; - preference_get_int(ISE_CONFIG_PREVIEW_ON, &integer_value); - g_config_values.preview_on = integer_value; + read_ise_character_preview_mode(); /* guide popup for setting */ - integer_value = 0; - preference_get_int(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_SETTING, &integer_value); - g_config_values.first_guideset = integer_value; + read_ise_setting_guide_popup_mode(); /* guide popup for language change */ - integer_value = 0; - preference_get_int(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_LANGUAGE_CHANGE, &integer_value); - g_config_values.first_guidechange = integer_value; -#ifdef _TV - g_config_values.enabled_languages.push_back("English"); - g_config_values.enabled_languages.push_back("Korean"); - g_config_values.selected_language = std::string("English"); -#endif + read_ise_language_guide_popup_mode(); } void write_ise_config_values() diff --git a/src/include/config.h b/src/include/config.h index bfcd6e7..e5dbfa6 100644 --- a/src/include/config.h +++ b/src/include/config.h @@ -70,6 +70,39 @@ void read_ise_config_string(const char *key, std::string &value); void read_ise_config_values(); +void +read_ise_keypad_mode(); + +void +read_ise_prediction_mode(); + +void +read_ise_autocapital_mode(); + +void +read_ise_enabled_languages(); + +void +read_ise_selected_language(); + +void +read_ise_autopunctuation_mode(); + +void +read_ise_sound_mode(); + +void +read_ise_vibration_mode(); + +void +read_ise_character_preview_mode(); + +void +read_ise_setting_guide_popup_mode(); + +void +read_ise_language_guide_popup_mode(); + /** * Writes all option values to SCIM config file @return Nothing. diff --git a/src/include/option.h b/src/include/option.h index 407d83d..091721c 100644 --- a/src/include/option.h +++ b/src/include/option.h @@ -120,10 +120,4 @@ option_window_destroyed(Evas_Object *window); bool option_window_is_available(SCLOptionWindowType type); -void -read_options(Evas_Object *naviframe); - -void -write_options(); - #endif diff --git a/src/ise.cpp b/src/ise.cpp index 6c76930..f20214f 100644 --- a/src/ise.cpp +++ b/src/ise.cpp @@ -27,6 +27,8 @@ #include #include #include +#include +#include #ifdef HAVE_CBHM #include #endif @@ -44,7 +46,6 @@ #include "w-input-smartreply.h" #define EDJ_FILE RESDIR"/edje/mobile/customised_ctxpopup.edj" -#define EXPORTED __attribute__((visibility("default"))) #define CANDIDATE_WINDOW_HEIGHT 84 using namespace scl; @@ -796,6 +797,37 @@ SCLEventReturnType CUIEventCallback::on_event_drag_state_changed(SclUIEventDesc return SCL_EVENT_PASS_ON; } +static void launch_option() +{ + app_control_h app_control; + int ret = app_control_create(&app_control); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW("app_control_create returned %d\n", ret); + return; + } + + ret = app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW("app_control_set_operation returned %d\n", ret); + goto end; + } + + ret = app_control_set_app_id(app_control, "org.tizen.ise-default-setting"); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW("app_control_set_app_id returned %d\n", ret); + goto end; + } + + ret = app_control_send_launch_request(app_control, NULL, NULL); + if (ret != APP_CONTROL_ERROR_NONE) { + goto end; + } + +end: + if (app_control) + app_control_destroy(app_control); +} + SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_desc) { SCLEventReturnType ret = SCL_EVENT_PASS_ON; @@ -945,8 +977,8 @@ SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_d g_ui->set_input_mode("STT_3X4"); } else if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) { - if (!option_window_is_available(OPTION_WINDOW_TYPE_NORMAL)) - ime_create_option_window(); + launch_option(); + ret = SCL_EVENT_DONE; } else if (strcmp(event_desc.key_value, USER_KEYSTRING_CLIPBOARD) == 0) { show_cbhm(); @@ -982,8 +1014,8 @@ SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_d case KEY_TYPE_USER: if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) { //open_option_window(NULL, ROTATION_TO_DEGREE(g_ui->get_rotation())); - if (!option_window_is_available(OPTION_WINDOW_TYPE_NORMAL)) - ime_create_option_window(); + launch_option(); + ret = SCL_EVENT_DONE; } else if (strcmp(event_desc.key_value, USER_KEYSTRING_CLIPBOARD) == 0) { show_cbhm(); @@ -1469,6 +1501,62 @@ ise_hide() #endif } +static void ise_keypad_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_keypad_mode(); +} + +static void ise_enabled_languages_changed_cb(const char *key, void *user_data) +{ + read_ise_enabled_languages(); +} + +static void ise_selected_language_changed_cb(const char *key, void *user_data) +{ + read_ise_selected_language(); +} + +static void ise_autocapital_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_autocapital_mode(); +} + +static void ise_autopuncutate_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_autopunctuation_mode(); +} + +static void ise_sound_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_sound_mode(); + + g_ui->enable_sound(g_config_values.sound_on); +} + +static void ise_vibration_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_vibration_mode(); + + g_ui->enable_vibration(g_config_values.vibration_on); +} + +static void ise_character_preview_mode_changed_cb(const char *key, void *user_data) +{ + read_ise_character_preview_mode(); + + g_ui->enable_magnifier(g_config_values.preview_on); +} + +static void ise_setting_guide_popup_changed_cb(const char *key, void *user_data) +{ + read_ise_setting_guide_popup_mode(); +} + +static void ise_language_guide_popup_changed_cb(const char *key, void *user_data) +{ + read_ise_language_guide_popup_mode(); +} + void ise_create() { @@ -1554,6 +1642,17 @@ ise_create() size_landscape.height += g_candidate->get_height(); } ime_set_size(size_portrait.width, size_portrait.height, size_landscape.width, size_landscape.height); + + preference_set_changed_cb(ISE_CONFIG_KEYPAD_MODE, ise_keypad_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_ENABLED_LANGUAGES, ise_enabled_languages_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_SELECTED_LANGUAGE, ise_selected_language_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_AUTO_CAPITALISE, ise_autocapital_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_AUTO_PUNCTUATE, ise_autopuncutate_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_SOUND_ON, ise_sound_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_VIBRATION_ON, ise_vibration_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_PREVIEW_ON, ise_character_preview_mode_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_SETTING, ise_setting_guide_popup_changed_cb, NULL); + preference_set_changed_cb(ISE_CONFIG_FIRST_GUIDELINE_POPUP_FOR_LANGUAGE_CHANGE, ise_language_guide_popup_changed_cb, NULL); } init_recent_used_punctuation(); } @@ -2051,18 +2150,6 @@ static void ime_app_layout_set_cb(Ecore_IMF_Input_Panel_Layout layout, void *use ise_show(g_keyboard_state.ic); } -static void ime_app_option_window_created_cb(Evas_Object *window, ime_option_window_type_e type, void *user_data) -{ - if (window) { - option_window_created(window, (SCLOptionWindowType)type); - } -} - -static void ime_app_option_window_destroyed_cb(Evas_Object *window, void *user_data) -{ - option_window_destroyed(window); -} - static void ime_app_rotation_degree_changed_cb(int degree, void *user_data) { ise_set_screen_rotation(degree); @@ -2335,9 +2422,6 @@ EXPORTED void ime_app_main(int argc, char **argv) ime_event_set_imdata_set_cb(ime_app_imdata_set_cb, NULL); ime_event_set_process_key_event_cb(ime_app_process_key_event_cb, NULL); - ime_event_set_option_window_created_cb(ime_app_option_window_created_cb, NULL); - ime_event_set_option_window_destroyed_cb(ime_app_option_window_destroyed_cb, NULL); - ime_event_set_candidate_show_cb(ime_app_candidate_show_cb, NULL); ime_event_set_candidate_hide_cb(ime_app_candidate_hide_cb, NULL); ime_event_set_lookup_table_changed_cb(ime_app_lookup_table_changed_cb, NULL); diff --git a/src/option.cpp b/src/option.cpp index c459447..d0c474c 100644 --- a/src/option.cpp +++ b/src/option.cpp @@ -16,18 +16,17 @@ */ #include -#include #include #include -#include #include #include -#include +#include #include "utils.h" #include "option.h" #include "languages.h" #include "eflutil.h" +#include "sdk/ise_lang_table.h" #undef LOG_TAG #define LOG_TAG "ISE_DEFAULT" @@ -37,9 +36,6 @@ #define ICON_DIR LAYOUTDIR"/wearable/image" #endif -using namespace scl; - - static ISELanguageManager _language_manager; #define OPTION_MAX_LANGUAGES 255 @@ -132,11 +128,12 @@ struct OPTION_ELEMENTS static OPTION_ELEMENTS option_elements[OPTION_WINDOW_TYPE_MAX]; extern CONFIG_VALUES g_config_values; -extern CSCLUI *g_ui; static Evas_Object* create_option_language_view(Evas_Object *naviframe); static Evas_Object *_create_check_button(Evas_Object *parent, sclboolean state); +static void read_options(Evas_Object *naviframe); + #ifdef _WEARABLE static Evas_Object* create_smart_typing_view(Evas_Object *naviframe); static Evas_Object* create_feedback_view(Evas_Object *naviframe); @@ -199,9 +196,6 @@ static void reset_settings_popup_response_ok_cb(void *data, Evas_Object *obj, vo read_options(option_elements[type].naviframe); } - g_ui->enable_sound(g_config_values.sound_on); - g_ui->enable_vibration(g_config_values.vibration_on); - g_ui->enable_magnifier(g_config_values.preview_on); vconf_set_bool(VCONFKEY_AUTOCAPITAL_ALLOW_BOOL, g_config_values.auto_capitalise); vconf_set_bool(VCONFKEY_AUTOPERIOD_ALLOW_BOOL, g_config_values.auto_punctuate); @@ -544,7 +538,6 @@ static void check_sound_change_callback(void *data, Evas_Object *obj, void *even } g_config_values.sound_on = state; write_ise_config_values(); - g_ui->enable_sound(state); } static void check_vibration_change_callback(void *data, Evas_Object *obj, void *event_info) @@ -557,7 +550,6 @@ static void check_vibration_change_callback(void *data, Evas_Object *obj, void * } g_config_values.vibration_on = state; write_ise_config_values(); - g_ui->enable_vibration(state); } static void check_character_pre_change_callback(void *data, Evas_Object *obj, void *event_info) @@ -570,7 +562,6 @@ static void check_character_pre_change_callback(void *data, Evas_Object *obj, vo } g_config_values.preview_on = state; write_ise_config_values(); - g_ui->enable_magnifier(state); } static Evas_Object *_create_check_button(Evas_Object *parent, sclboolean state) @@ -801,10 +792,9 @@ static void close_option_window(SCLOptionWindowType type) { destroy_genlist_item_classes(type); if (CHECK_ARRAY_INDEX(type, OPTION_WINDOW_TYPE_MAX)) { - if (option_elements[type].option_window) - ime_destroy_option_window(option_elements[type].option_window); - option_elements[type].option_window = NULL; + + ui_app_exit(); } } @@ -1106,7 +1096,7 @@ static Evas_Object* create_feedback_view(Evas_Object *naviframe) } #endif -void read_options(Evas_Object *naviframe) +static void read_options(Evas_Object *naviframe) { SCLOptionWindowType type = find_option_window_type(naviframe); @@ -1150,11 +1140,6 @@ void read_options(Evas_Object *naviframe) } } -void write_options() -{ - language_selection_finished_cb(NULL, NULL, NULL); -} - static void set_option_values() { } @@ -1259,6 +1244,37 @@ option_window_created(Evas_Object *window, SCLOptionWindowType type) if (window == NULL) return; if (!CHECK_ARRAY_INDEX(type, OPTION_WINDOW_TYPE_MAX)) return; + sclint loop; + + ISE_LANG_TABLE *table = NULL; + ISELangTableMgr *lang_table_mgr = ISELangTableMgr::get_instance(); + if (lang_table_mgr) table = lang_table_mgr->get_lang_table(); + + if (lang_table_mgr && table) { + for (loop = 0;loop < lang_table_mgr->get_lang_table_size();loop++) { + INPUT_MODE_INFO input_mode_QTY; + input_mode_QTY.name = table[loop].inputmode_QTY; + input_mode_QTY.display_name = table[loop].inputmode_QTY_name; + LANGUAGE_INFO language; + language.name = table[loop].language; + language.display_name = table[loop].language_name; + if (table[loop].locale_string) { + language.locale_string = table[loop].locale_string; + } + language.input_modes.push_back(input_mode_QTY); + language.priority = LANGAUGE_PRIORITY_DEFAULT; + language.resource_file = MAIN_ENTRY_XML_PATH; + language.is_latin_language = table[loop].is_latin_language; + language.accepts_caps_mode = table[loop].accepts_caps_mode; + + /* These variable should be read from stored setting values */ + language.enabled = FALSE; + language.selected_input_mode = input_mode_QTY.name; + + _language_manager.add_language(language); + } + } + read_ise_config_values(); /* To make sure there is no temporary language in the enabled language list */ @@ -1353,3 +1369,72 @@ option_window_is_available(SCLOptionWindowType type) } return false; } + +static bool +app_create(void *data) +{ + LOGD(""); + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + /* Hook to take necessary actions before main event loop starts + Initialize UI resources and application's data + If this function returns true, the main loop of application starts + If this function returns false, the application is terminated */ + return true; +} + +static void +app_control(app_control_h app_control, void *data) +{ + /* Handle the launch request. */ + Evas_Object *window = elm_win_util_standard_add("Option window", "Option window"); + if (!window) return; + + int rots[] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(window, rots, (sizeof(rots) / sizeof(int))); + elm_win_indicator_mode_set(window, ELM_WIN_INDICATOR_SHOW); + + option_window_created(window, OPTION_WINDOW_TYPE_SETTING_APPLICATION); +} + +static void +app_pause(void *data) +{ + LOGD(""); + /* Take necessary actions when application becomes invisible. */ +} + +static void +app_resume(void *data) +{ + LOGD(""); +} + +static void +app_terminate(void *data) +{ + LOGD(""); +} + +EXPORTED int +main(int argc, char *argv[]) +{ + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {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; + + ret = ui_app_main(argc, argv, &event_callback, NULL); + if (ret != APP_ERROR_NONE) { + LOGW("ui_app_main failed, Err=%d\n", ret); + } + + return ret; +} -- 2.7.4