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 |