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 11TranslateBubbleModelImpl::TranslateBubbleModelImpl( 12 translate::TranslateStep step, 13 scoped_ptr<translate::TranslateUIDelegate> ui_delegate) 14 : ui_delegate_(ui_delegate.Pass()), 15 view_state_transition_(TranslateStepToViewState(step)) { 16} 17 18TranslateBubbleModelImpl::~TranslateBubbleModelImpl() { 19} 20 21// static 22TranslateBubbleModel::ViewState 23TranslateBubbleModelImpl::TranslateStepToViewState( 24 translate::TranslateStep step) { 25 switch (step) { 26 case translate::TRANSLATE_STEP_BEFORE_TRANSLATE: 27 return TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE; 28 case translate::TRANSLATE_STEP_TRANSLATING: 29 return TranslateBubbleModel::VIEW_STATE_TRANSLATING; 30 case translate::TRANSLATE_STEP_AFTER_TRANSLATE: 31 return TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE; 32 case translate::TRANSLATE_STEP_TRANSLATE_ERROR: 33 return TranslateBubbleModel::VIEW_STATE_ERROR; 34 } 35 36 NOTREACHED(); 37 return TranslateBubbleModel::VIEW_STATE_ERROR; 38} 39 40TranslateBubbleModel::ViewState TranslateBubbleModelImpl::GetViewState() const { 41 return view_state_transition_.view_state(); 42} 43 44void TranslateBubbleModelImpl::SetViewState( 45 TranslateBubbleModel::ViewState view_state) { 46 view_state_transition_.SetViewState(view_state); 47} 48 49void TranslateBubbleModelImpl::ShowError( 50 translate::TranslateErrors::Type error_type) { 51 ui_delegate_->OnErrorShown(error_type); 52} 53 54void TranslateBubbleModelImpl::GoBackFromAdvanced() { 55 view_state_transition_.GoBackFromAdvanced(); 56} 57 58int TranslateBubbleModelImpl::GetNumberOfLanguages() const { 59 return ui_delegate_->GetNumberOfLanguages(); 60} 61 62base::string16 TranslateBubbleModelImpl::GetLanguageNameAt(int index) const { 63 return ui_delegate_->GetLanguageNameAt(index); 64} 65 66int TranslateBubbleModelImpl::GetOriginalLanguageIndex() const { 67 return ui_delegate_->GetOriginalLanguageIndex(); 68} 69 70void TranslateBubbleModelImpl::UpdateOriginalLanguageIndex(int index) { 71 ui_delegate_->UpdateOriginalLanguageIndex(index); 72} 73 74int TranslateBubbleModelImpl::GetTargetLanguageIndex() const { 75 return ui_delegate_->GetTargetLanguageIndex(); 76} 77 78void TranslateBubbleModelImpl::UpdateTargetLanguageIndex(int index) { 79 ui_delegate_->UpdateTargetLanguageIndex(index); 80} 81 82void TranslateBubbleModelImpl::SetNeverTranslateLanguage(bool value) { 83 ui_delegate_->SetLanguageBlocked(value); 84} 85 86void TranslateBubbleModelImpl::SetNeverTranslateSite(bool value) { 87 ui_delegate_->SetSiteBlacklist(value); 88} 89 90bool TranslateBubbleModelImpl::ShouldAlwaysTranslate() const { 91 return ui_delegate_->ShouldAlwaysTranslate(); 92} 93 94void TranslateBubbleModelImpl::SetAlwaysTranslate(bool value) { 95 ui_delegate_->SetAlwaysTranslate(value); 96} 97 98void TranslateBubbleModelImpl::Translate() { 99 ui_delegate_->Translate(); 100} 101 102void TranslateBubbleModelImpl::RevertTranslation() { 103 ui_delegate_->RevertTranslation(); 104} 105 106void TranslateBubbleModelImpl::TranslationDeclined(bool explicitly_closed) { 107 ui_delegate_->TranslationDeclined(explicitly_closed); 108} 109 110bool TranslateBubbleModelImpl::IsPageTranslatedInCurrentLanguages() const { 111 const translate::LanguageState& language_state = 112 ui_delegate_->GetLanguageState(); 113 return ui_delegate_->GetOriginalLanguageCode() == 114 language_state.original_language() && 115 ui_delegate_->GetTargetLanguageCode() == 116 language_state.current_language(); 117} 118