Home | History | Annotate | Download | only in translate
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
      6 
      7 #include "chrome/browser/translate/chrome_translate_client.h"
      8 #include "components/translate/core/browser/language_state.h"
      9 #include "components/translate/core/browser/translate_ui_delegate.h"
     10 
     11 TranslateBubbleModelImpl::TranslateBubbleModelImpl(
     12     translate::TranslateStep step,
     13     scoped_ptr<TranslateUIDelegate> ui_delegate)
     14     : ui_delegate_(ui_delegate.Pass()),
     15       view_state_transition_(TranslateStepToViewState(step)) {}
     16 
     17 TranslateBubbleModelImpl::~TranslateBubbleModelImpl() {
     18 }
     19 
     20 // static
     21 TranslateBubbleModel::ViewState
     22 TranslateBubbleModelImpl::TranslateStepToViewState(
     23     translate::TranslateStep step) {
     24   switch (step) {
     25     case translate::TRANSLATE_STEP_BEFORE_TRANSLATE:
     26       return TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE;
     27     case translate::TRANSLATE_STEP_TRANSLATING:
     28       return TranslateBubbleModel::VIEW_STATE_TRANSLATING;
     29     case translate::TRANSLATE_STEP_AFTER_TRANSLATE:
     30       return TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE;
     31     case translate::TRANSLATE_STEP_TRANSLATE_ERROR:
     32       return TranslateBubbleModel::VIEW_STATE_ERROR;
     33   }
     34 
     35   NOTREACHED();
     36   return TranslateBubbleModel::VIEW_STATE_ERROR;
     37 }
     38 
     39 TranslateBubbleModel::ViewState TranslateBubbleModelImpl::GetViewState() const {
     40   return view_state_transition_.view_state();
     41 }
     42 
     43 void TranslateBubbleModelImpl::SetViewState(
     44     TranslateBubbleModel::ViewState view_state) {
     45   view_state_transition_.SetViewState(view_state);
     46 }
     47 
     48 void TranslateBubbleModelImpl::ShowError(TranslateErrors::Type error_type) {
     49   ui_delegate_->OnErrorShown(error_type);
     50 }
     51 
     52 void TranslateBubbleModelImpl::GoBackFromAdvanced() {
     53   view_state_transition_.GoBackFromAdvanced();
     54 }
     55 
     56 int TranslateBubbleModelImpl::GetNumberOfLanguages() const {
     57   return ui_delegate_->GetNumberOfLanguages();
     58 }
     59 
     60 base::string16 TranslateBubbleModelImpl::GetLanguageNameAt(int index) const {
     61   return ui_delegate_->GetLanguageNameAt(index);
     62 }
     63 
     64 int TranslateBubbleModelImpl::GetOriginalLanguageIndex() const {
     65   return ui_delegate_->GetOriginalLanguageIndex();
     66 }
     67 
     68 void TranslateBubbleModelImpl::UpdateOriginalLanguageIndex(int index) {
     69   ui_delegate_->UpdateOriginalLanguageIndex(index);
     70 }
     71 
     72 int TranslateBubbleModelImpl::GetTargetLanguageIndex() const {
     73   return ui_delegate_->GetTargetLanguageIndex();
     74 }
     75 
     76 void TranslateBubbleModelImpl::UpdateTargetLanguageIndex(int index) {
     77   ui_delegate_->UpdateTargetLanguageIndex(index);
     78 }
     79 
     80 void TranslateBubbleModelImpl::SetNeverTranslateLanguage(bool value) {
     81   ui_delegate_->SetLanguageBlocked(value);
     82 }
     83 
     84 void TranslateBubbleModelImpl::SetNeverTranslateSite(bool value) {
     85   ui_delegate_->SetSiteBlacklist(value);
     86 }
     87 
     88 bool TranslateBubbleModelImpl::ShouldAlwaysTranslate() const {
     89   return ui_delegate_->ShouldAlwaysTranslate();
     90 }
     91 
     92 void TranslateBubbleModelImpl::SetAlwaysTranslate(bool value) {
     93   ui_delegate_->SetAlwaysTranslate(value);
     94 }
     95 
     96 void TranslateBubbleModelImpl::Translate() {
     97   ui_delegate_->Translate();
     98 }
     99 
    100 void TranslateBubbleModelImpl::RevertTranslation() {
    101   ui_delegate_->RevertTranslation();
    102 }
    103 
    104 void TranslateBubbleModelImpl::TranslationDeclined(bool explicitly_closed) {
    105   ui_delegate_->TranslationDeclined(explicitly_closed);
    106 }
    107 
    108 bool TranslateBubbleModelImpl::IsPageTranslatedInCurrentLanguages() const {
    109   const LanguageState& language_state = ui_delegate_->GetLanguageState();
    110   return ui_delegate_->GetOriginalLanguageCode() ==
    111       language_state.original_language() &&
    112       ui_delegate_->GetTargetLanguageCode() ==
    113       language_state.current_language();
    114 }
    115