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

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

Issue 2834333002: Implement all menu options functions (Closed)
Patch Set: fix Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
index f79e3de2916525cfd02d07c45101a32518bcd633..272f5777a53f6659f16eaf261d6503264cec03da 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
@@ -21,6 +21,9 @@ import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout;
*/
class TranslateCompactInfoBar extends InfoBar
implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.TranslateMenuListener {
+ private static final int SOURCE_TAB_INDEX = 0;
+ private static final int TARGET_TAB_INDEX = 1;
+
private final TranslateOptions mOptions;
private long mNativeTranslateInfoBarPtr;
@@ -76,6 +79,16 @@ class TranslateCompactInfoBar extends InfoBar
}
}
+ private void startTranslating(int tabPostion) {
+ if (TARGET_TAB_INDEX == tabPostion) {
+ // Already on the target tab.
+ mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX);
+ onButtonClicked(ActionType.TRANSLATE);
+ } else {
+ mTabLayout.getTabAt(TARGET_TAB_INDEX).select();
+ }
+ }
+
@CalledByNative
private void onPageTranslated(int errorType) {
if (mTabLayout != null) {
@@ -101,24 +114,41 @@ class TranslateCompactInfoBar extends InfoBar
@Override
public void onTabSelected(TabLayout.Tab tab) {
- if (tab.getPosition() == 0) {
- onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL);
- } else {
- mTabLayout.showProgressBarOnTab(tab.getPosition());
- onButtonClicked(ActionType.TRANSLATE);
+ switch (tab.getPosition()) {
+ case SOURCE_TAB_INDEX:
+ onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL);
+ return;
+ case TARGET_TAB_INDEX:
+ startTranslating(TARGET_TAB_INDEX);
+ return;
+ default:
+ assert false : "Unexpected Tab Index";
}
}
@Override
+ public void onTabUnselected(TabLayout.Tab tab) {}
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {}
+
+ @Override
public void onOverflowMenuItemClicked(int itemId) {
switch (itemId) {
case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
mMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
return;
case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
- case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
+ nativeApplyBoolTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.ALWAYS_TRANSLATE, true);
+ return;
case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
- // TODO(googleo): Add correct behaviors for each code here.
+ nativeApplyBoolTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE, true);
+ return;
+ case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
+ nativeApplyBoolTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
return;
case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
mMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
@@ -130,20 +160,28 @@ class TranslateCompactInfoBar extends InfoBar
@Override
public void onTargetMenuItemClicked(String code) {
- // TODO(googleo): Update translate code and translate page.
+ // Reset target code in both UI and native.
+ if (mOptions.setTargetLanguage(code)) {
+ nativeApplyStringTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, code);
+ // Adjust UI.
+ mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentationFromCode(code));
+ startTranslating(mTabLayout.getSelectedTabPosition());
+ }
}
@Override
public void onSourceMenuItemClicked(String code) {
- // TODO(googleo): Update translate code and translate page.
+ // Reset source code in both UI and native.
+ if (mOptions.setSourceLanguage(code)) {
+ nativeApplyStringTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, code);
+ // Adjust UI.
+ mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentationFromCode(code));
+ startTranslating(mTabLayout.getSelectedTabPosition());
+ }
}
- @Override
- public void onTabUnselected(TabLayout.Tab tab) {}
-
- @Override
- public void onTabReselected(TabLayout.Tab tab) {}
-
private native void nativeApplyStringTranslateOption(
long nativeTranslateCompactInfoBar, int option, String value);
private native void nativeApplyBoolTranslateOption(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698