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.
19 #include "browser-context-menu.h"
20 #include "browser-view.h"
22 Browser_Context_Menu::Browser_Context_Menu(Browser_View *browser_view)
23 : m_browser_view(browser_view)
26 BROWSER_LOGD("[%s]", __func__);
29 Browser_Context_Menu::~Browser_Context_Menu(void)
31 BROWSER_LOGD("[%s]", __func__);
34 void Browser_Context_Menu::init(Evas_Object *ewk_view)
36 BROWSER_LOGD("[%s]", __func__);
40 m_ewk_view = ewk_view;
42 evas_object_smart_callback_add(ewk_view, "contextmenu,customize", __get_context_menu_from_proposed_context_menu_cb, NULL);
43 evas_object_smart_callback_add(ewk_view, "contextmenu,selected", __custom_context_menu_item_selected_cb, this);
46 void Browser_Context_Menu::deinit(void)
48 BROWSER_LOGD("[%s]", __func__);
50 evas_object_smart_callback_del(m_ewk_view, "contextmenu,customize",
51 __get_context_menu_from_proposed_context_menu_cb);
52 evas_object_smart_callback_del(m_ewk_view, "contextmenu,selected",
53 __custom_context_menu_item_selected_cb);
57 void Browser_Context_Menu::__get_context_menu_from_proposed_context_menu_cb(void *data, Evas_Object *obj, void *event_info)
59 BROWSER_LOGD("[%s]", __func__);
63 Ewk_Context_Menu *menu = static_cast<Ewk_Context_Menu*>(event_info);
64 Ewk_Context_Menu_Item *item;
65 Ewk_Context_Menu_Item_Tag tag;
66 int count = ewk_context_menu_item_count(menu);
67 for (int i = 0; i < count; i++) {
68 item = ewk_context_menu_nth_item_get(menu, 0);
69 tag = ewk_context_menu_item_tag_get(item);
70 ewk_context_menu_item_remove(menu, item);
73 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW:
74 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_LINK_IN_NEW_WINDOW, true);
76 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK:
77 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_DOWNLOAD_LINKED_FILE, true);
79 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW:
80 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_IMAGE_IN_NEW_WINDOW, true);
82 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK:
83 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_IMAGE_AS, true);
85 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD:
86 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE, true);
87 ewk_context_menu_item_append_as_action(menu, CustomContextMenuItemImageSendViaMessageTag, BR_STRING_SHARE_VIA_MESSAGE, true);
88 ewk_context_menu_item_append_as_action(menu, CustomContextMenuItemImageSendViaEmailTag, BR_STRING_SHARE_VIA_EMAIL, true);
90 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD:
91 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE_LOCATION, true);
93 case EWK_CONTEXT_MENU_ITEM_TAG_CUT:
94 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_CUT, true);
96 case EWK_CONTEXT_MENU_ITEM_TAG_PASTE:
97 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_PASTE, true);
99 case EWK_CONTEXT_MENU_ITEM_TAG_COPY:
100 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY, true);
102 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL:
103 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_SELECT_ALL, true);
105 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD:
106 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SELECT_WORD, true);
114 void Browser_Context_Menu::__custom_context_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
116 BROWSER_LOGD("[%s]", __func__);
120 Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
121 Browser_Context_Menu *context_menu = static_cast<Browser_Context_Menu *>(data);
123 std::string link_url_string = ewk_context_menu_item_link_url_get(item);
124 BROWSER_LOGD("link url=[%s]", link_url_string.c_str());
125 std::string image_url_string = ewk_context_menu_item_image_url_get(item);
126 BROWSER_LOGD("image url=[%s]", image_url_string.c_str());
128 Ewk_Context_Menu_Item_Tag tag = ewk_context_menu_item_tag_get(item);