2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "email-composer.h"
21 #include "email-composer-recipient.h"
22 #include "email-composer-util.h"
23 #include "email-composer-contents.h"
24 #include "email-composer-callback.h"
25 #include "email-composer-attachment.h"
26 #include "email-composer-predictive-search.h"
27 #include "email-composer-js.h"
29 void _composer_webview_reach_top_cb(void *data, Evas_Object *obj, void *event_info);
30 void _composer_webview_reach_bottom_cb(void *data, Evas_Object *obj, void *event_info);
31 void _composer_webview_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
33 void _composer_webview_mouse_move_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
34 void _composer_webview_mouse_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info);
35 void _composer_webkit_loadFinished_cb(void *data, Evas_Object *obj, void *event_info);
37 static void _composer_webkit_focused_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
38 static void _composer_webkit_unfocused_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
39 static void _composer_get_html_content_cb(Evas_Object *o, const char *result, void *data);
41 static void _composer_webkit_scroll_up_cb(void *data, Evas_Object *obj, void *event_info);
42 static void _composer_webkit_scroll_down_cb(void *data, Evas_Object *obj, void *event_info);
44 static void _composer_webkit_ime_closed_cb(void *data, Evas_Object *obj, void *event_info);
45 static void _composer_webkit_ime_opened_cb(void *data, Evas_Object *obj, void *event_info);
46 static void _composer_webkit_resized_cb(void *data, Evas_Object *obj, void *event_info);
47 static void _composer_webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info);
48 static void _composer_webview_contextmenu_customize_cb(void *data, Evas_Object *webview, void *event_info);
50 static void _changed_cb(void *data, Evas_Object *obj, void *event_info) // This callback is for showing(hiding) X marked button.
54 if (elm_object_focus_get(data)) {
55 if (elm_entry_is_empty(obj))
56 elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
58 elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
62 static void _focused_cb(void *data, Evas_Object *obj, void *event_info) // Focused callback will show X marked button and hide guidetext.
66 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
68 debug_log("ugd->focus_status = %d", ugd->focus_status);
70 if (COMPOSER_FOCUS_STATUS_NONE == ugd->focus_status) {
71 if (!elm_entry_is_empty(obj))
72 elm_object_signal_emit(ugd->subject_editfield, "elm,state,eraser,show", "elm");
73 elm_object_signal_emit(ugd->subject_editfield, "elm,state,guidetext,hide", "elm");
75 _composer_attachment_contract_items(ugd);
77 elm_entry_input_panel_show(obj);
79 ugd->selected_entry = ugd->subject_entry;
80 // ugd->bringin_timer = ecore_timer_add(0.5f, _composer_bringin_cb, ugd);
82 if (ugd->selected_entry == ugd->body_ewkview) {
83 elm_object_focus_set(ugd->subject_entry, EINA_FALSE);
88 static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info) // Unfocused callback will show guidetext and hide X marked button.
92 if (elm_entry_is_empty(obj))
93 elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
94 elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
96 elm_entry_input_panel_hide(obj);
99 static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button clicked, make string as empty.
103 elm_entry_entry_set(data, "");
106 void _composer_content_create_content_field(Evas_Object *parent, EmailComposerUGD *ugd)
110 /* Create Subject field */
111 _composer_create_subject_field(parent, ugd);
113 /* Create Body field */
114 _composer_create_body_field(parent, ugd);
117 void _composer_create_subject_field(Evas_Object *parent, EmailComposerUGD *ugd)
123 ly = _composer_create_subject_editfield(parent, dgettext("sys_string", "IDS_COM_BODY_SUBJECT"), ugd);
125 _composer_register_editfield_entry_callback(ugd->subject_entry, ugd);
127 evas_object_smart_callback_add(ugd->subject_entry, "changed", _changed_cb, ugd->subject_editfield);
128 evas_object_smart_callback_add(ugd->subject_entry, "focused", _focused_cb, ugd);
129 evas_object_smart_callback_add(ugd->subject_entry, "unfocused", _unfocused_cb, ugd->subject_editfield);
130 elm_object_signal_callback_add(ugd->subject_editfield, "elm,eraser,clicked", "elm", _eraser_clicked_cb, ugd->subject_entry);
132 elm_object_part_content_set(parent, "subject_field", ly);
134 ugd->subject_ly = ly;
137 Evas_Object *_composer_create_subject_editfield(Evas_Object *parent, char *title, EmailComposerUGD *ugd)
143 Evas_Object *entry = NULL;
145 ly = elm_layout_add(parent);
147 elm_layout_file_set(ly, COMPOSER_EDJ_NAME, "layout.subject");
148 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
149 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
150 evas_object_show(ly);
152 ef = elm_layout_add(parent);
153 elm_layout_theme_set(ef, "layout", "editfield", "default");
154 evas_object_size_hint_weight_set(ef, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
155 evas_object_size_hint_align_set(ef, EVAS_HINT_FILL, EVAS_HINT_FILL);
156 evas_object_show(ef);
158 elm_object_part_text_set(ef, "elm.guidetext", title);
159 elm_object_part_content_set(ly, "subject.editfield", ef);
160 ugd->subject_editfield = ef;
162 entry = elm_entry_add(ef);
163 elm_entry_scrollable_set(entry, EINA_TRUE);
164 elm_entry_single_line_set(entry, EINA_TRUE);
165 elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
166 elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
167 elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
168 evas_object_show(entry);
169 elm_entry_text_style_user_push(entry, "DEFAULT='font_size=32 color=#000000'");
171 elm_object_part_content_set(ef, "elm.swallow.content", entry);
172 ugd->subject_entry = entry;
174 /* add filter for removing markups*/
175 // elm_entry_text_filter_append(entry, _composer_entry_filter_remove_markup, ugd);
180 void _composer_create_body_field(Evas_Object *parent, EmailComposerUGD *ugd)
184 Evas_Object *body_ly;
186 body_ly = _composer_create_body_webview(parent, NULL, ugd);
188 elm_object_part_content_set(parent, "content_field", body_ly);
190 ugd->webkit_ly = body_ly;
193 Evas_Object *_composer_create_body_webview(Evas_Object *parent, char *title, EmailComposerUGD *ugd)
199 ly = elm_layout_add(parent);
201 elm_layout_file_set(ly, COMPOSER_EDJ_NAME, "layout.webkit");
202 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
203 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
204 evas_object_show(ly);
206 ugd->body_ewkview = ewk_view_add(evas_object_evas_get(parent));
208 evas_object_size_hint_align_set(ugd->body_ewkview, EVAS_HINT_FILL, EVAS_HINT_FILL);
209 ewk_view_vertical_panning_hold_set(ugd->body_ewkview, EINA_TRUE);
210 //elm_webview_input_field_zoom_set(ugd->body_webview, EINA_TRUE); //reviewing
212 elm_object_part_content_set(ly, "webkit.swallow", ugd->body_ewkview);
214 evas_object_smart_callback_add(ugd->body_ewkview, "edge,top", _composer_webview_reach_top_cb, ugd);
215 evas_object_smart_callback_add(ugd->body_ewkview, "edge,bottom", _composer_webview_reach_bottom_cb, ugd);
217 evas_object_event_callback_add(ugd->body_ewkview, EVAS_CALLBACK_MOUSE_DOWN, _composer_webview_mouse_down_cb, ugd);
218 //evas_object_event_callback_add(ugd->body_webview, EVAS_CALLBACK_MOUSE_MOVE, _composer_webview_mouse_move_cb, ugd);
219 //evas_object_event_callback_add(ugd->body_webview, EVAS_CALLBACK_MOUSE_UP, _composer_webview_mouse_up_cb, ugd);
221 Ewk_Setting *ewkSetting = NULL;
222 ewkSetting = ewk_view_setting_get(ugd->body_ewkview);
224 if (NULL == ewkSetting)
225 debug_log("ewkSetting is NULL.");
227 ewk_setting_uses_encoding_detector_set(ewkSetting, EINA_TRUE);
229 //ewk_view_show_ime_on_autofocus_set(ugd->body_ewkview, EINA_TRUE); // jcpark reviewing
230 evas_object_smart_callback_add(ugd->body_ewkview, "load,finished", _composer_webkit_loadFinished_cb, ugd);
231 evas_object_smart_callback_add(ugd->body_ewkview, "policy,navigation,decide", _composer_webview_policy_navigation_decide_cb, ugd);
232 evas_object_smart_callback_add(ugd->body_ewkview, "scroll,up", _composer_webkit_scroll_up_cb, ugd);
233 evas_object_smart_callback_add(ugd->body_ewkview, "scroll,down", _composer_webkit_scroll_down_cb, ugd);
234 evas_object_smart_callback_add(ugd->body_ewkview, "contextmenu,customize", _composer_webview_contextmenu_customize_cb, ugd);
235 evas_object_smart_callback_add(ugd->body_ewkview, "editorclient,ime,closed", _composer_webkit_ime_closed_cb, ugd);
236 evas_object_smart_callback_add(ugd->body_ewkview, "editorclient,ime,opened", _composer_webkit_ime_opened_cb, ugd);
238 evas_object_event_callback_add(ugd->body_ewkview, EVAS_CALLBACK_FOCUS_IN, _composer_webkit_focused_cb, ugd);
239 evas_object_event_callback_add(ugd->body_ewkview, EVAS_CALLBACK_FOCUS_OUT, _composer_webkit_unfocused_cb, ugd);
244 void _composer_register_editfield_entry_callback(Evas_Object *obj, EmailComposerUGD *ugd)
248 evas_object_smart_callback_add(obj, "changed", _composer_edit_field_changed_cb, ugd);
249 evas_object_smart_callback_add(obj, "preedit,changed", _composer_edit_field_changed_cb, ugd);
251 // Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
252 // ecore_imf_context_input_panel_event_callback_add(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _composer_input_panel_state_changed_cb, ugd);
255 static Eina_Bool _composer_webkit_field_clicked_cb_hit_test_hash_fn(const Eina_Hash *hash, const void *key, void *data, void *fdata)
257 debug_log("Func data: %s, Hash entry: %s / %s\n", fdata, (const char *)key, data);
259 bool *val = (bool *)fdata;
261 if (strcmp(key, "isselected") == 0) {
269 void _composer_webview_mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
273 /*EmailComposerUGD *ugd = (EmailComposerUGD *)data;
275 Evas_Event_Mouse_Down *mouse_info = (Evas_Event_Mouse_Down *)event_info;
276 debug_log("output position: [%d, %d]", mouse_info->output.x, mouse_info->output.y);*/
279 void _composer_webview_mouse_move_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
283 /*EmailComposerUGD *ugd = (EmailComposerUGD *)data;
284 Evas_Event_Mouse_Move *mouse_info = (Evas_Event_Mouse_Move *) event_info;
286 debug_log("prev: output position: [%d, %d]", mouse_info->prev.output.x, mouse_info->prev.output.y);
287 debug_log("prev: canvas position: [%d, %d]", mouse_info->prev.canvas.x, mouse_info->prev.canvas.y);
289 debug_log("cur: output position: [%d, %d]", mouse_info->cur.output.x, mouse_info->cur.output.y);
290 debug_log("cur: canvas position: [%d, %d]", mouse_info->cur.canvas.x, mouse_info->cur.canvas.y);*/
293 void _composer_webview_mouse_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
297 /*EmailComposerUGD *ugd = (EmailComposerUGD *)data;
298 Evas_Event_Mouse_Up *mouse_info = (Evas_Event_Mouse_Up *)event_info;
300 debug_log("output position: [%d, %d]", mouse_info->output.x, mouse_info->output.y);*/
303 void _composer_webkit_loadFinished_cb(void *data, Evas_Object *obj, void *event_info)
307 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
309 if (ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_ENABLE_EDITABLE, _composer_script_executed_cb, 0) == EINA_FALSE)
310 debug_log("COMPOSER_JS_ENABLE_EDITABLE failed.");
312 if (ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_GET_HTML_CONTENT, _composer_get_html_content_cb, (void *)ugd) == EINA_FALSE)
313 debug_log("COMPOSER_JS_GET_HTML_CONTENT failed.");
315 Ewk_Setting *ewkSetting = NULL;
316 ewkSetting = ewk_view_setting_get(ugd->body_ewkview);
318 if (ewkSetting == NULL)
319 debug_log("ewkSetting is NULL.");
321 ewk_setting_auto_fitting_set(ewkSetting, EINA_TRUE);
322 //ewk_setting_auto_load_images_set(ewkSetting, EINA_TRUE);
323 ewk_setting_editable_link_behavior_set(ewkSetting, EWK_EDITABLE_LINK_BEHAVIOR_NEVER_LIVE);
325 if (ugd->isRotated == true) {
326 _composer_resize_body_webview(ugd, 316);
328 _composer_resize_body_webview(ugd, ugd->ime_height);
331 if (ugd->selected_entry == ugd->body_ewkview) {
332 // focus to the body field when reply the email.
333 evas_object_focus_set(ugd->body_ewkview, EINA_TRUE);
336 elm_object_disabled_set(ugd->cancel_btn, EINA_FALSE);
337 ugd->b_load_finished = EINA_TRUE;
340 static void _composer_webkit_focused_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
344 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
346 debug_log("Webkit focused");
350 _composer_ps_stop(ugd);
351 ugd->sc_timer = ecore_timer_add(0.5, _composer_ps_scroll_pop, ugd);
354 debug_log("selected_entry = %x, to_mbe_entry = %x, cc_mbe_entry = %x, bcc_mbe_entry = %x, subject_entry = %x, body_ewkview = %x",
355 ugd->selected_entry, ugd->to_mbe_entry, ugd->cc_mbe_entry, ugd->bcc_mbe_entry, ugd->subject_entry, ugd->body_ewkview);
357 debug_log("obj = %x, to_mbe = %x, cc_mbe = %x, bcc_mbe = %x, subject_editfield = %x", obj, ugd->to_mbe, ugd->cc_mbe, ugd->bcc_mbe, ugd->subject_editfield);
360 if (EINA_TRUE == elm_object_focus_get(ugd->to_mbe)) {
362 elm_object_focus_set(ugd->to_mbe, EINA_FALSE);
364 else if (EINA_TRUE == elm_object_focus_get(ugd->cc_mbe)) {
366 elm_object_focus_set(ugd->cc_mbe, EINA_FALSE);
368 else if (EINA_TRUE == elm_object_focus_get(ugd->bcc_mbe)) {
369 debug_log("bcc_mbe");
370 elm_object_focus_set(ugd->bcc_mbe, EINA_FALSE);
372 else if (EINA_TRUE == elm_object_focus_get(ugd->subject_entry)) {
373 debug_log("subject_entry");
374 elm_object_focus_set(ugd->subject_entry, EINA_FALSE);
377 if (ugd->selected_entry == ugd->to_mbe_entry) {
378 elm_object_focus_set(ugd->to_mbe, EINA_FALSE);
380 else if (ugd->selected_entry == ugd->cc_mbe_entry) {
381 elm_object_focus_set(ugd->cc_mbe, EINA_FALSE);
383 else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
384 elm_object_focus_set(ugd->bcc_mbe, EINA_FALSE);
386 else if (ugd->selected_entry == ugd->subject_entry) {
387 elm_object_focus_set(ugd->subject_entry, EINA_FALSE);
390 ugd->selected_entry = ugd->body_ewkview;
391 evas_object_focus_set(ugd->body_ewkview, EINA_TRUE);
393 ugd->focus_status = COMPOSER_FOCUS_STATUS_NONE; // focus handling when rte is clicked
394 _composer_attachment_contract_items(ugd);
396 // ugd->bringin_timer = ecore_timer_add(0.7f, _composer_bringin_cb, ugd);
398 if (ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_SET_FOCUS, _composer_script_executed_cb, 0) == EINA_FALSE)
399 debug_log("COMPOSER_JS_SET_FOCUS failed.");
402 static void _composer_webkit_unfocused_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
406 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
408 debug_log("selected_entry = %x, to_mbe_entry = %x, cc_mbe_entry = %x, bcc_mbe_entry = %x, subject_entry = %x, body_ewkview = %x",
409 ugd->selected_entry, ugd->to_mbe_entry, ugd->cc_mbe_entry, ugd->bcc_mbe_entry, ugd->subject_entry, ugd->body_ewkview);
411 if (ugd->selected_entry == ugd->body_ewkview) {
412 debug_log("Webkit unfocused");
413 evas_object_focus_set(ugd->body_ewkview, EINA_FALSE);
415 if (ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_SET_UNFOCUS, _composer_script_executed_cb, 0) == EINA_FALSE)
416 debug_log("COMPOSER_JS_SET_UNFOCUS failed.");
421 void _composer_webview_reach_top_cb(void *data, Evas_Object *obj, void *event_info)
425 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
427 if (ugd->is_webview_scrolling) {
428 debug_log("main scroller start");
429 ewk_view_vertical_panning_hold_set(ugd->body_ewkview, EINA_TRUE);
431 if (elm_widget_scroll_freeze_get(ugd->main_scroller) > 0)
432 elm_object_scroll_freeze_pop(ugd->main_scroller);
434 /* WORKAROUND. To fix scrolling problem when screen is on the bottom of webview. (Do panning to top fast) */
436 elm_scroller_region_get(ugd->main_scroller, &x, &y, &w, &h);
437 debug_log("main_scroller(x:%d, y:%d, w:%d, h:%d)", x, y, w, h);
438 elm_scroller_region_bring_in(ugd->main_scroller, x, 0, w, h);
440 ugd->is_main_scroller_scrolling = EINA_TRUE;
441 ugd->is_webview_scrolling = EINA_FALSE;
444 #ifdef _TEMPORARY_FIX_FOR_ROTATION_
445 if (ugd->temporary_fix_for_rotation)
446 ugd->temporary_fix_for_rotation = false;
450 void _composer_webview_reach_bottom_cb(void *data, Evas_Object *obj, void *event_info)
454 #ifdef _TEMPORARY_FIX_FOR_ROTATION_
455 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
457 if (ugd->temporary_fix_for_rotation) {
458 if (elm_widget_scroll_freeze_get(ugd->main_scroller) > 0)
459 elm_object_scroll_freeze_pop(ugd->main_scroller);
460 ugd->temporary_fix_for_rotation = false;
465 static void _composer_get_html_content_cb(Evas_Object *o, const char *result, void *data)
469 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
471 if (result != NULL) {
472 ugd->saved_html_content = g_strdup(result);
473 debug_log("ugd->saved_html_content => %s", ugd->saved_html_content);
477 static void _composer_webkit_scroll_up_cb(void *data, Evas_Object *obj, void *event_info)
482 static void _composer_webkit_scroll_down_cb(void *data, Evas_Object *obj, void *event_info)
487 static void _composer_webkit_ime_closed_cb(void *data, Evas_Object *obj, void *event_info)
491 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
492 _composer_resize_body_webview(ugd, 0);
495 static void _composer_webkit_ime_opened_cb(void *data, Evas_Object *obj, void *event_info)
499 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
500 if (ugd->isRotated == true) {
501 _composer_resize_body_webview(ugd, 316);
503 _composer_resize_body_webview(ugd, ugd->ime_height);
507 static void _composer_webkit_resized_cb(void *data, Evas_Object *obj, void *event_info)
511 //EmailComposerUGD *ugd = (EmailComposerUGD *)data;
512 //_composer_region_show_cb(ugd);
513 //ugd->bringin_timer = ecore_timer_add(0.7f, _composer_bringin_cb, ugd);
514 //ugd->idler_bringin = ecore_idler_add(_composer_bringin_cb, ugd);
517 static void _composer_webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info)
521 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
523 const char *uri = NULL;
524 uri = ewk_view_uri_get(ugd->body_ewkview);
525 debug_log("ewk_view_uri_get(%s)", uri);
527 if (ugd->b_load_finished == EINA_TRUE) {
528 Ewk_Policy_Decision *policy_decision = (Ewk_Policy_Decision *)event_info;
529 ewk_policy_decision_ignore(policy_decision);
531 debug_log("url:%s", ewk_policy_decision_url_get(policy_decision));
532 debug_log("scheme:%s", ewk_policy_decision_scheme_get(policy_decision));
533 debug_log("cookie:%s", ewk_policy_decision_cookie_get(policy_decision));
534 debug_log("host:%s", ewk_policy_decision_host_get(policy_decision));
535 debug_log("response_mime:%s", ewk_policy_decision_response_mime_get(policy_decision));
537 char *url = (char *)ewk_policy_decision_url_get(policy_decision);
539 if ((strncmp(url, "http://", 7) == 0) ||
540 (strncmp(url, "https://", 8) == 0) ||
541 (strncmp(url, "ftp://", 6) == 0) ||
542 (strncmp(url, "mms://", 6) == 0) ||
543 (strncmp(url, "file://", 7) == 0) ||
544 (strncmp(url, "rtsp://", 7) == 0) ||
545 (strncmp(url, "wap://", 6) == 0)) {
547 service_h service = NULL;
548 ret = service_create(&service);
549 debug_log("service_create: %d", ret);
551 debug_log("service create failed");
554 ret = service_set_operation(service, SERVICE_OPERATION_VIEW);
555 debug_log("service_set_operation: %d", ret);
556 ret = service_set_uri(service, url);
557 debug_log("service_set_uri: %d", ret);
558 ret = service_send_launch_request(service, NULL, NULL);
559 debug_log("service_send_launch_request: %d", ret);
560 ret = service_destroy(service);
561 debug_log("service_destroy: %d", ret);
566 static void _composer_webview_contextmenu_customize_cb(void *data, Evas_Object *webview, void *event_info)
569 int i = 0, count = 0;
570 Ewk_Context_Menu* contextmenu = (Ewk_Context_Menu*)event_info;
571 Ewk_Context_Menu_Item* menu_item = NULL;
573 count = ewk_context_menu_item_count(contextmenu);
575 for (i = 0; i < count; i++) {
576 Ewk_Context_Menu_Item_Tag menu_item_tag = EWK_CONTEXT_MENU_ITEM_TAG_NO_ACTION;
577 menu_item = ewk_context_menu_nth_item_get(contextmenu, i);
578 if (EWK_CONTEXT_MENU_ITEM_TYPE_ACTION != ewk_context_menu_item_type_get(menu_item))
581 menu_item_tag = ewk_context_menu_item_tag_get(menu_item);
582 debug_log("menu_item_tag : %d", menu_item_tag);
584 if (menu_item_tag == EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_WEB) {
585 ewk_context_menu_item_remove(contextmenu, menu_item);
587 //if (ewk_context_menu_item_append_as_action(contextmenu, 10001/*CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG*/, "test", EINA_TRUE) == EINA_FALSE)
588 // debug_log("failed");