| 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.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.widget.TintedImageButton; | 19 import org.chromium.chrome.browser.widget.TintedImageButton; |
| 19 import org.chromium.ui.widget.Toast; | 20 import org.chromium.ui.widget.Toast; |
| 20 | 21 |
| 21 /** | 22 /** |
| 22 * Java version of the compcat translate infobar | 23 * Java version of the compcat translate infobar |
| 23 */ | 24 */ |
| 24 class TranslateCompactInfoBar extends InfoBar | 25 class TranslateCompactInfoBar extends InfoBar |
| 25 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat
eMenuListener { | 26 implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.Translat
eMenuListener { |
| 26 public static final int TRANSLATING_INFOBAR = 1; | 27 public static final int TRANSLATING_INFOBAR = 1; |
| 27 | 28 |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 return; | 194 return; |
| 194 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: | 195 case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: |
| 195 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); | 196 initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); |
| 196 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); | 197 mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); |
| 197 return; | 198 return; |
| 198 default: | 199 default: |
| 199 assert false : "Unexpected overflow menu code"; | 200 assert false : "Unexpected overflow menu code"; |
| 200 } | 201 } |
| 201 } | 202 } |
| 202 | 203 |
| 203 private void showSnackbar(int snackbarType) { | |
| 204 // TODO(ramyasharma): Show snackbar. | |
| 205 } | |
| 206 | |
| 207 @Override | 204 @Override |
| 208 public void onTargetMenuItemClicked(String code) { | 205 public void onTargetMenuItemClicked(String code) { |
| 209 // Reset target code in both UI and native. | 206 // Reset target code in both UI and native. |
| 210 if (mOptions.setTargetLanguage(code)) { | 207 if (mOptions.setTargetLanguage(code)) { |
| 211 nativeApplyStringTranslateOption( | 208 nativeApplyStringTranslateOption( |
| 212 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod
e); | 209 mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, cod
e); |
| 213 // Adjust UI. | 210 // Adjust UI. |
| 214 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat
ionFromCode(code)); | 211 mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentat
ionFromCode(code)); |
| 215 startTranslating(mTabLayout.getSelectedTabPosition()); | 212 startTranslating(mTabLayout.getSelectedTabPosition()); |
| 216 } | 213 } |
| 217 } | 214 } |
| 218 | 215 |
| 219 @Override | 216 @Override |
| 220 public void onSourceMenuItemClicked(String code) { | 217 public void onSourceMenuItemClicked(String code) { |
| 221 // Reset source code in both UI and native. | 218 // Reset source code in both UI and native. |
| 222 if (mOptions.setSourceLanguage(code)) { | 219 if (mOptions.setSourceLanguage(code)) { |
| 223 nativeApplyStringTranslateOption( | 220 nativeApplyStringTranslateOption( |
| 224 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod
e); | 221 mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, cod
e); |
| 225 // Adjust UI. | 222 // Adjust UI. |
| 226 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat
ionFromCode(code)); | 223 mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentat
ionFromCode(code)); |
| 227 startTranslating(mTabLayout.getSelectedTabPosition()); | 224 startTranslating(mTabLayout.getSelectedTabPosition()); |
| 228 } | 225 } |
| 229 } | 226 } |
| 230 | 227 |
| 228 private void showSnackbar(int snackbarType) { |
| 229 if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE) { |
| 230 createAndShowSnackbar(getContext().getString(R.string.translate_snac
kbar_language_never, |
| 231 mOptions.sourceLanguageName()), |
| 232 Snackbar.UMA_TRANSLATE_NEVER); |
| 233 } else if (snackbarType == TranslateSnackbarType.ALWAYS_TRANSLATE) { |
| 234 createAndShowSnackbar( |
| 235 getContext().getString(R.string.translate_snackbar_always_tr
anslate, |
| 236 mOptions.sourceLanguageName(), mOptions.targetLangua
geName()), |
| 237 Snackbar.UMA_TRANSLATE_ALWAYS); |
| 238 } else if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE_SITE) { |
| 239 createAndShowSnackbar(getContext().getString(R.string.translate_snac
kbar_site_never), |
| 240 Snackbar.UMA_TRANSLATE_NEVER_SITE); |
| 241 } |
| 242 } |
| 243 |
| 244 private void createAndShowSnackbar(String title, int type) { |
| 245 if (getSnackbarManager() == null) { |
| 246 return; |
| 247 } |
| 248 getSnackbarManager().showSnackbar(Snackbar.make(title, new TranslateSnac
kbarController(), |
| 249 Snackbar.TYPE_NOTIFICA
TION, type) |
| 250 .setSingleLine(false)); |
| 251 } |
| 252 |
| 231 private native void nativeApplyStringTranslateOption( | 253 private native void nativeApplyStringTranslateOption( |
| 232 long nativeTranslateCompactInfoBar, int option, String value); | 254 long nativeTranslateCompactInfoBar, int option, String value); |
| 233 private native void nativeApplyBoolTranslateOption( | 255 private native void nativeApplyBoolTranslateOption( |
| 234 long nativeTranslateCompactInfoBar, int option, boolean value); | 256 long nativeTranslateCompactInfoBar, int option, boolean value); |
| 235 } | 257 } |
| OLD | NEW |