Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: chrome/browser/ui/views/infobars/translate_infobar_base.cc

Issue 325483003: Remove unused Views Translate InfoBar code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove test-only infobar toggle; no-op tests for incompatible UX. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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/views/infobars/translate_infobar_base.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/translate/chrome_translate_client.h"
9 #include "chrome/browser/ui/views/infobars/after_translate_infobar.h"
10 #include "chrome/browser/ui/views/infobars/before_translate_infobar.h"
11 #include "chrome/browser/ui/views/infobars/translate_message_infobar.h"
12 #include "components/infobars/core/infobar.h"
13 #include "components/translate/core/browser/translate_infobar_delegate.h"
14 #include "grit/theme_resources.h"
15 #include "ui/base/resource/resource_bundle.h"
16 #include "ui/gfx/animation/slide_animation.h"
17 #include "ui/gfx/canvas.h"
18 #include "ui/views/controls/button/menu_button.h"
19 #include "ui/views/controls/label.h"
20
21 // ChromeTranslateClient
22 // ----------------------------------------------------------
23
24 scoped_ptr<infobars::InfoBar> ChromeTranslateClient::CreateInfoBar(
25 scoped_ptr<TranslateInfoBarDelegate> delegate) const {
26 if (delegate->translate_step() ==
27 translate::TRANSLATE_STEP_BEFORE_TRANSLATE) {
28 return scoped_ptr<infobars::InfoBar>(
29 new BeforeTranslateInfoBar(delegate.Pass()));
30 }
31 if (delegate->translate_step() ==
32 translate::TRANSLATE_STEP_AFTER_TRANSLATE) {
33 return scoped_ptr<infobars::InfoBar>(
34 new AfterTranslateInfoBar(delegate.Pass()));
35 }
36 return scoped_ptr<infobars::InfoBar>(
37 new TranslateMessageInfoBar(delegate.Pass()));
38 }
39
40
41 // TranslateInfoBarBase -------------------------------------------------------
42
43 // static
44 const int TranslateInfoBarBase::kButtonInLabelSpacing = 5;
45
46 void TranslateInfoBarBase::UpdateLanguageButtonText(
47 views::MenuButton* button,
48 const base::string16& text) {
49 DCHECK(button);
50 button->SetText(text);
51 button->ClearMaxTextSize();
52 button->SizeToPreferredSize();
53 Layout();
54 SchedulePaint();
55 }
56
57 TranslateInfoBarBase::TranslateInfoBarBase(
58 scoped_ptr<TranslateInfoBarDelegate> delegate)
59 : InfoBarView(delegate.PassAs<infobars::InfoBarDelegate>()),
60 error_background_(infobars::InfoBarDelegate::WARNING_TYPE) {
61 }
62
63 TranslateInfoBarBase::~TranslateInfoBarBase() {
64 }
65
66 void TranslateInfoBarBase::ViewHierarchyChanged(
67 const ViewHierarchyChangedDetails& details) {
68 if (details.is_add && (details.child == this) &&
69 (background_color_animation_ == NULL)) {
70 background_color_animation_.reset(new gfx::SlideAnimation(this));
71 background_color_animation_->SetTweenType(gfx::Tween::LINEAR);
72 background_color_animation_->SetSlideDuration(500);
73 TranslateInfoBarDelegate::BackgroundAnimationType animation =
74 GetDelegate()->background_animation_type();
75 if (animation == TranslateInfoBarDelegate::NORMAL_TO_ERROR) {
76 background_color_animation_->Show();
77 } else if (animation == TranslateInfoBarDelegate::ERROR_TO_NORMAL) {
78 // Hide() runs the animation in reverse.
79 background_color_animation_->Reset(1.0);
80 background_color_animation_->Hide();
81 }
82 }
83
84 // This must happen after adding all other children so InfoBarView can ensure
85 // the close button is the last child.
86 InfoBarView::ViewHierarchyChanged(details);
87 }
88
89 TranslateInfoBarDelegate* TranslateInfoBarBase::GetDelegate() {
90 return delegate()->AsTranslateInfoBarDelegate();
91 }
92
93 void TranslateInfoBarBase::OnPaintBackground(gfx::Canvas* canvas) {
94 // We need to set the separator color for |error_background_| like
95 // InfoBarView::Layout() does for the normal background.
96 const infobars::InfoBarContainer::Delegate* delegate = container_delegate();
97 if (delegate)
98 error_background_.set_separator_color(delegate->GetInfoBarSeparatorColor());
99
100 // If we're not animating, simply paint the background for the current state.
101 if (!background_color_animation_->is_animating()) {
102 GetBackground().Paint(canvas, this);
103 return;
104 }
105
106 FadeBackground(canvas, 1.0 - background_color_animation_->GetCurrentValue(),
107 *background());
108 FadeBackground(canvas, background_color_animation_->GetCurrentValue(),
109 error_background_);
110 }
111
112 void TranslateInfoBarBase::AnimationProgressed(
113 const gfx::Animation* animation) {
114 if (animation == background_color_animation_.get())
115 SchedulePaint(); // That'll trigger a PaintBackgroud.
116 else
117 InfoBarView::AnimationProgressed(animation);
118 }
119
120 const views::Background& TranslateInfoBarBase::GetBackground() {
121 return GetDelegate()->is_error() ? error_background_ : *background();
122 }
123
124 void TranslateInfoBarBase::FadeBackground(gfx::Canvas* canvas,
125 double animation_value,
126 const views::Background& background) {
127 // Draw the background into an offscreen buffer with alpha value per animation
128 // value, then blend it back into the current canvas.
129 canvas->SaveLayerAlpha(static_cast<int>(animation_value * 255));
130 background.Paint(canvas, this);
131 canvas->Restore();
132 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698