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

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

Issue 325483003: Remove unused Views Translate InfoBar code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and rebase 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/before_translate_infobar.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/ui/views/infobars/translate_language_menu_model.h"
9 #include "components/translate/core/browser/options_menu_model.h"
10 #include "components/translate/core/browser/translate_infobar_delegate.h"
11 #include "grit/components_strings.h"
12 #include "ui/base/l10n/l10n_util.h"
13 #include "ui/views/controls/button/label_button.h"
14 #include "ui/views/controls/button/menu_button.h"
15 #include "ui/views/controls/label.h"
16
17 BeforeTranslateInfoBar::BeforeTranslateInfoBar(
18 scoped_ptr<TranslateInfoBarDelegate> delegate)
19 : TranslateInfoBarBase(delegate.Pass()),
20 label_1_(NULL),
21 label_2_(NULL),
22 language_menu_button_(NULL),
23 accept_button_(NULL),
24 deny_button_(NULL),
25 never_translate_button_(NULL),
26 always_translate_button_(NULL),
27 options_menu_button_(NULL) {
28 }
29
30 BeforeTranslateInfoBar::~BeforeTranslateInfoBar() {
31 }
32
33 void BeforeTranslateInfoBar::Layout() {
34 TranslateInfoBarBase::Layout();
35
36 int x = StartX();
37 Labels labels;
38 labels.push_back(label_1_);
39 labels.push_back(label_2_);
40 AssignWidths(&labels, std::max(0, EndX() - x - NonLabelWidth()));
41
42 label_1_->SetPosition(gfx::Point(x, OffsetY(label_1_)));
43 if (!label_1_->text().empty())
44 x = label_1_->bounds().right() + kButtonInLabelSpacing;
45
46 language_menu_button_->SetPosition(
47 gfx::Point(x, OffsetY(language_menu_button_)));
48 x = language_menu_button_->bounds().right();
49
50 label_2_->SetPosition(
51 gfx::Point(x + kButtonInLabelSpacing, OffsetY(label_2_)));
52 x = (label_2_->text().empty() ? x : label_2_->bounds().right()) +
53 kEndOfLabelSpacing;
54
55 accept_button_->SetPosition(gfx::Point(x, OffsetY(accept_button_)));
56 x = accept_button_->bounds().right() + kButtonButtonSpacing;
57
58 deny_button_->SetPosition(gfx::Point(x, OffsetY(deny_button_)));
59 x = deny_button_->bounds().right() + kButtonButtonSpacing;
60
61 if (never_translate_button_) {
62 never_translate_button_->SetPosition(
63 gfx::Point(x, OffsetY(never_translate_button_)));
64 x = never_translate_button_->bounds().right() + kButtonButtonSpacing;
65 }
66
67 if (always_translate_button_) {
68 always_translate_button_->SetPosition(
69 gfx::Point(x, OffsetY(always_translate_button_)));
70 }
71
72 options_menu_button_->SetPosition(gfx::Point(
73 EndX() - options_menu_button_->width(), OffsetY(options_menu_button_)));
74 }
75
76 void BeforeTranslateInfoBar::ViewHierarchyChanged(
77 const ViewHierarchyChangedDetails& details) {
78 if (!details.is_add || (details.child != this) || (label_1_ != NULL)) {
79 TranslateInfoBarBase::ViewHierarchyChanged(details);
80 return;
81 }
82
83 size_t offset = 0;
84 base::string16 text(
85 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE,
86 base::string16(), &offset));
87
88 label_1_ = CreateLabel(text.substr(0, offset));
89 AddChildView(label_1_);
90
91 language_menu_button_ = CreateMenuButton(base::string16(), this);
92 TranslateInfoBarDelegate* delegate = GetDelegate();
93 language_menu_model_.reset(new TranslateLanguageMenuModel(
94 TranslateLanguageMenuModel::ORIGINAL, delegate, this,
95 language_menu_button_, false));
96 AddChildView(language_menu_button_);
97
98 label_2_ = CreateLabel(text.substr(offset));
99 AddChildView(label_2_);
100
101 accept_button_ = CreateLabelButton(
102 this, l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_ACCEPT));
103 AddChildView(accept_button_);
104
105 deny_button_ = CreateLabelButton(
106 this, l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_DENY));
107 AddChildView(deny_button_);
108
109 const base::string16& language(
110 delegate->language_name_at(delegate->original_language_index()));
111 if (delegate->ShouldShowNeverTranslateShortcut()) {
112 DCHECK(!delegate->ShouldShowAlwaysTranslateShortcut());
113 never_translate_button_ = CreateLabelButton(
114 this,
115 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_NEVER_TRANSLATE,
116 language));
117 AddChildView(never_translate_button_);
118 } else if (delegate->ShouldShowAlwaysTranslateShortcut()) {
119 always_translate_button_ = CreateLabelButton(
120 this,
121 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE,
122 language));
123 AddChildView(always_translate_button_);
124 }
125
126 options_menu_button_ = CreateMenuButton(
127 l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS), this);
128 options_menu_model_.reset(new OptionsMenuModel(delegate));
129 AddChildView(options_menu_button_);
130
131 // This must happen after adding all other children so InfoBarView can ensure
132 // the close button is the last child.
133 TranslateInfoBarBase::ViewHierarchyChanged(details);
134
135 // This must happen after adding all children because it triggers layout,
136 // which assumes that particular children (e.g. the close button) have already
137 // been added.
138 UpdateLanguageButtonText(language_menu_button_,
139 delegate->language_name_at(delegate->original_language_index()));
140 }
141
142 int BeforeTranslateInfoBar::ContentMinimumWidth() const {
143 return label_1_->GetMinimumSize().width() +
144 label_2_->GetMinimumSize().width() + NonLabelWidth();
145 }
146
147 void BeforeTranslateInfoBar::ButtonPressed(views::Button* sender,
148 const ui::Event& event) {
149 if (!owner())
150 return; // We're closing; don't call anything, it might access the owner.
151 TranslateInfoBarDelegate* delegate = GetDelegate();
152 if (sender == accept_button_) {
153 delegate->Translate();
154 } else if (sender == deny_button_) {
155 delegate->TranslationDeclined();
156 RemoveSelf();
157 } else if (sender == never_translate_button_) {
158 delegate->NeverTranslatePageLanguage();
159 } else if (sender == always_translate_button_) {
160 delegate->AlwaysTranslatePageLanguage();
161 } else {
162 TranslateInfoBarBase::ButtonPressed(sender, event);
163 }
164 }
165
166 void BeforeTranslateInfoBar::OnMenuButtonClicked(views::View* source,
167 const gfx::Point& point) {
168 if (!owner())
169 return; // We're closing; don't call anything, it might access the owner.
170 if (source == language_menu_button_) {
171 RunMenuAt(language_menu_model_.get(),
172 language_menu_button_,
173 views::MENU_ANCHOR_TOPLEFT);
174 } else {
175 DCHECK_EQ(options_menu_button_, source);
176 RunMenuAt(options_menu_model_.get(),
177 options_menu_button_,
178 views::MENU_ANCHOR_TOPRIGHT);
179 }
180 }
181
182 int BeforeTranslateInfoBar::NonLabelWidth() const {
183 return (label_1_->text().empty() ? 0 : kButtonInLabelSpacing) +
184 language_menu_button_->width() +
185 (label_2_->text().empty() ? 0 : kButtonInLabelSpacing) +
186 kEndOfLabelSpacing + accept_button_->width() + kButtonButtonSpacing +
187 deny_button_->width() +
188 (never_translate_button_ ?
189 (kButtonButtonSpacing + never_translate_button_->width()) : 0) +
190 (always_translate_button_ ?
191 (kButtonButtonSpacing + always_translate_button_->width()) : 0) +
192 kEndOfLabelSpacing + options_menu_button_->width();
193 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/infobars/before_translate_infobar.h ('k') | chrome/browser/ui/views/infobars/translate_infobar_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698