OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.contextmenu; | 5 package org.chromium.chrome.browser.contextmenu; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.graphics.drawable.Drawable; |
| 9 import android.support.annotation.DrawableRes; |
8 import android.support.annotation.IdRes; | 10 import android.support.annotation.IdRes; |
9 import android.support.annotation.StringRes; | 11 import android.support.annotation.StringRes; |
10 | 12 |
| 13 import org.chromium.base.ApiCompatibilityUtils; |
11 import org.chromium.chrome.R; | 14 import org.chromium.chrome.R; |
12 import org.chromium.chrome.browser.DefaultBrowserInfo; | 15 import org.chromium.chrome.browser.DefaultBrowserInfo; |
13 import org.chromium.chrome.browser.search_engines.TemplateUrlService; | 16 import org.chromium.chrome.browser.search_engines.TemplateUrlService; |
| 17 import org.chromium.chrome.browser.widget.TintedDrawable; |
14 | 18 |
15 /** | 19 /** |
16 * List of all Context Menu Items available in Chrome. | 20 * List of all Context Menu Items available in Chrome. |
17 */ | 21 */ |
18 public enum ContextMenuItem { | 22 public enum ContextMenuItem { |
19 // Custom Tab Group | 23 // Custom Tab Group |
20 OPEN_IN_NEW_CHROME_TAB(R.string.contextmenu_open_in_new_chrome_tab, | 24 OPEN_IN_NEW_CHROME_TAB(R.drawable.context_menu_new_tab, |
21 R.id.contextmenu_open_in_new_chrome_tab), | 25 R.string.contextmenu_open_in_new_chrome_tab, R.id.contextmenu_open_i
n_new_chrome_tab), |
22 OPEN_IN_CHROME_INCOGNITO_TAB(R.string.contextmenu_open_in_chrome_incognito_t
ab, | 26 OPEN_IN_CHROME_INCOGNITO_TAB(R.drawable.incognito_statusbar, |
| 27 R.string.contextmenu_open_in_chrome_incognito_tab, |
23 R.id.contextmenu_open_in_chrome_incognito_tab), | 28 R.id.contextmenu_open_in_chrome_incognito_tab), |
24 OPEN_IN_BROWSER_ID(0, R.id.contextmenu_open_in_browser_id), | 29 OPEN_IN_BROWSER_ID(R.drawable.context_menu_new_tab, 0, R.id.contextmenu_open
_in_browser_id), |
25 | 30 |
26 // Link Group | 31 // Link Group |
27 OPEN_IN_OTHER_WINDOW(R.string.contextmenu_open_in_other_window, | 32 OPEN_IN_OTHER_WINDOW(R.drawable.context_menu_new_tab, R.string.contextmenu_o
pen_in_other_window, |
28 R.id.contextmenu_open_in_other_window), | 33 R.id.contextmenu_open_in_other_window), |
29 OPEN_IN_NEW_TAB(R.string.contextmenu_open_in_new_tab, R.id.contextmenu_open_
in_new_tab), | 34 OPEN_IN_NEW_TAB(R.drawable.context_menu_new_tab, R.string.contextmenu_open_i
n_new_tab, |
30 OPEN_IN_INCOGNITO_TAB(R.string.contextmenu_open_in_incognito_tab, | 35 R.id.contextmenu_open_in_new_tab), |
31 R.id.contextmenu_open_in_incognito_tab), | 36 OPEN_IN_INCOGNITO_TAB(R.drawable.incognito_statusbar, |
32 COPY_LINK_ADDRESS(R.string.contextmenu_copy_link_address, R.id.contextmenu_c
opy_link_address), | 37 R.string.contextmenu_open_in_incognito_tab, R.id.contextmenu_open_in
_incognito_tab), |
33 COPY_LINK_TEXT(R.string.contextmenu_copy_link_text, R.id.contextmenu_copy_li
nk_text), | 38 COPY_LINK_ADDRESS(R.drawable.ic_content_copy, R.string.contextmenu_copy_link
_address, |
34 SAVE_LINK_AS(R.string.contextmenu_save_link, R.id.contextmenu_save_link_as), | 39 R.id.contextmenu_copy_link_address), |
| 40 COPY_LINK_TEXT(R.drawable.ic_content_copy, R.string.contextmenu_copy_link_te
xt, |
| 41 R.id.contextmenu_copy_link_text), |
| 42 SAVE_LINK_AS(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_sa
ve_link, |
| 43 R.id.contextmenu_save_link_as), |
35 | 44 |
36 // Image Group | 45 // Image Group |
37 LOAD_ORIGINAL_IMAGE(R.string.contextmenu_load_original_image, | 46 LOAD_ORIGINAL_IMAGE(R.drawable.context_menu_load_image, |
38 R.id.contextmenu_load_original_image), | 47 R.string.contextmenu_load_original_image, R.id.contextmenu_load_orig
inal_image), |
39 SAVE_IMAGE(R.string.contextmenu_save_image, R.id.contextmenu_save_image), | 48 SAVE_IMAGE(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_save
_image, |
40 OPEN_IMAGE(R.string.contextmenu_open_image, R.id.contextmenu_open_image), | 49 R.id.contextmenu_save_image), |
41 OPEN_IMAGE_IN_NEW_TAB(R.string.contextmenu_open_image_in_new_tab, | 50 OPEN_IMAGE(R.drawable.context_menu_new_tab, R.string.contextmenu_open_image, |
42 R.id.contextmenu_open_image_in_new_tab), | 51 R.id.contextmenu_open_image), |
43 SEARCH_BY_IMAGE(R.string.contextmenu_search_web_for_image, R.id.contextmenu_
search_by_image), | 52 OPEN_IMAGE_IN_NEW_TAB(R.drawable.context_menu_new_tab, |
44 SHARE_IMAGE(R.string.contextmenu_share_image, R.id.contextmenu_share_image), | 53 R.string.contextmenu_open_image_in_new_tab, R.id.contextmenu_open_im
age_in_new_tab), |
| 54 SEARCH_BY_IMAGE(R.drawable.googleg, R.string.contextmenu_search_web_for_imag
e, |
| 55 R.id.contextmenu_search_by_image), |
| 56 SHARE_IMAGE(R.drawable.ic_share_white_24dp, R.string.contextmenu_share_image
, |
| 57 R.id.contextmenu_share_image), |
45 | 58 |
46 // Message Group | 59 // Message Group |
47 CALL(R.string.contextmenu_call, R.id.contextmenu_call), | 60 CALL(R.drawable.ic_phone_googblue_36dp, R.string.contextmenu_call, R.id.cont
extmenu_call), |
48 SEND_MESSAGE(R.string.contextmenu_send_message, R.id.contextmenu_send_messag
e), | 61 SEND_MESSAGE(R.drawable.ic_email_googblue_36dp, R.string.contextmenu_send_me
ssage, |
49 ADD_TO_CONTACTS(R.string.contextmenu_add_to_contacts, R.id.contextmenu_add_t
o_contacts), | 62 R.id.contextmenu_send_message), |
50 COPY(R.string.contextmenu_copy, R.id.contextmenu_copy), | 63 ADD_TO_CONTACTS(R.drawable.context_menu_add_to_contacts, R.string.contextmen
u_add_to_contacts, |
| 64 R.id.contextmenu_add_to_contacts), |
| 65 COPY(R.drawable.ic_content_copy, R.string.contextmenu_copy, R.id.contextmenu
_copy), |
51 | 66 |
52 // Video Group | 67 // Video Group |
53 SAVE_VIDEO(R.string.contextmenu_save_video, R.id.contextmenu_save_video), | 68 SAVE_VIDEO(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_save
_video, |
| 69 R.id.contextmenu_save_video), |
| 70 // Other |
| 71 OPEN_IN_CHROME(R.drawable.context_menu_new_tab, R.string.menu_open_in_chrome
, |
| 72 R.id.menu_id_open_in_chrome); |
54 | 73 |
55 // Other | 74 @DrawableRes public final int iconId; |
56 OPEN_IN_CHROME(R.string.menu_open_in_chrome, R.id.menu_id_open_in_chrome); | |
57 | |
58 @StringRes public final int stringId; | 75 @StringRes public final int stringId; |
59 @IdRes public final int menuId; | 76 @IdRes public final int menuId; |
60 | 77 |
61 /** | 78 /** |
62 * A representation of a Context Menu Item. Each item should have a string a
nd an id associated | 79 * A representation of a Context Menu Item. Each item should have a string a
nd an id associated |
63 * with it. | 80 * with it. |
| 81 * @param iconId The icon that appears in {@link TabularContextMenuUi} to re
present each item. |
64 * @param stringId The string that describes the action of the item. | 82 * @param stringId The string that describes the action of the item. |
65 * @param menuId The id found in ids.xml | 83 * @param menuId The id found in ids.xml. |
66 */ | 84 */ |
67 ContextMenuItem(@StringRes int stringId, @IdRes int menuId) { | 85 ContextMenuItem(@DrawableRes int iconId, @StringRes int stringId, @IdRes int
menuId) { |
| 86 this.iconId = iconId; |
68 this.stringId = stringId; | 87 this.stringId = stringId; |
69 this.menuId = menuId; | 88 this.menuId = menuId; |
70 } | 89 } |
71 | 90 |
72 /** | 91 /** |
73 * Transforms the id of the item into a string. It manages special cases tha
t need minor | 92 * Transforms the id of the item into a string. It manages special cases tha
t need minor |
74 * changes due to templating. | 93 * changes due to templating. |
75 * @param context Requires to get the string resource related to the item. | 94 * @param context Requires to get the string resource related to the item. |
76 * @return Returns a string for the menu item. | 95 * @return Returns a string for the menu item. |
77 */ | 96 */ |
78 String getString(Context context) { | 97 String getString(Context context) { |
79 if (this == ContextMenuItem.SEARCH_BY_IMAGE) { | 98 if (this == ContextMenuItem.SEARCH_BY_IMAGE) { |
80 return context.getString(R.string.contextmenu_search_web_for_image, | 99 return context.getString(R.string.contextmenu_search_web_for_image, |
81 TemplateUrlService.getInstance() | 100 TemplateUrlService.getInstance() |
82 .getDefaultSearchEngineTemplateUrl() | 101 .getDefaultSearchEngineTemplateUrl() |
83 .getShortName()); | 102 .getShortName()); |
84 } else if (this == OPEN_IN_BROWSER_ID) { | 103 } else if (this == OPEN_IN_BROWSER_ID) { |
85 return DefaultBrowserInfo.getTitleOpenInDefaultBrowser(false); | 104 return DefaultBrowserInfo.getTitleOpenInDefaultBrowser(false); |
86 } else if (stringId == 0) { | 105 } else if (stringId == 0) { |
87 return ""; | 106 return ""; |
88 } | 107 } |
89 | 108 |
90 return context.getString(stringId); | 109 return context.getString(stringId); |
91 } | 110 } |
| 111 |
| 112 /** |
| 113 * Returns the drawable and the content description associated with the cont
ext menu. If no |
| 114 * drawable is associated with the icon, null is returned for the drawable a
nd the |
| 115 * iconDescription. |
| 116 */ |
| 117 Drawable getDrawableAndDescription(Context context) { |
| 118 if (iconId == R.drawable.context_menu_new_tab |
| 119 || iconId == R.drawable.context_menu_add_to_contacts |
| 120 || iconId == R.drawable.context_menu_load_image) { |
| 121 return ApiCompatibilityUtils.getDrawable(context.getResources(), ico
nId); |
| 122 } else if (iconId == 0) { |
| 123 return null; |
| 124 } else { |
| 125 return TintedDrawable.constructTintedDrawable( |
| 126 context.getResources(), iconId, R.color.light_normal_color); |
| 127 } |
| 128 } |
92 } | 129 } |
OLD | NEW |