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

Unified Diff: chrome/browser/ui/views/translate/translate_bubble_view.cc

Issue 59383003: Add the button style for combobox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/translate/translate_bubble_view.cc
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
index ac73e84856117e3cac5338621243c09ef7c75dbc..3dfdac1c70d99684ab810f23b1348d1414c37ad5 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/translate/translate_ui_delegate.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
+#include "chrome/browser/ui/translate/translate_denial_menu_model.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/web_contents.h"
#include "grit/generated_resources.h"
@@ -28,6 +29,7 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/views/controls/button/checkbox.h"
#include "ui/views/controls/button/label_button.h"
+#include "ui/views/controls/button/multi_target_button.h"
#include "ui/views/controls/combobox/combobox.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/link.h"
@@ -69,49 +71,6 @@ void GetTranslateLanguages(content::WebContents* web_contents,
g_browser_process->GetApplicationLocale());
}
-// TODO(hajimehoshi): The interface to offer denial choices should be another
-// control instead of Combobox. See crbug/305494.
-class TranslateDenialComboboxModel : public ui::ComboboxModel {
- public:
- enum {
- INDEX_NOPE = 0,
- INDEX_NEVER_TRANSLATE_LANGUAGE = 2,
- INDEX_NEVER_TRANSLATE_SITE = 4,
- };
-
- explicit TranslateDenialComboboxModel(
- const string16& original_language_name) {
- items_.push_back(l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_DENY));
- items_.push_back(string16());
- items_.push_back(l10n_util::GetStringFUTF16(
- IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG,
- original_language_name));
- items_.push_back(string16());
- items_.push_back(l10n_util::GetStringUTF16(
- IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_SITE));
- }
- virtual ~TranslateDenialComboboxModel() {}
-
- private:
- // Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE {
- return items_.size();
- }
- virtual string16 GetItemAt(int index) OVERRIDE {
- return items_[index];
- }
- virtual bool IsItemSeparatorAt(int index) OVERRIDE {
- return items_[index].empty();
- }
- virtual int GetDefaultIndex() const OVERRIDE {
- return 0;
- }
-
- std::vector<string16> items_;
-
- DISALLOW_COPY_AND_ASSIGN(TranslateDenialComboboxModel);
-};
-
} // namespace
// static
@@ -251,6 +210,25 @@ void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) {
HandleLinkClicked(static_cast<LinkID>(source->id()));
}
+void TranslateBubbleView::OnExecutingDenialCommand(
+ TranslateDenialMenuModelObserver::Command command) {
+ switch (command) {
+ case TranslateDenialMenuModelObserver::COMMAND_DENY:
+ if (!translate_executed_)
+ model_->TranslationDeclined();
+ StartFade(false);
+ break;
+ case TranslateDenialMenuModelObserver::COMMAND_NEVER_TRANSLATE_LANG:
+ model_->SetNeverTranslateLanguage(true);
+ StartFade(false);
+ break;
+ case TranslateDenialMenuModelObserver::COMMAND_NEVER_TRANSLATE_SITE:
+ model_->SetNeverTranslateSite(true);
+ StartFade(false);
+ break;
+ }
+}
+
TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const {
return model_->GetViewState();
}
@@ -266,7 +244,7 @@ TranslateBubbleView::TranslateBubbleView(
after_translate_view_(NULL),
error_view_(NULL),
advanced_view_(NULL),
- denial_combobox_(NULL),
+ denial_button_(NULL),
source_language_combobox_(NULL),
target_language_combobox_(NULL),
always_translate_checkbox_(NULL),
@@ -362,28 +340,6 @@ void TranslateBubbleView::HandleLinkClicked(
void TranslateBubbleView::HandleComboboxSelectedIndexChanged(
TranslateBubbleView::ComboboxID sender_id) {
switch (sender_id) {
- case COMBOBOX_ID_DENIAL: {
- int index = denial_combobox_->selected_index();
- switch (index) {
- case TranslateDenialComboboxModel::INDEX_NOPE:
- if (!translate_executed_)
- model_->TranslationDeclined();
- StartFade(false);
- break;
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE:
- model_->SetNeverTranslateLanguage(true);
- StartFade(false);
- break;
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE:
- model_->SetNeverTranslateSite(true);
- StartFade(false);
- break;
- default:
- NOTREACHED();
- break;
- }
- break;
- }
case COMBOBOX_ID_SOURCE_LANGUAGE: {
model_->UpdateOriginalLanguageIndex(
source_language_combobox_->selected_index());
@@ -412,10 +368,9 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
string16 original_language_name =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
- denial_combobox_ = new views::Combobox(
- new TranslateDenialComboboxModel(original_language_name));
- denial_combobox_->set_id(COMBOBOX_ID_DENIAL);
- denial_combobox_->set_listener(this);
+ denial_button_model_.reset(
+ new TranslateDenialMenuModel(original_language_name, this));
+ denial_button_ = new views::MultiTargetButton(denial_button_model_.get());
views::View* view = new views::View();
views::GridLayout* layout = new views::GridLayout(view);
@@ -445,6 +400,9 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
cs->AddColumn(GridLayout::LEADING, GridLayout::CENTER,
0, GridLayout::USE_PREF, 0, 0);
+ cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
+ cs->AddColumn(GridLayout::LEADING, GridLayout::CENTER,
+ 0, GridLayout::USE_PREF, 0, 0);
layout->StartRow(0, COLUMN_SET_ID_MESSAGE);
layout->AddView(message_label);
@@ -458,7 +416,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
layout->AddView(CreateLink(this,
IDS_TRANSLATE_BUBBLE_LEARN_MORE,
LINK_ID_LEARN_MORE));
- layout->AddView(denial_combobox_);
+ layout->AddView(denial_button_);
layout->AddView(CreateLabelButton(
this,
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT),

Powered by Google App Engine
This is Rietveld 408576698