diff options
author | Junghyun Kim <jh1114.kim@samsung.com> | 2013-01-03 16:53:27 +0900 |
---|---|---|
committer | Junghyun Kim <jh1114.kim@samsung.com> | 2013-01-03 16:53:27 +0900 |
commit | f3f71c41dc085f849d5e73708e66497c43f90799 (patch) | |
tree | ead16eb788cf6cf5c0600704fda9b0e80f27018c | |
parent | 86686c2dfe670e174c8e51ee473edad8542c65d8 (diff) | |
parent | f46612fd88c196c70ab20d2922b3f8e84db7890c (diff) | |
download | smartsearch-f3f71c41dc085f849d5e73708e66497c43f90799.tar.gz smartsearch-f3f71c41dc085f849d5e73708e66497c43f90799.tar.bz2 smartsearch-f3f71c41dc085f849d5e73708e66497c43f90799.zip |
Merge branch 'master' into tizen_2.0
-rwxr-xr-x | data/groups/search_bar.edc | 124 | ||||
-rwxr-xr-x | data/groups/ug_effect.edc | 109 | ||||
-rwxr-xr-x | data/org.tizen.smartsearch.xml | 2 | ||||
-rwxr-xr-x | include/smartsearch.h | 15 | ||||
-rwxr-xr-x | po/CMakeLists.txt | 2 | ||||
-rwxr-xr-x | po/es_MX.po | 15 | ||||
-rwxr-xr-x | src/ps_app_interface.cpp | 164 | ||||
-rwxr-xr-x | src/ps_makeupviews.cpp | 221 | ||||
-rwxr-xr-x | src/ps_searcher.cpp | 435 | ||||
-rwxr-xr-x | src/search_bar.cpp | 5 | ||||
-rwxr-xr-x | src/smartsearch.cpp | 8 |
11 files changed, 522 insertions, 578 deletions
diff --git a/data/groups/search_bar.edc b/data/groups/search_bar.edc deleted file mode 100755 index b867440..0000000 --- a/data/groups/search_bar.edc +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -group { - name: "smartsearch/search_bar"; - parts { - part { - name: "bg"; - mouse_events: 0; - type: RECT; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 1.0;} - color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT; - } - } - part { - name: "searchbar_area_category_pad_left"; - type: RECT; - mouse_events: 0; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - min: 16 0; - fixed: 0 1; - align: 0.0 0.0; - rel1 { relative: 0.0 0.0; to: "bg";} - rel2 { relative: 0.0 1.0; to: "bg";} - color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT; - } - } - part { - name: "searchbar_area_category_top"; - type: RECT; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - min: 80 16; - fixed: 0 1; - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "searchbar_area_category_pad_left";} - rel2 { relative: 1.0 0.0; to: "searchbar_area_category_pad_left";} - color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT; - } - } - part { - name: "searchbar_area_category_bottom"; - type: RECT; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - min: 80 16; - fixed: 0 1; - align: 0.0 0.0; - rel1 { relative: 0.0 1.0; to: "searchbar_area_category_top";} - rel2 { relative: 1.0 1.0; - to_x: "searchbar_area_category_top"; - to_y: "bg";} - color: SEARCHBAR_BACKGROUND_COLOR_DEFAULT; - } - } - part { - name: "searchbar_area_category"; - type: SWALLOW; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - min: 80 0; - //max: 0 106; - fixed: 0 1; - align: 0.0 0.0; - rel1 { relative: 1.0 1.0; - to_x: "searchbar_area_category_pad_left"; - to_y: "searchbar_area_category_top";} - rel2 { relative: 1.0 0.0; - to_x: "searchbar_area_category_pad_left"; - to_y: "searchbar_area_category_bottom";} - } - } - part { - name: "searchbar_area_entry"; - type: SWALLOW; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - min: 0 107; - fixed: 0 1; - align: 0.0 1.0; - rel1 { relative: 1.0 0.0; - to_x: "searchbar_area_category"; - to_y: "bg"; - } - rel2 { relative: 1.0 1.0; - to_x: "bg"; - to_y: "bg";} - } - } - } //end parts -} //end group - diff --git a/data/groups/ug_effect.edc b/data/groups/ug_effect.edc deleted file mode 100755 index 9f5a9da..0000000 --- a/data/groups/ug_effect.edc +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -group { - name: "ug_effect"; - parts { - part { - name: "clip"; - type: RECT; - description { - state: "default" 0.0; - rel1 { relative: 1 0; } - rel2 { relative: 2 1; } - color: 255 255 255 0; - } - description { - state: "show" 0.0; - rel1 { relative: 0 0; } - rel2 { relative: 1 1; } - color: 255 255 255 255; - } - } - part { - name: "elm.swallow.content"; - type: SWALLOW; - clip_to: "clip"; - description { - rel1.to: "clip"; - rel2.to: "clip"; - } - } - part { - name: "event_blocker"; - description { - state: "default" 0.0; - rel1.to: "clip"; - rel2.to: "clip"; - visible: 1; - } - description { - state: "show" 0.0; - inherit: "default" 0.0; - } - description { - state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - } - programs { - program { - name: "show"; - signal: "elm,state,show"; - action: STATE_SET "show" 0.0; - target: "clip"; - target: "event_blocker"; - transition: "DECELERATE" 0.5; - after: "show_end"; - } - program { - name: "hide"; - signal: "elm,state,hide"; - action: STATE_SET "default" 0.0; - target: "clip"; - target: "event_blocker"; - transition: "DECELERATE" 0.5; - after: "hide_end"; - } - program { - name: "disable_blocker"; - name: "disable_event_blocker"; - signal: "elm,state,blocker,disabled"; - action: STATE_SET "disabled" 0.0; - target: "event_blocker"; - } - program{ - name: "disable_blocker"; - action: SIGNAL_EMIT "elm,state,blocker,disabled" ""; - } - program { - name: "show_end"; - action: SIGNAL_EMIT "elm,action,show,finished" ""; - after: "disable_blocker"; - } - program { - name: "hide_end"; - action: SIGNAL_EMIT "elm,action,hide,finished" ""; - after: "disable_blocker"; - } - } - } - diff --git a/data/org.tizen.smartsearch.xml b/data/org.tizen.smartsearch.xml index 5ddd4cb..ee8bb02 100755 --- a/data/org.tizen.smartsearch.xml +++ b/data/org.tizen.smartsearch.xml @@ -47,7 +47,7 @@ <label xml:lang="sk-sk">Hľadať</label> <label xml:lang="sl-sl">Iskanje</label> <label xml:lang="es-es">Buscar</label> - <label xml:lang="es-us">Buscar</label> + <label xml:lang="es-mx">Buscar</label> <label xml:lang="sv-se">Sök</label> <label xml:lang="tr-tr">Akıllı Arama</label> <label xml:lang="uk-ua">Пошук</label> diff --git a/include/smartsearch.h b/include/smartsearch.h index 15982cf..0a3cfa6 100755 --- a/include/smartsearch.h +++ b/include/smartsearch.h @@ -96,12 +96,12 @@ struct search_pipe_data { struct search_item_sel { int type; - char path[MAX_LENGTH_PER_PATH]; - char main_buf[MAX_LENGTH_PER_LINE]; - char sub_buf[MAX_LENGTH_PER_LINE]; - char main_id[MAX_LENGTH_PER_ID]; - char icon1_path[MAX_LENGTH_PER_PATH]; - char icon2_path[MAX_LENGTH_PER_PATH]; + char *launch_path; + char *launch_param; + char *text1; + char *text2; + char *icon1; + char *icon2; }; struct search_item_more_sel { @@ -138,11 +138,12 @@ struct appdata { Elm_Genlist_Item_Class *itc_pslist_1line; Elm_Genlist_Item_Class *itc_pslist_1line_1icon; + Elm_Genlist_Item_Class *itc_pslist_1line_1icon_browser_history; Elm_Genlist_Item_Class *itc_pslist_1line_2icon; Elm_Genlist_Item_Class *itc_pslist_2line_1icon; Elm_Genlist_Item_Class *itc_pslist_2line_2icon; + Elm_Genlist_Item_Class *itc_pslist_2line_2icon_browser_bookmark; Elm_Genlist_Item_Class *itc_grouptitle; - Elm_Genlist_Item_Class *itc_label; Elm_Genlist_Item_Class *itc_listmore; Ecore_Pipe *pipe; diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index e38e1d2..d8183e0 100755 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -42,7 +42,7 @@ SET(POFILES sk.po sl.po es_ES.po - es_US.po + es_MX.po sv.po tr_TR.po uk.po diff --git a/po/es_MX.po b/po/es_MX.po new file mode 100755 index 0000000..8b5a72d --- /dev/null +++ b/po/es_MX.po @@ -0,0 +1,15 @@ +msgid "IDS_SSEARCH_POP_UPDATING_ING" +msgstr "Actualizando..." + +msgid "IDS_SSEARCH_POP_UNABLE_TO_LAUNCH_APPLICATION" +msgstr "No se puede iniciar aplicación" + +msgid "IDS_SSEARCH_POP_SELECTED_DATA_DOES_NOT_EXIST" +msgstr "Los datos seleccionados no existen" + +msgid "IDS_SSEARCH_HEADER_PHONE_ABB" +msgstr "Teléfono" + +msgid "IDS_SSEARCH_BODY_MORE_RESULTS" +msgstr "Más resultados" + diff --git a/src/ps_app_interface.cpp b/src/ps_app_interface.cpp index 232f778..b56e1e0 100755 --- a/src/ps_app_interface.cpp +++ b/src/ps_app_interface.cpp @@ -80,66 +80,54 @@ void search_launch_contact_view(void *data, void *record_info) struct appdata *ad = (struct appdata *)data; struct search_item_sel *cur_category_mem = (struct search_item_sel *)record_info; + SEARCH_RET_IF(ad == NULL); + SEARCH_RET_IF(cur_category_mem == NULL); + service_h service = NULL; int ret = 0; bool err_popup_show = true; - ui_gadget_h ug = NULL; - struct ug_cbs cbs = { 0, }; + Ecore_X_Window win_id = -1; - char buf[10] = { 0, }; + win_id = elm_win_xwindow_get(ad->win_main); - SEARCH_RET_IF(ad == NULL); - SEARCH_RET_IF(cur_category_mem == NULL); - - if (!cur_category_mem || strlen(cur_category_mem->main_id) < 0 ) { - SEARCH_DEBUG_ERROR("Selected item does not have data!"); + ret = service_create(&service); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_create"); goto out_func; - } else { - if (ad->detail_ug) { - SEARCH_DEBUG_WARNING("\n prev ug is exist. destroy prev ug"); - ug_destroy(ug); - ad->detail_ug = NULL; } - ret = service_create(&service); + ret = service_set_app_id(service, "contacts-details-efl"); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_set_app_id!"); + goto out_func; + } + ret = service_set_window(service, win_id); if (ret != SERVICE_ERROR_NONE) { - SEARCH_DEBUG_ERROR("Fail to create service handle!"); + SEARCH_DEBUG_ERROR("[Fail] service_set_window!"); goto out_func; } - snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_DETAIL); - ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf); - + ret = service_add_extra_data(service, "type", "0");; if (ret != SERVICE_ERROR_NONE) { - SEARCH_DEBUG_ERROR("Fail to add service extra data : parameter 1!"); + SEARCH_DEBUG_ERROR("[Fail] service_add_extra_data : type!"); goto out_func; } - ret = service_add_extra_data(service, CT_UG_BUNDLE_ID, - cur_category_mem->main_id); - + ret = service_add_extra_data(service, "person_id", cur_category_mem->launch_param); if (ret != SERVICE_ERROR_NONE) { - SEARCH_DEBUG_ERROR("Fail to add service extra data : parameter 2!"); + SEARCH_DEBUG_ERROR("[Fail] service_add_extra_data : person_id"); goto out_func; } - cbs.layout_cb = __search_ug_layout_cb; - cbs.result_cb = NULL; - cbs.destroy_cb = __search_ug_closed_cb; - cbs.priv = ad; - - ug = ug_create(NULL, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, service, &cbs); - - if (!ug) { - SEARCH_DEBUG_ERROR(" ... ug_create: failed !!!"); + ret = service_send_launch_request(service, NULL, NULL); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_send_launch_request"); goto out_func; } else { - ad->detail_ug = ug; err_popup_show = false; } - } out_func: if (err_popup_show == true) { @@ -160,27 +148,53 @@ void search_launch_msg_view(void *data, void *record_info) struct appdata *ad = (struct appdata *)data; struct search_item_sel *cur_category_mem = (struct search_item_sel *)record_info; - bundle *b; - int ret = 0; - SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - b = bundle_create(); - if (!b) { - SEARCH_DEBUG_ERROR("search_launch_msg_view : bundle_create failed"); - return; + service_h service = NULL; + int ret = 0; + bool err_popup_show = true; + + ret = service_create(&service); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_create"); + goto out_func; + } + + ret = service_set_package(service, "org.tizen.message"); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_set_package!"); + goto out_func; + } + + ret = service_add_extra_data(service, "type", "msg_id"); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_set_extra_data : msg_id"); + goto out_func; + } + + ret = service_add_extra_data(service, "msgId", cur_category_mem->launch_param); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_set_extra_data : msgId parameter!"); + goto out_func; + } + + ret = service_send_launch_request(service, NULL, NULL); + if (ret != SERVICE_ERROR_NONE) { + SEARCH_DEBUG_ERROR("[Fail] service_send_launch_request"); + goto out_func; + } else { + err_popup_show = false; } - bundle_add(b, "type", "msg_id"); - bundle_add(b, "msgId", cur_category_mem->main_id); - ret = aul_launch_app("org.tizen.message", b); - if( (ret <= 0) && (ret != AUL_R_ETIMEOUT) ){ - SEARCH_DEBUG_ERROR("msg aul launch app error(%d)", ret); +out_func: + if (err_popup_show == true) { search_launch_popup_error(LAUNCH_ERROR_AUL_LAUNCH, ad); } - bundle_free(b); + if (service != NULL) { + service_destroy(service); + } SEARCH_FUNC_END; } @@ -211,9 +225,7 @@ void search_launch_email_view(void *data, void *record_info) goto out_func; } - snprintf(temp_path, MAX_LENGTH_PER_PATH - 1, "%s", - cur_category_mem->path); - + snprintf(temp_path, MAX_LENGTH_PER_PATH - 1, "%s", cur_category_mem->launch_path); token_param = strtok_r(temp_path, " ", &saveptr1); while (token_param != NULL) { @@ -290,21 +302,21 @@ void search_launch_image_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - if (access(cur_category_mem->path, F_OK) != 0) { + if (access(cur_category_mem->launch_path, F_OK) != 0) { SEARCH_DEBUG_ERROR("image access error : %s", - cur_category_mem->path); + cur_category_mem->launch_path); search_launch_popup_error(LAUNCH_ERROR_FILE_NOT_FOUND, ad); } else { - SEARCH_DEBUG_LOG("cur_category_mem->path : %s", - cur_category_mem->path); + SEARCH_DEBUG_LOG("cur_category_mem->launch_path : %s", + cur_category_mem->launch_path); service_h service; ret = service_create(&service); if (ret == 0) { service_set_operation(service, SERVICE_OPERATION_VIEW); - service_set_uri(service, cur_category_mem->path); + service_set_uri(service, cur_category_mem->launch_path); ret = service_send_launch_request(service, NULL, NULL); if (ret != 0) { @@ -330,20 +342,20 @@ void search_launch_video_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - if (access(cur_category_mem->path, F_OK) != 0) { + if (access(cur_category_mem->launch_path, F_OK) != 0) { SEARCH_DEBUG_ERROR("video access error : %s", - cur_category_mem->path); + cur_category_mem->launch_path); search_launch_popup_error(LAUNCH_ERROR_FILE_NOT_FOUND, ad); } else { - SEARCH_DEBUG_LOG("cur_category_mem->path : %s", - cur_category_mem->path); + SEARCH_DEBUG_LOG("cur_category_mem->launch_path : %s", + cur_category_mem->launch_path); service_h service; ret = service_create(&service); if (ret == 0) { service_set_operation(service, SERVICE_OPERATION_VIEW); - service_set_uri(service, cur_category_mem->path); + service_set_uri(service, cur_category_mem->launch_path); ret = service_send_launch_request(service, NULL, NULL); if (ret != 0) { @@ -369,20 +381,20 @@ void search_launch_music_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - if (access(cur_category_mem->path, F_OK) != 0) { + if (access(cur_category_mem->launch_path, F_OK) != 0) { SEARCH_DEBUG_ERROR("music file access error : %s", - cur_category_mem->path); + cur_category_mem->launch_path); search_launch_popup_error(LAUNCH_ERROR_FILE_NOT_FOUND, ad); } else { - SEARCH_DEBUG_LOG("cur_category_mem->path : %s", - cur_category_mem->path); + SEARCH_DEBUG_LOG("cur_category_mem->launch_path : %s", + cur_category_mem->launch_path); service_h service; ret = service_create(&service); if (ret == 0) { service_set_operation(service, SERVICE_OPERATION_VIEW); - service_set_uri(service, cur_category_mem->path); + service_set_uri(service, cur_category_mem->launch_path); ret = service_send_launch_request(service, NULL, NULL); if (ret != 0) { @@ -412,7 +424,7 @@ void search_launch_calendar_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - if (!cur_category_mem && strlen(cur_category_mem->main_id) < 0) { + if (strlen(cur_category_mem->launch_param) < 0) { SEARCH_DEBUG_ERROR("Selected item does not have data!"); goto out_func; } else { @@ -430,7 +442,7 @@ void search_launch_calendar_view(void *data, void *record_info) goto out_func; } - ret = service_add_extra_data(service, "eventId", cur_category_mem->main_id); + ret = service_add_extra_data(service, "eventId", cur_category_mem->launch_param); if (ret != SERVICE_ERROR_NONE) { SEARCH_DEBUG_ERROR("Fail to add service extra data : parameter 2!"); @@ -482,7 +494,7 @@ void search_launch_memo_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - if (!cur_category_mem && strlen(cur_category_mem->main_id) < 0) { + if (strlen(cur_category_mem->launch_param) < 0) { SEARCH_DEBUG_ERROR("Selected item does not have data!"); goto out_func; } else { @@ -499,7 +511,7 @@ void search_launch_memo_view(void *data, void *record_info) goto out_func; } - ret = service_add_extra_data(service, "index", cur_category_mem->main_id); + ret = service_add_extra_data(service, "index", cur_category_mem->launch_param); if (ret != SERVICE_ERROR_NONE) { SEARCH_DEBUG_ERROR("Fail to add service extra data : parameter 1!"); @@ -552,7 +564,7 @@ void search_launch_menu_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - pkg_name = cur_category_mem->path; + pkg_name = cur_category_mem->launch_path; if (pkg_name != NULL && strlen(pkg_name)) { ret = app_manager_is_running(pkg_name, &is_running); @@ -637,13 +649,13 @@ void search_launch_browser_view(void *data, void *record_info) SEARCH_RET_IF(ad == NULL); SEARCH_RET_IF(cur_category_mem == NULL); - SEARCH_DEBUG_LOG("cur_category_mem->path : %s", cur_category_mem->path); + SEARCH_DEBUG_LOG("cur_category_mem->launch_path : %s", cur_category_mem->launch_path); ret = service_create(&service); - if (ret == 0 && strlen(cur_category_mem->path) > 0 ) { + if (ret == 0 && strlen(cur_category_mem->launch_path) > 0 ) { service_set_operation(service, SERVICE_OPERATION_VIEW); - service_set_uri(service, cur_category_mem->path); + service_set_uri(service, cur_category_mem->launch_path); ret = service_send_launch_request(service, NULL, NULL); if (ret != 0) { @@ -689,6 +701,12 @@ void search_launch_popup_error(int error_type, void *data) ad->ctxpopup = NULL; } + elm_genlist_select_mode_set(ad->search_gl, ELM_OBJECT_SELECT_MODE_DEFAULT); + + if (elm_object_scroll_freeze_get(ad->search_gl) > 0) { + elm_object_scroll_freeze_pop(ad->search_gl); + } + popup = elm_popup_add(ad->win_main); evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); diff --git a/src/ps_makeupviews.cpp b/src/ps_makeupviews.cpp index 7b3e495..29ff2fd 100755 --- a/src/ps_makeupviews.cpp +++ b/src/ps_makeupviews.cpp @@ -25,6 +25,7 @@ #include <msg_types.h> #include <msg_storage.h> #include <msg.h> +#include <favorites.h> struct search_thread_data { struct appdata *ad; @@ -94,7 +95,7 @@ ecore_exe_pipe_cb(void *data, void *buf, unsigned int size) item->itc_style, item->data, NULL, - ELM_GENLIST_ITEM_GROUP, + ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(obj->gl_result_grp, @@ -146,53 +147,158 @@ ecore_exe_pipe_cb(void *data, void *buf, unsigned int size) SEARCH_FUNC_END; } -static Evas_Object *__search_gl_content_get_search_item_type(void *data, Evas_Object *obj, const char *part) +static Evas_Object *__search_gl_content_get_genlist_item_type(void *data, Evas_Object *obj, const char *part) { Evas_Object *icon = NULL; int icon_size = 0; + char *icon1_path = NULL; + char *icon2_path = NULL; struct search_item_sel *sel_mem_info = (struct search_item_sel *)data; + double scale = elm_config_scale_get(); + SEARCH_RETV_IF(sel_mem_info == NULL, NULL); if (!SEARCH_STRCMP(part, "elm.icon") || !SEARCH_STRCMP(part, "elm.icon.1")) { - if (strlen(sel_mem_info->icon1_path) > 0 ) { + icon1_path = sel_mem_info->icon1; + if (icon1_path && strlen(icon1_path) > 0 ) { icon = elm_icon_add(obj); - icon_size = (int)(SEARCH_THUMBNAIL_SIZE * elm_scale_get()); + icon_size = (int)(SEARCH_THUMBNAIL_SIZE * scale); elm_image_prescale_set(icon, icon_size); - elm_image_file_set(icon, sel_mem_info->icon1_path, NULL); + elm_image_file_set(icon, icon1_path, NULL); evas_object_size_hint_min_set(icon, - SEARCH_THUMBNAIL_SIZE * elm_scale_get(), - SEARCH_THUMBNAIL_SIZE * elm_scale_get()); + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); evas_object_size_hint_max_set(icon, - SEARCH_THUMBNAIL_SIZE * elm_scale_get(), - SEARCH_THUMBNAIL_SIZE * elm_scale_get()); + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); } } else if(!strcmp(part, "elm.icon.2")) { - if (strlen(sel_mem_info->icon2_path) > 0 ) { + icon2_path = sel_mem_info->icon2; + + if (icon2_path && strlen(icon2_path) > 0 ) { icon = elm_icon_add(obj); - icon_size = (int)(SEARCH_ICON_SIZE * elm_scale_get()); + icon_size = (int)(SEARCH_ICON_SIZE * scale); elm_image_prescale_set(icon, icon_size); - elm_image_file_set(icon, sel_mem_info->icon2_path, NULL); + elm_image_file_set(icon, icon2_path, NULL); evas_object_size_hint_min_set(icon, - SEARCH_ICON_SIZE * elm_scale_get(), - SEARCH_ICON_SIZE * elm_scale_get()); + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); evas_object_size_hint_max_set(icon, - SEARCH_ICON_SIZE * elm_scale_get(), - SEARCH_ICON_SIZE * elm_scale_get()); + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + } + } + + return icon; +} + +static Evas_Object *__search_gl_content_get_genlist_bookmark_item_type(void *data, Evas_Object *obj, const char *part) +{ + Evas_Object *icon = NULL; + int icon_size = 0; + int id = 0; + char *icon2_path = NULL; + + struct search_item_sel *sel_mem_info = (struct search_item_sel *)data; + SEARCH_RETV_IF(sel_mem_info == NULL, NULL); + + double scale = elm_config_scale_get(); + + if (!SEARCH_STRCMP(part, "elm.icon") || !SEARCH_STRCMP(part, "elm.icon.1")) { + if (sel_mem_info->launch_param) { + id = atoi(sel_mem_info->launch_param); + favorites_bookmark_get_favicon(id, evas_object_evas_get(obj), &icon); + } + + if (!icon && sel_mem_info->icon1) { + icon = elm_icon_add(obj); + icon_size = (int)(SEARCH_ICON_SIZE * scale); + elm_image_prescale_set(icon, icon_size); + elm_image_file_set(icon, sel_mem_info->icon1, NULL); + } + + if (icon) { + evas_object_size_hint_min_set(icon, + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); + evas_object_size_hint_max_set(icon, + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + } + } else if(!strcmp(part, "elm.icon.2")) { + icon2_path = sel_mem_info->icon2; + + if (icon2_path && strlen(icon2_path) > 0 ) { + icon = elm_icon_add(obj); + icon_size = (int)(SEARCH_ICON_SIZE * scale); + elm_image_prescale_set(icon, icon_size); + elm_image_file_set(icon, icon2_path, NULL); + evas_object_size_hint_min_set(icon, + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); + evas_object_size_hint_max_set(icon, + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); } } return icon; } +static Evas_Object *__search_gl_content_get_genlist_history_item_type(void *data, Evas_Object *obj, const char *part) +{ + Evas_Object *icon = NULL; + int icon_size = 0; + char *icon2_path = NULL; + int id = 0; + + struct search_item_sel *sel_mem_info = (struct search_item_sel *)data; + SEARCH_RETV_IF(sel_mem_info == NULL, NULL); + + double scale = elm_config_scale_get(); + + if (!SEARCH_STRCMP(part, "elm.icon") || !SEARCH_STRCMP(part, "elm.icon.1")) { + if (sel_mem_info->launch_param) { + id = atoi(sel_mem_info->launch_param); + favorites_history_get_favicon(id, evas_object_evas_get(obj), &icon); + } + + if (!icon && sel_mem_info->icon1) { + icon = elm_icon_add(obj); + icon_size = (int)(SEARCH_ICON_SIZE * scale); + elm_image_prescale_set(icon, icon_size); + elm_image_file_set(icon, sel_mem_info->icon1, NULL); + } + + if (icon) { + evas_object_size_hint_min_set(icon, + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); + evas_object_size_hint_max_set(icon, + SEARCH_THUMBNAIL_SIZE * scale, SEARCH_THUMBNAIL_SIZE * scale); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + } + } else if(!strcmp(part, "elm.icon.2")) { + icon2_path = (char*)sel_mem_info->icon2; + + if (icon2_path && strlen(icon2_path) > 0 ) { + icon = elm_icon_add(obj); + icon_size = (int)(SEARCH_ICON_SIZE * scale); + elm_image_prescale_set(icon, icon_size); + elm_image_file_set(icon, icon2_path, NULL); + evas_object_size_hint_min_set(icon, + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); + evas_object_size_hint_max_set(icon, + SEARCH_ICON_SIZE * scale, SEARCH_ICON_SIZE * scale); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + } + } + + return icon; +} + static Eina_Bool __search_gl_state_get(void *data, Evas_Object * obj, const char *part) { return EINA_FALSE; } -static char *__search_gl_label_get_search_item_type(void *data, Evas_Object * obj, +static char *__search_gl_label_get_genlist_item_type(void *data, Evas_Object * obj, const char *part) { char *buf = NULL; @@ -200,9 +306,9 @@ static char *__search_gl_label_get_search_item_type(void *data, Evas_Object * ob SEARCH_RETV_IF(sel_mem_info == NULL, g_strdup("")); if (!SEARCH_STRCMP(part, "elm.text") || !SEARCH_STRCMP(part, "elm.text.1")) { - buf = g_strdup(sel_mem_info->main_buf); + buf = g_strdup(sel_mem_info->text1); } else if (!SEARCH_STRCMP(part, "elm.text.sub") || !SEARCH_STRCMP(part, "elm.text.2")) { - buf = g_strdup(sel_mem_info->sub_buf); + buf = g_strdup(sel_mem_info->text2); } else { buf = NULL; } @@ -226,14 +332,11 @@ static char *__search_gl_label_get_group(void *data, Evas_Object * obj, struct search_content_object *object = (struct search_content_object*)data; SEARCH_RETV_IF(object == NULL, strdup("")); - if (object) { - if (object->string_type == SEARCH_STR_TYPE_APP_STRING) + if (object->string_type == SEARCH_STR_TYPE_APP_STRING) { return strdup(gettext(object->name)); - else + } else { return strdup(dgettext("sys_string", object->name)); } - - return strdup(""); } static char *__search_gl_label_get_more(void *data, Evas_Object * obj, @@ -255,6 +358,12 @@ static void __search_gl_del(void *data, Evas_Object * obj) struct search_item_sel *sel_mem_info = (struct search_item_sel *)data; SEARCH_RET_IF(sel_mem_info == NULL); + SEARCH_FREE(sel_mem_info->icon1); + SEARCH_FREE(sel_mem_info->icon2); + SEARCH_FREE(sel_mem_info->text1); + SEARCH_FREE(sel_mem_info->text2); + SEARCH_FREE(sel_mem_info->launch_path); + SEARCH_FREE(sel_mem_info->launch_param); SEARCH_FREE(sel_mem_info); return; @@ -437,6 +546,9 @@ void search_gl_phone_result_sel(void *data, Evas_Object * obj, void *event_info) SEARCH_DEBUG_LOG("cur_category_mem->type : %d", cur_category_mem->type); + elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_NONE); + elm_object_scroll_freeze_push(obj); + switch (cur_category_mem->type) { case SEARCH_CONT_PHONE_CONTACTS: search_launch_contact_view(ad, cur_category_mem); @@ -754,7 +866,6 @@ void search_stop_search(void *data) SEARCH_FUNC_START; struct appdata *ad = (struct appdata *)data; - int category = ad->search_category; SEARCH_RET_IF(ad == NULL); @@ -814,8 +925,8 @@ void search_result_gl_init(void *data) if (ad->itc_pslist_1line == NULL) { ad->itc_pslist_1line = elm_genlist_item_class_new(); ad->itc_pslist_1line->item_style = "1text.tb"; - ad->itc_pslist_1line->func.text_get = __search_gl_label_get_search_item_type; - ad->itc_pslist_1line->func.content_get = __search_gl_content_get_search_item_type; + ad->itc_pslist_1line->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_1line->func.content_get = __search_gl_content_get_genlist_item_type; ad->itc_pslist_1line->func.state_get = __search_gl_state_get; ad->itc_pslist_1line->func.del = __search_gl_del; } @@ -823,17 +934,26 @@ void search_result_gl_init(void *data) if (ad->itc_pslist_1line_1icon == NULL) { ad->itc_pslist_1line_1icon = elm_genlist_item_class_new(); ad->itc_pslist_1line_1icon->item_style = "1text.1icon.2.tb"; - ad->itc_pslist_1line_1icon->func.text_get = __search_gl_label_get_search_item_type; - ad->itc_pslist_1line_1icon->func.content_get = __search_gl_content_get_search_item_type; + ad->itc_pslist_1line_1icon->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_1line_1icon->func.content_get = __search_gl_content_get_genlist_item_type; ad->itc_pslist_1line_1icon->func.state_get = __search_gl_state_get; ad->itc_pslist_1line_1icon->func.del = __search_gl_del; } + if (ad->itc_pslist_1line_1icon_browser_history== NULL) { + ad->itc_pslist_1line_1icon_browser_history = elm_genlist_item_class_new(); + ad->itc_pslist_1line_1icon_browser_history->item_style = "1text.1icon.2.tb"; + ad->itc_pslist_1line_1icon_browser_history->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_1line_1icon_browser_history->func.content_get = __search_gl_content_get_genlist_history_item_type; + ad->itc_pslist_1line_1icon_browser_history->func.state_get = __search_gl_state_get; + ad->itc_pslist_1line_1icon_browser_history->func.del = __search_gl_del; + } + if (ad->itc_pslist_1line_2icon == NULL) { ad->itc_pslist_1line_2icon = elm_genlist_item_class_new(); ad->itc_pslist_1line_2icon->item_style = "1text.2icon.6.tb"; - ad->itc_pslist_1line_2icon->func.text_get = __search_gl_label_get_search_item_type; - ad->itc_pslist_1line_2icon->func.content_get = __search_gl_content_get_search_item_type; + ad->itc_pslist_1line_2icon->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_1line_2icon->func.content_get = __search_gl_content_get_genlist_item_type; ad->itc_pslist_1line_2icon->func.state_get = __search_gl_state_get; ad->itc_pslist_1line_2icon->func.del = __search_gl_del; } @@ -841,8 +961,8 @@ void search_result_gl_init(void *data) if (ad->itc_pslist_2line_1icon == NULL) { ad->itc_pslist_2line_1icon = elm_genlist_item_class_new(); ad->itc_pslist_2line_1icon->item_style = "2text.1icon.4.tb"; - ad->itc_pslist_2line_1icon->func.text_get = __search_gl_label_get_search_item_type; - ad->itc_pslist_2line_1icon->func.content_get = __search_gl_content_get_search_item_type; + ad->itc_pslist_2line_1icon->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_2line_1icon->func.content_get = __search_gl_content_get_genlist_item_type; ad->itc_pslist_2line_1icon->func.state_get = __search_gl_state_get; ad->itc_pslist_2line_1icon->func.del = __search_gl_del; } @@ -850,28 +970,30 @@ void search_result_gl_init(void *data) if (ad->itc_pslist_2line_2icon == NULL) { ad->itc_pslist_2line_2icon = elm_genlist_item_class_new(); ad->itc_pslist_2line_2icon->item_style = "2text.2icon.4.tb"; - ad->itc_pslist_2line_2icon->func.text_get = __search_gl_label_get_search_item_type; - ad->itc_pslist_2line_2icon->func.content_get = __search_gl_content_get_search_item_type; + ad->itc_pslist_2line_2icon->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_2line_2icon->func.content_get = __search_gl_content_get_genlist_item_type; ad->itc_pslist_2line_2icon->func.state_get = __search_gl_state_get; ad->itc_pslist_2line_2icon->func.del = __search_gl_del; } + if (ad->itc_pslist_2line_2icon_browser_bookmark == NULL) { + ad->itc_pslist_2line_2icon_browser_bookmark = elm_genlist_item_class_new(); + ad->itc_pslist_2line_2icon_browser_bookmark->item_style = "2text.2icon.4.tb"; + ad->itc_pslist_2line_2icon_browser_bookmark->func.text_get = __search_gl_label_get_genlist_item_type; + ad->itc_pslist_2line_2icon_browser_bookmark->func.state_get = __search_gl_state_get; + ad->itc_pslist_2line_2icon_browser_bookmark->func.content_get = __search_gl_content_get_genlist_bookmark_item_type; + ad->itc_pslist_2line_2icon_browser_bookmark->func.del = __search_gl_del; + } + + if (ad->itc_grouptitle == NULL) { ad->itc_grouptitle = elm_genlist_item_class_new(); - ad->itc_grouptitle->item_style = "grouptitle"; + ad->itc_grouptitle->item_style = "groupindex"; ad->itc_grouptitle->func.text_get = __search_gl_label_get_group; ad->itc_grouptitle->func.state_get = __search_gl_state_get; ad->itc_grouptitle->func.del = __search_gl_del_grouptitle; } - if (ad->itc_label == NULL) { - ad->itc_label = elm_genlist_item_class_new(); - ad->itc_label->item_style = "grouptitle"; - ad->itc_label->func.text_get = __search_gl_label_get_normal_type; - ad->itc_label->func.state_get = __search_gl_state_get; - ad->itc_label->func.del = __search_gl_del_grouptitle; - } - if (ad->itc_listmore == NULL) { ad->itc_listmore = elm_genlist_item_class_new(); ad->itc_listmore->item_style = "1text.tb"; @@ -915,6 +1037,9 @@ void search_result_gl_deinit(void *data) if (ad->itc_pslist_1line_1icon != NULL) elm_genlist_item_class_free(ad->itc_pslist_1line_1icon); + if (ad->itc_pslist_1line_1icon_browser_history != NULL) + elm_genlist_item_class_free(ad->itc_pslist_1line_1icon_browser_history); + if (ad->itc_pslist_1line_2icon != NULL) elm_genlist_item_class_free(ad->itc_pslist_1line_2icon); @@ -924,12 +1049,12 @@ void search_result_gl_deinit(void *data) if (ad->itc_pslist_2line_2icon != NULL) elm_genlist_item_class_free(ad->itc_pslist_2line_2icon); + if (ad->itc_pslist_2line_2icon_browser_bookmark != NULL) + elm_genlist_item_class_free(ad->itc_pslist_2line_2icon_browser_bookmark); + if (ad->itc_grouptitle != NULL) elm_genlist_item_class_free(ad->itc_grouptitle); - if (ad->itc_label != NULL) - elm_genlist_item_class_free(ad->itc_label); - if (ad->itc_listmore != NULL) elm_genlist_item_class_free(ad->itc_listmore); @@ -1028,6 +1153,8 @@ void search_set_result_list(void *data) if (ret < 0) { SEARCH_DEBUG_WARNING("Error : set keyword to vconf"); } + + SEARCH_FREE(text); } /* If category is Phone, make a thread for search */ diff --git a/src/ps_searcher.cpp b/src/ps_searcher.cpp index b9bc033..1b8abed 100755 --- a/src/ps_searcher.cpp +++ b/src/ps_searcher.cpp @@ -205,6 +205,7 @@ int search_sql_contact_search_result_by_api(struct search_content_object *obj, do { struct search_item_sel *sel_mem_info = NULL; struct search_genlist_item_info *gen_item = NULL; + Elm_Genlist_Item_Class *itc_style = NULL; int contact_id = -1; char *contact_img_path = NULL; @@ -213,6 +214,7 @@ int search_sql_contact_search_result_by_api(struct search_content_object *obj, const char *text_1line = NULL; const char *text_2line = NULL; bool is_word_in_str = false; + char contact_id_str[MAX_LENGTH_PER_ID] = {0,}; loop_cnt++; @@ -221,6 +223,12 @@ int search_sql_contact_search_result_by_api(struct search_content_object *obj, } sel_mem_info = (struct search_item_sel *)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", loop_cnt); + continue; + } + sel_mem_info->type = obj->contents_type; contacts_record_h record; @@ -228,48 +236,43 @@ int search_sql_contact_search_result_by_api(struct search_content_object *obj, contacts_record_get_str_p(record, _contacts_person.image_thumbnail_path, &contact_img_path); if (contact_img_path != NULL) { - strncpy(sel_mem_info->icon1_path, contact_img_path, - MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(contact_img_path); + } + else if (obj->obj_icon_path) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } - else if (obj->obj_icon_path) - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); contacts_record_get_str_p(record, _contacts_person.display_name, &str_display); contacts_record_get_str_p(record, _contacts_number.number, &num_display); if (str_display != NULL) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(str_display, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); text_1line = str_display; } if (num_display != NULL) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(num_display, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); text_2line = num_display; } - if (text_1line == NULL && text_2line != NULL) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(text_2line, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + if (text_1line != NULL && text_2line != NULL) { + sel_mem_info->text1 = strdup(search_markup_keyword(str_display, keyword, &is_word_in_str)); + sel_mem_info->text2 = strdup(search_markup_keyword(num_display, keyword, &is_word_in_str)); + itc_style = ad->itc_pslist_2line_1icon; + } else { + if (text_1line) { + sel_mem_info->text1 = strdup(search_markup_keyword(str_display, keyword, &is_word_in_str)); + } + else { + sel_mem_info->text2 = strdup(search_markup_keyword(num_display, keyword, &is_word_in_str)); } - - if (text_1line != NULL && text_2line == NULL) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(text_1line, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + itc_style = ad->itc_pslist_1line_1icon; } contacts_record_get_int(record, _contacts_person.id, &contact_id); - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID - 1, "%d", - contact_id); + snprintf(contact_id_str, MAX_LENGTH_PER_ID - 1, "%d", contact_id); + sel_mem_info->launch_param= strdup(contact_id_str); gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, - obj, ad->itc_pslist_2line_1icon, sel_mem_info, + obj, itc_style, sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); }while (contacts_list_next(list) == CONTACTS_ERROR_NONE); @@ -330,7 +333,6 @@ int search_sql_calendar_search_result_by_api(struct search_content_object *obj, calendar_filter_h visibility_filter = NULL; calendar_list_h list = NULL; - calendar_error_e CALENDAR_ERROR_NONE; calendar_query_create(_calendar_event._uri, &query); ret = calendar_filter_create(_calendar_event._uri, &visibility_filter); @@ -386,49 +388,49 @@ int search_sql_calendar_search_result_by_api(struct search_content_object *obj, char *summary = NULL; bool is_word_in_str = false; char format_val[MAX_LENGTH_PER_LINE] = {0,}; + char calendar_id_str[MAX_LENGTH_PER_ID] = {0,}; calendar_record_h record; calendar_time_s cal; calendar_list_get_current_record_p(list, &record); sel_mem_info = (struct search_item_sel *)calloc(1,sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", loop_cnt); + continue; + } + sel_mem_info->type = obj->contents_type; /* Set Thumbnail Image */ if (obj->obj_icon_path) { - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } /* Set text 1line - Summary */ calendar_record_get_str_p(record, _calendar_event.summary, &summary); if ((summary) && (strlen(summary) > 0)) { - strncpy(sel_mem_info->main_buf, search_markup_keyword(summary, keyword, - &is_word_in_str), MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(search_markup_keyword(summary, keyword, &is_word_in_str)); } /* Set text 2line - Date */ calendar_record_get_caltime(record, _calendar_event.start_time, &cal); if (cal.type == CALENDAR_TIME_UTIME) { - search_util_date_time_format_get_val(cal.time.utime, format_val, - SEARCH_DATE_TYPE_YYMMDD); - snprintf(sel_mem_info->sub_buf, MAX_LENGTH_PER_LINE, "%s", - format_val); + search_util_date_time_format_get_val(cal.time.utime, format_val, SEARCH_DATE_TYPE_YYMMDD); } else { - search_util_date_time_format_get_val(cal.time.utime, format_val, - SEARCH_DATE_TYPE_YYMM); - snprintf(sel_mem_info->sub_buf, MAX_LENGTH_PER_LINE, "%s", - format_val); + search_util_date_time_format_get_val(cal.time.utime, format_val, SEARCH_DATE_TYPE_YYMM); } + sel_mem_info->text2 = strdup(format_val); /* Set id for launching caledar contents */ calendar_record_get_int (record, _calendar_event.id, &main_id); - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID - 1, "%d", main_id); + snprintf(calendar_id_str, MAX_LENGTH_PER_ID - 1, "%d", main_id); + sel_mem_info->launch_param = strdup(calendar_id_str); - gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, - ad->itc_pslist_2line_1icon, sel_mem_info, - obj->gl_result_grp); + gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, ad->itc_pslist_2line_1icon, + sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); } while (calendar_list_next(list) == CALENDAR_ERROR_NONE); @@ -488,6 +490,8 @@ static void __search_sql_memo_search_result_cb(memo_data_t * value, char *keyword = scd->keyword; bool is_word_in_str = false; + char memo_id_str[MAX_LENGTH_PER_ID] = {0,}; + char format_val[MAX_LENGTH_PER_LINE] = {0,}; SEARCH_RET_IF(scd == NULL); ad = scd->ad; @@ -508,43 +512,39 @@ static void __search_sql_memo_search_result_cb(memo_data_t * value, if (obj->mr_info.next_point < obj->mr_info.offset + SEARCH_CATEGORY_LIST_MORE_CNT) { - sel_mem_info = - (struct search_item_sel *)calloc(1, - sizeof(struct - search_item_sel)); + sel_mem_info = (struct search_item_sel*)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", obj->mr_info.next_point); + return; + } + sel_mem_info->type = obj->contents_type; /********** START : set search result to sel_mem_info buf ************/ - if (obj->obj_icon_path) - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + if (obj->obj_icon_path) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); + } /* First, We should check comment field. It means drawing memo * If comment field is NULL, then we check content field */ if ((value->comment) && (strlen(value->comment) > 0)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(value->comment, keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(search_markup_keyword(value->comment, keyword, &is_word_in_str)); } else if ((value->content) && (strlen(value->content) > 0)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(value->content, keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(search_markup_keyword(value->content, keyword, &is_word_in_str)); } - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID - 1, "%d", value->id); - search_util_date_time_format_get_val(value->modi_time, - sel_mem_info->sub_buf, SEARCH_DATE_TYPE_YYMM); + search_util_date_time_format_get_val(value->modi_time, format_val, SEARCH_DATE_TYPE_YYMM); + sel_mem_info->text2 = strdup(format_val); + + snprintf(memo_id_str, MAX_LENGTH_PER_ID - 1, "%d", value->id); + sel_mem_info->launch_param = strdup(memo_id_str); /********** END : set search result to sel_mem_info buf *************/ - gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, - obj, - ad->itc_pslist_2line_1icon, - sel_mem_info, - obj->gl_result_grp); + gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, ad->itc_pslist_2line_1icon, + sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); obj->mr_info.next_point++; @@ -622,6 +622,8 @@ int search_sql_email_search_result_by_api(struct search_content_object *obj, SEARCH_RETV_IF(ad == NULL, SEARCH_RET_SEARCH_FAIL); + int search_ret = SEARCH_RET_SEARCH_FAIL; + filter_list = (email_list_filter_t *)malloc(sizeof(email_list_filter_t) * filter_list_count); memset(filter_list, 0 , sizeof(email_list_filter_t) * filter_list_count); @@ -658,23 +660,23 @@ int search_sql_email_search_result_by_api(struct search_content_object *obj, ret = email_get_mail_list_ex(filter_list, filter_list_count, sorting_rule_list, sorting_rule_list_count, offset, limit, &mail_list, &mail_count); - SEARCH_FREE(filter_list); - SEARCH_FREE(sorting_rule_list); + if (ret != EMAIL_ERROR_NONE) { SEARCH_DEBUG_WARNING("no email search result"); - return SEARCH_RET_SEARCH_FAIL; + goto out_func; } if(mail_list == NULL) { SEARCH_DEBUG_WARNING("mail_list is null"); - return SEARCH_RET_SEARCH_NONE; + search_ret = SEARCH_RET_SEARCH_NONE; + goto out_func; } if (mail_count == 0) { SEARCH_DEBUG_WARNING("no email search result"); - SEARCH_FREE(mail_list); - return SEARCH_RET_SEARCH_NONE; + search_ret = SEARCH_RET_SEARCH_NONE; + goto out_func; } /* Set group title */ @@ -688,53 +690,50 @@ int search_sql_email_search_result_by_api(struct search_content_object *obj, /* Set search result to genlist */ for(i = 0 ; i < mail_count ; i++) { + char email_id_str[MAX_LENGTH_PER_ID] = {0,}; + char email_path_str[MAX_LENGTH_PER_PATH] = {0,}; if(i == limit -1) break; - sel_mem_info = (struct search_item_sel *)calloc(1, - sizeof(struct search_item_sel)); + sel_mem_info = (struct search_item_sel*)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", i); + continue; + } sel_mem_info->type = obj->contents_type; - if (obj->obj_icon_path) - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + if (obj->obj_icon_path) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); + + } + + snprintf(email_id_str, MAX_LENGTH_PER_ID - 1, "%d", mail_list[i].mail_id); + sel_mem_info->launch_param = strdup(email_id_str); - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID - 1, "%d", mail_list[i].mail_id); - snprintf(sel_mem_info->path, MAX_LENGTH_PER_PATH - 1, "%d %d %d", + snprintf(email_path_str, MAX_LENGTH_PER_PATH - 1, "%d %d %d", mail_list[i].account_id, mail_list[i].mail_id, mail_list[i].mailbox_id); + sel_mem_info->launch_path = strdup(email_path_str); - if((mail_list[i].subject) && (strlen(mail_list[i].subject) > 0)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(mail_list[i].subject, ad->search_word, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + if(strlen(mail_list[i].subject) > 0) { + sel_mem_info->text1 = strdup(search_markup_keyword(mail_list[i].subject, ad->search_word, &is_word_in_str)); } - if((mail_list[i].full_address_from) - && (strlen(mail_list[i].full_address_from) > 0)) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(mail_list[i].full_address_from, ad->search_word, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + if(strlen(mail_list[i].full_address_from) > 0) { + sel_mem_info->text2 = strdup(search_markup_keyword(mail_list[i].full_address_from, ad->search_word, &is_word_in_str)); } if(is_word_in_str == false && (strlen(mail_list[i].email_address_recipient) > 0)) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(mail_list[i].email_address_recipient, ad->search_word, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(search_markup_keyword(mail_list[i].email_address_recipient, ad->search_word, &is_word_in_str)); } - gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, - obj, - ad->itc_pslist_2line_1icon, - sel_mem_info, - obj->gl_result_grp); + gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, ad->itc_pslist_2line_1icon, sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); } - SEARCH_FREE(mail_list); - /* Set more title to genlist (under 'search all') */ if (mail_count == limit) { obj->mr_info.next_point = offset + mail_count - 1; @@ -750,9 +749,15 @@ int search_sql_email_search_result_by_api(struct search_content_object *obj, sel_mem_more, obj->gl_result_grp); } + search_ret = SEARCH_RET_SEARCH_SUCCESS; + +out_func: + SEARCH_FREE(filter_list); + SEARCH_FREE(sorting_rule_list); + SEARCH_FREE(mail_list); SEARCH_FUNC_END; - return SEARCH_RET_SEARCH_SUCCESS; + return search_ret; } static bool __search_media_info_cb(media_info_h media, void *user_data) @@ -773,6 +778,7 @@ static bool __search_media_info_cb(media_info_h media, void *user_data) char *keyword = NULL; struct search_genlist_item_info *gen_item = NULL; + char media_id_str[MAX_LENGTH_PER_PATH] = {0,}; SEARCH_RETV_IF(scd == NULL, true); ad = scd->ad; @@ -787,34 +793,33 @@ static bool __search_media_info_cb(media_info_h media, void *user_data) media_info_get_file_path(media, &media_path); media_info_get_thumbnail_path(media, &media_thumbnail); - sel_mem_info = (struct search_item_sel *)calloc(1, - sizeof(struct search_item_sel)); + sel_mem_info = (struct search_item_sel*)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", media_id); + return true; + } sel_mem_info->type = obj->contents_type; - if ((media_thumbnail) && (strlen(media_thumbnail) > 0) - && ecore_file_exists(media_thumbnail) == EINA_TRUE) { - strncpy(sel_mem_info->icon1_path, media_thumbnail, - MAX_LENGTH_PER_PATH - 1); - } else if (obj->obj_icon_path) - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + if ((media_thumbnail) && ecore_file_exists(media_thumbnail) == EINA_TRUE) { + sel_mem_info->icon1 = strdup(media_thumbnail); + } else if (obj->obj_icon_path) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); + } if (media_name && strlen(media_name)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(media_name, - keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(search_markup_keyword(media_name, keyword, &is_word_in_str)); } - if (media_id) - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID, "%s", - media_id); + if (media_id) { + snprintf(media_id_str, MAX_LENGTH_PER_ID, "%s", media_id); + sel_mem_info->launch_param = strdup(media_id_str); + } - if (media_path) - snprintf(sel_mem_info->path, MAX_LENGTH_PER_PATH - 1, "%s", - media_path); + if (media_path) { + sel_mem_info->launch_path = strdup(media_path); + } itc_style = ad->itc_pslist_1line_1icon; @@ -859,6 +864,7 @@ static bool __search_sql_music_info_cb(media_info_h media, void *user_data) char *keyword = NULL; struct search_genlist_item_info *gen_item = NULL; + char music_id_str[MAX_LENGTH_PER_PATH] = {0,}; SEARCH_RETV_IF(scd == NULL, true); ad = scd->ad; @@ -885,51 +891,36 @@ static bool __search_sql_music_info_cb(media_info_h media, void *user_data) audio_meta_destroy(a_handle); - sel_mem_info = (struct search_item_sel *)calloc(1, - sizeof(struct search_item_sel)); + sel_mem_info = (struct search_item_sel *)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", media_id); + return true; + } sel_mem_info->type = obj->contents_type;; - if ((media_thumbnail) && (strlen(media_thumbnail) > 0) - && ecore_file_exists(media_thumbnail) == EINA_TRUE) { - strncpy(sel_mem_info->icon1_path , media_thumbnail, - MAX_LENGTH_PER_PATH -1 ); + if ((media_thumbnail) && ecore_file_exists(media_thumbnail) == EINA_TRUE) { + sel_mem_info->icon1 = strdup(media_thumbnail); } else if(obj->obj_icon_path) { - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } if ((title) && (strlen(title) > 0)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(title, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(search_markup_keyword(title, keyword, &is_word_in_str)); } if (is_word_in_str) { if ((artist) && (strlen(artist) > 0)) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(artist, - keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(search_markup_keyword(artist, keyword, &is_word_in_str)); } } else { - memset(sel_mem_info->sub_buf, '\0', MAX_LENGTH_PER_LINE); - if ((artist) && (strlen(artist) > 0)) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(artist, - keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(search_markup_keyword(artist, keyword, &is_word_in_str)); } if (is_word_in_str == false && (album) && (strlen(album) > 0)) { - strncpy(sel_mem_info->sub_buf, - search_markup_keyword(album, - keyword, - &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(search_markup_keyword(album, keyword, &is_word_in_str)); } if (is_word_in_str == false) { @@ -939,25 +930,23 @@ static bool __search_sql_music_info_cb(media_info_h media, void *user_data) if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL) { itc_style = ad->itc_pslist_2line_2icon; - strncpy(sel_mem_info->icon2_path, SEARCH_SDCARD_ICON, - MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon2 = strdup(SEARCH_SDCARD_ICON); } else { itc_style = ad->itc_pslist_2line_1icon; } - if (media_id) - snprintf(sel_mem_info->main_id, - MAX_LENGTH_PER_ID - 1, "%s", media_id); + if (media_id) { + snprintf(music_id_str, MAX_LENGTH_PER_ID - 1, "%s", media_id); + sel_mem_info->launch_param = strdup(music_id_str); + } - if (media_path) - strncpy(sel_mem_info->path, media_path, MAX_LENGTH_PER_PATH); + if (media_path) { + sel_mem_info->launch_path = strdup(media_path); + } /* Add Information to genlist */ - gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, - obj, - itc_style, - sel_mem_info, + gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, itc_style, sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); @@ -1289,6 +1278,12 @@ ail_cb_ret_e __search_sql_menu_search_result_cb( obj->mr_info.offset + SEARCH_CATEGORY_LIST_MORE_CNT) { sel_mem_info = (struct search_item_sel *)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", obj->mr_info.loop_cnt); + return AIL_CB_RET_CONTINUE; + } + sel_mem_info->type = obj->contents_type;; /********** START : set search result to sel_mem_info buf ************/ @@ -1300,7 +1295,7 @@ ail_cb_ret_e __search_sql_menu_search_result_cb( ail_appinfo_get_str(appinfo, AIL_PROP_ICON_STR, &icon); if (icon) { - strncpy(sel_mem_info->icon1_path, icon, MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(icon); } ail_appinfo_get_str(appinfo, AIL_PROP_PACKAGE_STR, &package); @@ -1313,8 +1308,7 @@ ail_cb_ret_e __search_sql_menu_search_result_cb( return AIL_CB_RET_CONTINUE; } - strncpy(sel_mem_info->path, package, MAX_LENGTH_PER_PATH - 1); - + sel_mem_info->launch_path = strdup(package); SEARCH_DEBUG_LOG("package : %s", package); } else { SEARCH_DEBUG_LOG("package : null"); @@ -1322,10 +1316,7 @@ ail_cb_ret_e __search_sql_menu_search_result_cb( ail_appinfo_get_str(appinfo, AIL_PROP_NAME_STR, &name); if ((name) && (strlen(name) > 0)) { - strncpy(sel_mem_info->main_buf, - search_markup_keyword(name, keyword, &is_word_in_str), - MAX_LENGTH_PER_LINE - 1); - + sel_mem_info->text1 = strdup(search_markup_keyword(name, keyword, &is_word_in_str)); SEARCH_DEBUG_LOG("name : %s", name); } else { SEARCH_DEBUG_LOG("name : null"); @@ -1500,8 +1491,8 @@ bool __search_sql_browser_bookmark_result_cb(favorites_bookmark_entry_s *item, v return true; } - if (info->next_point < - info->offset + SEARCH_CATEGORY_LIST_MORE_CNT) { + if (info->next_point < info->offset + SEARCH_CATEGORY_LIST_MORE_CNT) { + char bookmark_id_str[MAX_LENGTH_PER_PATH] = {0,}; /********** START : set search result to sel_mem_info buf ************/ @@ -1524,29 +1515,33 @@ bool __search_sql_browser_bookmark_result_cb(favorites_bookmark_entry_s *item, v } sel_mem_info = (struct search_item_sel *)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", info->loop_cnt); + return true; + } + sel_mem_info->type = obj->contents_type; + snprintf(bookmark_id_str, MAX_LENGTH_PER_ID - 1, "%d", item->id); + sel_mem_info->launch_param = strdup(bookmark_id_str); if (match_str_title) { - strncpy(sel_mem_info->main_buf, match_str_title, MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(match_str_title); } if (match_str_addr) { - strncpy(sel_mem_info->sub_buf, match_str_addr, MAX_LENGTH_PER_LINE - 1); - strncpy(sel_mem_info->path, item->address, MAX_LENGTH_PER_PATH - 1); + sel_mem_info->text2 = strdup(match_str_addr); + sel_mem_info->launch_path= strdup(item->address); } if (obj->obj_icon_path) { - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } - strncpy(sel_mem_info->icon2_path, - SEARCH_FAVORITE_ICON, - MAX_LENGTH_PER_PATH - 1); - + sel_mem_info->icon2 = strdup(SEARCH_FAVORITE_ICON); gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, - ad->itc_pslist_2line_2icon, + ad->itc_pslist_2line_2icon_browser_bookmark, sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); @@ -1601,8 +1596,8 @@ bool __search_sql_browser_history_result_cb(favorites_history_entry_s *item, voi return true; } - if (info->next_point < - info->offset + SEARCH_CATEGORY_LIST_MORE_CNT) { + if (info->next_point < info->offset + SEARCH_CATEGORY_LIST_MORE_CNT) { + char history_id_str[MAX_LENGTH_PER_PATH] = {0,}; /********** START : set search result to sel_mem_info buf ************/ @@ -1621,22 +1616,29 @@ bool __search_sql_browser_history_result_cb(favorites_history_entry_s *item, voi } sel_mem_info = (struct search_item_sel *)calloc(1, sizeof(struct search_item_sel)); + + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", info->loop_cnt); + return true; + } + sel_mem_info->type = obj->contents_type; + snprintf(history_id_str, MAX_LENGTH_PER_ID - 1, "%d", item->id); + sel_mem_info->launch_param = strdup(history_id_str); - if (obj->obj_icon_path) - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, - MAX_LENGTH_PER_PATH - 1); + if (obj->obj_icon_path) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); + } - if (item->address) - strncpy(sel_mem_info->path, item->address, MAX_LENGTH_PER_PATH - 1); + if (item->address) { + sel_mem_info->launch_path = strdup(item->address); + } - strncpy(sel_mem_info->main_buf, - match_str, - MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text1 = strdup(match_str); gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, - ad->itc_pslist_1line_1icon, + ad->itc_pslist_1line_1icon_browser_history, sel_mem_info, obj->gl_result_grp); result_info->itemlist = g_list_append(result_info->itemlist, (void*)gen_item); @@ -1762,7 +1764,7 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, SEARCH_FUNC_START; int loop_cnt = 0; - int ret = 0; + int ret = SEARCH_RET_SEARCH_FAIL; struct search_item_sel *sel_mem_info = NULL; struct search_item_more_sel *sel_mem_more = NULL; @@ -1786,28 +1788,26 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, err = msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID); if (err != MSG_SUCCESS) { SEARCH_DEBUG_WARNING("Fail to make search struct : MSG_SEARCH_CONDITION_FOLDERID_INT"); - return SEARCH_RET_SEARCH_FAIL; + goto out_func; }; err = msg_set_int_value(search_s, MSG_SEARCH_CONDITION_MSGTYPE_INT, MSG_TYPE_INVALID); if (err != MSG_SUCCESS) { SEARCH_DEBUG_WARNING("Fail to make search struct : MSG_SEARCH_CONDITION_MSGTYPE_INT"); - return SEARCH_RET_SEARCH_FAIL; + goto out_func; } err = msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, keyword, strlen(keyword)); if (err != MSG_SUCCESS) { SEARCH_DEBUG_WARNING("Fail to make search struct : MSG_SEARCH_CONDITION_SEARCH_VALUE_STR"); - return SEARCH_RET_SEARCH_FAIL; + goto out_func; } err = msg_search_message(ad->msg_handle, search_s, offset, limit, &msgList); - msg_release_struct(&search_s); - if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) { SEARCH_DEBUG_WARNING("msg_search_message is failed : %d", err); - return SEARCH_RET_SEARCH_FAIL; + goto out_func; } if (msgList.nCount <= 0) { @@ -1850,9 +1850,14 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, char str_number[MAX_ADDRESS_VAL_LEN] = {0,}; char str_name[MAX_DISPLAY_NAME_LEN] = {0,}; char msg_text[MAX_MSG_TEXT_LEN] = {0,}; + char msg_id_str[MAX_LENGTH_PER_PATH] = {0,}; + + sel_mem_info = (struct search_item_sel *)calloc(1,sizeof(struct search_item_sel)); + if (!sel_mem_info) { + SEARCH_DEBUG_WARNING("[%d] Fail to make a genlist select info item!", i); + return true; + } - sel_mem_info = (struct search_item_sel *) - calloc(1,sizeof(struct search_item_sel)); sel_mem_info->type = obj->contents_type;; err = msg_get_int_value(msgList.msg_struct_info[i], MSG_MESSAGE_ID_INT, &message_id); @@ -1860,7 +1865,9 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, SEARCH_DEBUG_WARNING("Fail to make search struct : MSG_MESSAGE_ID_INT %d", err); goto out_func; } - snprintf(sel_mem_info->main_id, MAX_LENGTH_PER_ID - 1, "%d", message_id); + + snprintf(msg_id_str, MAX_LENGTH_PER_ID - 1, "%d", message_id); + sel_mem_info->launch_param= strdup(msg_id_str); err = msg_get_int_value(msgList.msg_struct_info[i], MSG_MESSAGE_TYPE_INT, &msg_type); if (err != MSG_SUCCESS) { @@ -1882,9 +1889,7 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, } text_1line = subject; - markup_keyword = search_markup_keyword(text_1line, - keyword, - &is_word_in_title); + markup_keyword = search_markup_keyword(text_1line, keyword,&is_word_in_title); if (!is_word_in_title) { memset(msg_text, 0x00, sizeof(msg_text)); @@ -1907,8 +1912,9 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, SEARCH_DEBUG_LOG("1st string : %s", text_1line); - if ((text_1line) && (strlen(text_1line) > 0 )) - strncpy(sel_mem_info->main_buf, markup_keyword, MAX_LENGTH_PER_LINE - 1); + if ((text_1line) && (strlen(text_1line) > 0 )) { + sel_mem_info->text1 = strdup(markup_keyword); + } } else { /* SMS Case */ err = msg_get_str_value(msgList.msg_struct_info[i], @@ -1928,8 +1934,9 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, &is_word_in_title); SEARCH_DEBUG_LOG("1st string : %s", text_1line); - if ((text_1line) && (strlen(text_1line) > 0)) - strncpy(sel_mem_info->main_buf, markup_keyword, MAX_LENGTH_PER_LINE - 1); + if ((text_1line) && (strlen(text_1line) > 0)) { + sel_mem_info->text1 = strdup(markup_keyword); + } } err = msg_get_list_handle(msgList.msg_struct_info[i], @@ -1981,12 +1988,12 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, /* Set text_2line */ markup_keyword = search_markup_keyword(str_number, keyword, &is_word_in_str); - if (j == 0 || is_word_in_str == true) { + if (j == 0) { if (strlen(str_name) > 0) { - strncpy(sel_mem_info->sub_buf, str_name, MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(str_name); } } else { - strncpy(sel_mem_info->sub_buf, markup_keyword, MAX_LENGTH_PER_LINE - 1); + sel_mem_info->text2 = strdup(markup_keyword); } /* Check Whether Thumbnail Image exist or not */ @@ -1996,14 +2003,12 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, contacts_list_h list; unsigned int count = 0; - img_path = obj->obj_icon_path; - ret = contacts_connect2(); if (ret != CONTACTS_ERROR_NONE) { SEARCH_DEBUG_WARNING("Fail to connect contact service!"); - if (img_path != NULL) { - strncpy(sel_mem_info->icon1_path, img_path, MAX_LENGTH_PER_PATH - 1); + if (obj->obj_icon_path != NULL) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } continue; } else { @@ -2022,15 +2027,16 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, } if (img_path != NULL) { - strncpy(sel_mem_info->icon1_path , img_path, - MAX_LENGTH_PER_PATH -1 ); + sel_mem_info->icon1 = strdup(img_path); + } else if (obj->obj_icon_path != NULL) { + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } contacts_list_destroy(list, true); ret = contacts_disconnect2(); } } else { if (obj->obj_icon_path) { - strncpy(sel_mem_info->icon1_path, obj->obj_icon_path, MAX_LENGTH_PER_PATH - 1); + sel_mem_info->icon1 = strdup(obj->obj_icon_path); } } @@ -2039,8 +2045,6 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, } } - SEARCH_DEBUG_LOG("sel_mem_info->sub_buf : %s", sel_mem_info->sub_buf); - gen_item = search_add_genlist_item(SEARCH_GENLIST_ITEM, obj, ad->itc_pslist_2line_1icon, @@ -2071,6 +2075,9 @@ int search_sql_msg_search_result_by_api(struct search_content_object *obj, } out_func: + if (search_s != NULL) { + msg_release_struct(&search_s); + } SEARCH_FUNC_END; return ret; } diff --git a/src/search_bar.cpp b/src/search_bar.cpp index 72d4c0a..203ae62 100755 --- a/src/search_bar.cpp +++ b/src/search_bar.cpp @@ -279,6 +279,7 @@ Evas_Object *search_searchbar_category_icon_add(char* img, Evas_Object *parent, char buf[MAX_LENGTH_PER_PATH] = { 0, }; Evas_Object* cate_icon = NULL; + double scale = elm_config_scale_get(); if (img != NULL ) { cate_icon = elm_icon_add(parent); @@ -297,8 +298,8 @@ Evas_Object *search_searchbar_category_icon_add(char* img, Evas_Object *parent, elm_image_resizable_set(cate_icon, EINA_FALSE, EINA_FALSE); } - evas_object_size_hint_min_set(cate_icon, width * elm_scale_get(), height * elm_scale_get()); - evas_object_size_hint_max_set(cate_icon, width * elm_scale_get(), height * elm_scale_get()); + evas_object_size_hint_min_set(cate_icon, width * scale, height * scale); + evas_object_size_hint_max_set(cate_icon, width * scale, height * scale); } SEARCH_FUNC_END; diff --git a/src/smartsearch.cpp b/src/smartsearch.cpp index fdef7af..fe1e9d1 100755 --- a/src/smartsearch.cpp +++ b/src/smartsearch.cpp @@ -647,10 +647,18 @@ static void __search_app_resume(void *data) SEARCH_FUNC_START; struct appdata *ad = (struct appdata *)data; + SEARCH_RET_IF(ad == NULL); if (ad->win_main) { elm_object_focus_set(ad->back_btn, EINA_FALSE); } + + elm_genlist_select_mode_set(ad->search_gl, ELM_OBJECT_SELECT_MODE_DEFAULT); + + if (elm_object_scroll_freeze_get(ad->search_gl) > 0) { + elm_object_scroll_freeze_pop(ad->search_gl); + } + SEARCH_FUNC_END; } |