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);
88 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD:
89 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE_LOCATION, true);
91 case EWK_CONTEXT_MENU_ITEM_TAG_CUT:
92 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_CUT, true);
94 case EWK_CONTEXT_MENU_ITEM_TAG_PASTE:
95 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_PASTE, true);
97 case EWK_CONTEXT_MENU_ITEM_TAG_COPY:
98 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY, true);
100 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL:
101 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_SELECT_ALL, true);
103 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD:
104 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SELECT_WORD, true);
112 void Browser_Context_Menu::__custom_context_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
114 BROWSER_LOGD("[%s]", __func__);
118 Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
119 Browser_Context_Menu *context_menu = static_cast<Browser_Context_Menu *>(data);
121 std::string link_url_string = ewk_context_menu_item_link_url_get(item);
122 BROWSER_LOGD("link url=[%s]", link_url_string.c_str());
123 std::string image_url_string = ewk_context_menu_item_image_url_get(item);
124 BROWSER_LOGD("image url=[%s]", image_url_string.c_str());
126 Ewk_Context_Menu_Item_Tag tag = ewk_context_menu_item_tag_get(item);