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