Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java

Issue 2854243004: Moves translate snackbar functionality to Android side. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateSnackbarController.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.infobar; 5 package org.chromium.chrome.browser.infobar;
6 6
7 import android.support.design.widget.TabLayout; 7 import android.support.design.widget.TabLayout;
8 import android.view.LayoutInflater; 8 import android.view.LayoutInflater;
9 import android.view.View; 9 import android.view.View;
10 import android.view.View.OnClickListener; 10 import android.view.View.OnClickListener;
11 import android.widget.LinearLayout; 11 import android.widget.LinearLayout;
12 12
13 import org.chromium.base.annotations.CalledByNative; 13 import org.chromium.base.annotations.CalledByNative;
14 import org.chromium.chrome.R; 14 import org.chromium.chrome.R;
15 import org.chromium.chrome.browser.infobar.translate.TranslateMenu; 15 import org.chromium.chrome.browser.infobar.translate.TranslateMenu;
16 import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper; 16 import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper;
17 import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout; 17 import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout;
18 import org.chromium.chrome.browser.snackbar.Snackbar; 18 import org.chromium.chrome.browser.snackbar.Snackbar;
19 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
19 import org.chromium.chrome.browser.widget.TintedImageButton; 20 import org.chromium.chrome.browser.widget.TintedImageButton;
20 import org.chromium.ui.widget.Toast; 21 import org.chromium.ui.widget.Toast;
21 22
22 /** 23 /**
23 * Java version of the compcat translate infobar 24 * Java version of the compcat translate infobar
24 */ 25 */
25 class TranslateCompactInfoBar extends InfoBar 26 class TranslateCompactInfoBar extends InfoBar
26 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat eMenuListener { 27 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat eMenuListener {
27 public static final int TRANSLATING_INFOBAR = 1; 28 public static final int TRANSLATING_INFOBAR = 1;
28 29
29 private static final int SOURCE_TAB_INDEX = 0; 30 private static final int SOURCE_TAB_INDEX = 0;
30 private static final int TARGET_TAB_INDEX = 1; 31 private static final int TARGET_TAB_INDEX = 1;
31 32
32 private final int mInitialStep; 33 private final int mInitialStep;
33 private final TranslateOptions mOptions; 34 private final TranslateOptions mOptions;
34 35
35 private long mNativeTranslateInfoBarPtr; 36 private long mNativeTranslateInfoBarPtr;
36 private TranslateTabLayout mTabLayout; 37 private TranslateTabLayout mTabLayout;
37 38
38 // Need 2 instances of TranslateMenuHelper to prevent a race condition bug w hich happens when 39 // Need 2 instances of TranslateMenuHelper to prevent a race condition bug w hich happens when
39 // showing language menu after dismissing overflow menu. 40 // showing language menu after dismissing overflow menu.
40 private TranslateMenuHelper mOverflowMenuHelper; 41 private TranslateMenuHelper mOverflowMenuHelper;
41 private TranslateMenuHelper mLanguageMenuHelper; 42 private TranslateMenuHelper mLanguageMenuHelper;
42 43
43 private TintedImageButton mMenuButton; 44 private TintedImageButton mMenuButton;
44 45
46 enum TranslateSnackbarType { NONE, ALWAYS_TRANSLATE, NEVER_TRANSLATE, NEVER_ TRANSLATE_SITE }
47 ;
gone 2017/05/04 17:20:52 1) git cl format? This ; on its own line is weird
ramyasharma 2017/05/05 02:55:13 Yes, git cl format put that ";" on the next line :
48
49 class TranslateSnackbarController implements SnackbarController {
gone 2017/05/04 17:20:52 javadoc
ramyasharma 2017/05/05 02:55:13 done.
50 private TranslateSnackbarType mSnackbarType;
gone 2017/05/04 17:20:52 final
ramyasharma 2017/05/05 02:55:13 Done.
51
52 public TranslateSnackbarController(TranslateSnackbarType snackbarType) {
53 this.snackbarType = snackbarType;
gone 2017/05/04 17:20:52 Does this compile?
ramyasharma 2017/05/05 02:55:13 argh.. sorry. No it doesn't. I missed updating oth
54 }
55
56 @Override
57 public void onDismissNoAction(Object actionData) {
58 switch (snackbarType) {
59 case ALWAYS_TRANSLATE:
60 nativeApplyBoolTranslateOption(
61 mNativeTranslateInfoBarPtr, TranslateOption.ALWAYS_T RANSLATE, true);
62 return;
63 case NEVER_TRANSLATE:
64 nativeApplyBoolTranslateOption(
65 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TR ANSLATE, true);
66 return;
67 case NEVER_TRANSLATE_SITE:
68 nativeApplyBoolTranslateOption(
69 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TR ANSLATE_SITE, true);
70 return;
71 }
72 }
73
74 @Override
75 public void onAction(Object actionData) {
76 // do nothing.
77 }
78 };
79
45 @CalledByNative 80 @CalledByNative
46 private static InfoBar create(int initialStep, String sourceLanguageCode, 81 private static InfoBar create(int initialStep, String sourceLanguageCode,
47 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu, 82 String targetLanguageCode, boolean alwaysTranslate, boolean triggere dFromMenu,
48 String[] languages, String[] codes) { 83 String[] languages, String[] codes) {
49 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode, 84 return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targ etLanguageCode,
50 alwaysTranslate, triggeredFromMenu, languages, codes); 85 alwaysTranslate, triggeredFromMenu, languages, codes);
51 } 86 }
52 87
53 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode, 88 TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String t argetLanguageCode,
54 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es, 89 boolean alwaysTranslate, boolean triggeredFromMenu, String[] languag es,
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 public void onTabReselected(TabLayout.Tab tab) {} 206 public void onTabReselected(TabLayout.Tab tab) {}
172 207
173 @Override 208 @Override
174 public void onOverflowMenuItemClicked(int itemId) { 209 public void onOverflowMenuItemClicked(int itemId) {
175 switch (itemId) { 210 switch (itemId) {
176 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE: 211 case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
177 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE); 212 initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE);
178 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE); 213 mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
179 return; 214 return;
180 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: 215 case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
181 nativeApplyBoolTranslateOption(
182 mNativeTranslateInfoBarPtr, TranslateOption.ALWAYS_TRANS LATE, true);
183 showSnackbar(TranslateSnackbarType.ALWAYS_TRANSLATE); 216 showSnackbar(TranslateSnackbarType.ALWAYS_TRANSLATE);
184 return; 217 return;
185 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: 218 case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
186 nativeApplyBoolTranslateOption(
187 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE, true);
188 showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE); 219 showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE);
189 return; 220 return;
190 case TranslateMenu.ID_OVERFLOW_NEVER_SITE: 221 case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
191 nativeApplyBoolTranslateOption(
192 mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSL ATE_SITE, true);
193 showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE_SITE); 222 showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE_SITE);
194 return; 223 return;
195 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: 224 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
196 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); 225 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
197 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); 226 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
198 return; 227 return;
199 default: 228 default:
200 assert false : "Unexpected overflow menu code"; 229 assert false : "Unexpected overflow menu code";
201 } 230 }
202 } 231 }
(...skipping 15 matching lines...) Expand all
218 // Reset source code in both UI and native. 247 // Reset source code in both UI and native.
219 if (mOptions.setSourceLanguage(code)) { 248 if (mOptions.setSourceLanguage(code)) {
220 nativeApplyStringTranslateOption( 249 nativeApplyStringTranslateOption(
221 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e); 250 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod e);
222 // Adjust UI. 251 // Adjust UI.
223 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code)); 252 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat ionFromCode(code));
224 startTranslating(mTabLayout.getSelectedTabPosition()); 253 startTranslating(mTabLayout.getSelectedTabPosition());
225 } 254 }
226 } 255 }
227 256
228 private void showSnackbar(int snackbarType) { 257 private void showSnackbar(TranslateSnackbarType snackbarType) {
229 if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE) { 258 if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE) {
230 createAndShowSnackbar(getContext().getString(R.string.translate_snac kbar_language_never, 259 createAndShowSnackbar(getContext().getString(R.string.translate_snac kbar_language_never,
231 mOptions.sourceLanguageName()), 260 mOptions.sourceLanguageName()),
232 Snackbar.UMA_TRANSLATE_NEVER); 261 Snackbar.UMA_TRANSLATE_NEVER, snackbarType);
233 } else if (snackbarType == TranslateSnackbarType.ALWAYS_TRANSLATE) { 262 } else if (snackbarType == TranslateSnackbarType.ALWAYS_TRANSLATE) {
234 createAndShowSnackbar( 263 createAndShowSnackbar(
235 getContext().getString(R.string.translate_snackbar_always_tr anslate, 264 getContext().getString(R.string.translate_snackbar_always_tr anslate,
236 mOptions.sourceLanguageName(), mOptions.targetLangua geName()), 265 mOptions.sourceLanguageName(), mOptions.targetLangua geName()),
237 Snackbar.UMA_TRANSLATE_ALWAYS); 266 Snackbar.UMA_TRANSLATE_ALWAYS, snackbarType);
238 } else if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE_SITE) { 267 } else if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE_SITE) {
239 createAndShowSnackbar(getContext().getString(R.string.translate_snac kbar_site_never), 268 createAndShowSnackbar(getContext().getString(R.string.translate_snac kbar_site_never),
240 Snackbar.UMA_TRANSLATE_NEVER_SITE); 269 Snackbar.UMA_TRANSLATE_NEVER_SITE, snackbarType);
241 } 270 }
242 } 271 }
243 272
244 private void createAndShowSnackbar(String title, int type) { 273 private void createAndShowSnackbar(String title, int type, TranslateSnackbar Type snackbarType) {
245 if (getSnackbarManager() == null) { 274 if (getSnackbarManager() == null) {
246 return; 275 return;
247 } 276 }
248 getSnackbarManager().showSnackbar(Snackbar.make(title, new TranslateSnac kbarController(), 277 getSnackbarManager().showSnackbar(
249 Snackbar.TYPE_NOTIFICA TION, type) 278 Snackbar.make(title, new TranslateSnackbarController(snackbarTyp e),
250 .setSingleLine(false)); 279 Snackbar.TYPE_NOTIFICATION, type)
280 .setSingleLine(false)
281 .setAction(
282 getContext().getString(R.string.translate_snackb ar_cancel), null));
251 } 283 }
252 284
253 private native void nativeApplyStringTranslateOption( 285 private native void nativeApplyStringTranslateOption(
254 long nativeTranslateCompactInfoBar, int option, String value); 286 long nativeTranslateCompactInfoBar, int option, String value);
255 private native void nativeApplyBoolTranslateOption( 287 private native void nativeApplyBoolTranslateOption(
256 long nativeTranslateCompactInfoBar, int option, boolean value); 288 long nativeTranslateCompactInfoBar, int option, boolean value);
257 } 289 }
OLDNEW
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateSnackbarController.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698