OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 #include "chrome/browser/ui/views/translate/translate_bubble_view.h" | 5 #include "chrome/browser/ui/views/translate/translate_bubble_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 TranslateBubbleView::~TranslateBubbleView() { | 74 TranslateBubbleView::~TranslateBubbleView() { |
75 // A child view could refer to a model which is owned by this class when | 75 // A child view could refer to a model which is owned by this class when |
76 // the child view is destructed. For example, |source_language_combobx_model_| | 76 // the child view is destructed. For example, |source_language_combobx_model_| |
77 // is referred by Combobox's destructor. Before destroying the models, | 77 // is referred by Combobox's destructor. Before destroying the models, |
78 // removing the child views is needed. | 78 // removing the child views is needed. |
79 RemoveAllChildViews(true); | 79 RemoveAllChildViews(true); |
80 } | 80 } |
81 | 81 |
82 // static | 82 // static |
83 void TranslateBubbleView::ShowBubble(views::View* anchor_view, | 83 void TranslateBubbleView::ShowBubble( |
84 content::WebContents* web_contents, | 84 views::View* anchor_view, |
85 translate::TranslateStep step, | 85 content::WebContents* web_contents, |
86 TranslateErrors::Type error_type) { | 86 translate::TranslateStep step, |
| 87 translate::TranslateErrors::Type error_type) { |
87 if (IsShowing()) { | 88 if (IsShowing()) { |
88 // When the user reads the advanced setting panel, the bubble should not be | 89 // When the user reads the advanced setting panel, the bubble should not be |
89 // changed because he/she is focusing on the bubble. | 90 // changed because he/she is focusing on the bubble. |
90 if (translate_bubble_view_->web_contents() == web_contents && | 91 if (translate_bubble_view_->web_contents() == web_contents && |
91 translate_bubble_view_->model()->GetViewState() == | 92 translate_bubble_view_->model()->GetViewState() == |
92 TranslateBubbleModel::VIEW_STATE_ADVANCED) { | 93 TranslateBubbleModel::VIEW_STATE_ADVANCED) { |
93 return; | 94 return; |
94 } | 95 } |
95 if (step != translate::TRANSLATE_STEP_TRANSLATE_ERROR) { | 96 if (step != translate::TRANSLATE_STEP_TRANSLATE_ERROR) { |
96 TranslateBubbleModel::ViewState state = | 97 TranslateBubbleModel::ViewState state = |
97 TranslateBubbleModelImpl::TranslateStepToViewState(step); | 98 TranslateBubbleModelImpl::TranslateStepToViewState(step); |
98 translate_bubble_view_->SwitchView(state); | 99 translate_bubble_view_->SwitchView(state); |
99 } else { | 100 } else { |
100 translate_bubble_view_->SwitchToErrorView(error_type); | 101 translate_bubble_view_->SwitchToErrorView(error_type); |
101 } | 102 } |
102 return; | 103 return; |
103 } | 104 } |
104 | 105 |
105 std::string source_language; | 106 std::string source_language; |
106 std::string target_language; | 107 std::string target_language; |
107 ChromeTranslateClient::GetTranslateLanguages( | 108 ChromeTranslateClient::GetTranslateLanguages( |
108 web_contents, &source_language, &target_language); | 109 web_contents, &source_language, &target_language); |
109 | 110 |
110 scoped_ptr<TranslateUIDelegate> ui_delegate(new TranslateUIDelegate( | 111 scoped_ptr<translate::TranslateUIDelegate> ui_delegate( |
111 ChromeTranslateClient::GetManagerFromWebContents(web_contents) | 112 new translate::TranslateUIDelegate( |
112 ->GetWeakPtr(), | 113 ChromeTranslateClient::GetManagerFromWebContents(web_contents) |
113 source_language, | 114 ->GetWeakPtr(), |
114 target_language)); | 115 source_language, |
| 116 target_language)); |
115 scoped_ptr<TranslateBubbleModel> model( | 117 scoped_ptr<TranslateBubbleModel> model( |
116 new TranslateBubbleModelImpl(step, ui_delegate.Pass())); | 118 new TranslateBubbleModelImpl(step, ui_delegate.Pass())); |
117 TranslateBubbleView* view = new TranslateBubbleView(anchor_view, | 119 TranslateBubbleView* view = new TranslateBubbleView(anchor_view, |
118 model.Pass(), | 120 model.Pass(), |
119 error_type, | 121 error_type, |
120 web_contents); | 122 web_contents); |
121 views::BubbleDelegateView::CreateBubble(view)->Show(); | 123 views::BubbleDelegateView::CreateBubble(view)->Show(); |
122 } | 124 } |
123 | 125 |
124 // static | 126 // static |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 GetWidget()->CloseNow(); | 233 GetWidget()->CloseNow(); |
232 } | 234 } |
233 | 235 |
234 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { | 236 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { |
235 return model_->GetViewState(); | 237 return model_->GetViewState(); |
236 } | 238 } |
237 | 239 |
238 TranslateBubbleView::TranslateBubbleView( | 240 TranslateBubbleView::TranslateBubbleView( |
239 views::View* anchor_view, | 241 views::View* anchor_view, |
240 scoped_ptr<TranslateBubbleModel> model, | 242 scoped_ptr<TranslateBubbleModel> model, |
241 TranslateErrors::Type error_type, | 243 translate::TranslateErrors::Type error_type, |
242 content::WebContents* web_contents) | 244 content::WebContents* web_contents) |
243 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), | 245 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), |
244 WebContentsObserver(web_contents), | 246 WebContentsObserver(web_contents), |
245 before_translate_view_(NULL), | 247 before_translate_view_(NULL), |
246 translating_view_(NULL), | 248 translating_view_(NULL), |
247 after_translate_view_(NULL), | 249 after_translate_view_(NULL), |
248 error_view_(NULL), | 250 error_view_(NULL), |
249 advanced_view_(NULL), | 251 advanced_view_(NULL), |
250 denial_combobox_(NULL), | 252 denial_combobox_(NULL), |
251 source_language_combobox_(NULL), | 253 source_language_combobox_(NULL), |
252 target_language_combobox_(NULL), | 254 target_language_combobox_(NULL), |
253 always_translate_checkbox_(NULL), | 255 always_translate_checkbox_(NULL), |
254 advanced_cancel_button_(NULL), | 256 advanced_cancel_button_(NULL), |
255 advanced_done_button_(NULL), | 257 advanced_done_button_(NULL), |
256 model_(model.Pass()), | 258 model_(model.Pass()), |
257 error_type_(error_type), | 259 error_type_(error_type), |
258 is_in_incognito_window_( | 260 is_in_incognito_window_( |
259 web_contents ? | 261 web_contents ? web_contents->GetBrowserContext()->IsOffTheRecord() |
260 web_contents->GetBrowserContext()->IsOffTheRecord() : false), | 262 : false), |
261 translate_executed_(false), | 263 translate_executed_(false), |
262 denial_button_clicked_(false) { | 264 denial_button_clicked_(false) { |
263 if (model_->GetViewState() != | 265 if (model_->GetViewState() != |
264 TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE) { | 266 TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE) { |
265 translate_executed_ = true; | 267 translate_executed_ = true; |
266 } | 268 } |
267 | 269 |
268 set_margins(gfx::Insets(views::kPanelVertMargin, views::kPanelHorizMargin, | 270 set_margins(gfx::Insets(views::kPanelVertMargin, views::kPanelHorizMargin, |
269 views::kPanelVertMargin, views::kPanelHorizMargin)); | 271 views::kPanelVertMargin, views::kPanelHorizMargin)); |
270 | 272 |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 if (model_->GetViewState() == view_state) | 713 if (model_->GetViewState() == view_state) |
712 return; | 714 return; |
713 | 715 |
714 model_->SetViewState(view_state); | 716 model_->SetViewState(view_state); |
715 UpdateChildVisibilities(); | 717 UpdateChildVisibilities(); |
716 if (view_state == TranslateBubbleModel::VIEW_STATE_ADVANCED) | 718 if (view_state == TranslateBubbleModel::VIEW_STATE_ADVANCED) |
717 UpdateAdvancedView(); | 719 UpdateAdvancedView(); |
718 SizeToContents(); | 720 SizeToContents(); |
719 } | 721 } |
720 | 722 |
721 void TranslateBubbleView::SwitchToErrorView(TranslateErrors::Type error_type) { | 723 void TranslateBubbleView::SwitchToErrorView( |
| 724 translate::TranslateErrors::Type error_type) { |
722 SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR); | 725 SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR); |
723 error_type_ = error_type; | 726 error_type_ = error_type; |
724 model_->ShowError(error_type); | 727 model_->ShowError(error_type); |
725 } | 728 } |
726 | 729 |
727 void TranslateBubbleView::UpdateAdvancedView() { | 730 void TranslateBubbleView::UpdateAdvancedView() { |
728 DCHECK(source_language_combobox_); | 731 DCHECK(source_language_combobox_); |
729 DCHECK(target_language_combobox_); | 732 DCHECK(target_language_combobox_); |
730 DCHECK(advanced_done_button_); | 733 DCHECK(advanced_done_button_); |
731 | 734 |
(...skipping 10 matching lines...) Expand all Loading... |
742 model_->ShouldAlwaysTranslate()); | 745 model_->ShouldAlwaysTranslate()); |
743 } | 746 } |
744 | 747 |
745 base::string16 label; | 748 base::string16 label; |
746 if (model_->IsPageTranslatedInCurrentLanguages()) | 749 if (model_->IsPageTranslatedInCurrentLanguages()) |
747 label = l10n_util::GetStringUTF16(IDS_DONE); | 750 label = l10n_util::GetStringUTF16(IDS_DONE); |
748 else | 751 else |
749 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT); | 752 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT); |
750 advanced_done_button_->SetText(label); | 753 advanced_done_button_->SetText(label); |
751 } | 754 } |
OLD | NEW |