| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ui/views/location_bar/search_button.h" |
| |
| #include "grit/theme_resources.h" |
| #include "ui/base/theme_provider.h" |
| #include "ui/views/controls/button/label_button_border.h" |
| |
| SearchButton::SearchButton(views::ButtonListener* listener) |
| : views::LabelButton(listener, base::string16()) { |
| EnableCanvasFlippingForRTLUI(true); |
| set_triggerable_event_flags( |
| ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON); |
| SetStyle(views::Button::STYLE_BUTTON); |
| SetFocusable(false); |
| SetMinSize(gfx::Size()); |
| scoped_ptr<views::LabelButtonBorder> border( |
| new views::LabelButtonBorder(style())); |
| border->set_insets(gfx::Insets()); |
| const int kSearchButtonNormalImages[] = IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON); |
| border->SetPainter( |
| false, views::Button::STATE_NORMAL, |
| views::Painter::CreateImageGridPainter(kSearchButtonNormalImages)); |
| const int kSearchButtonHoveredImages[] = |
| IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON_HOVER); |
| border->SetPainter( |
| false, views::Button::STATE_HOVERED, |
| views::Painter::CreateImageGridPainter(kSearchButtonHoveredImages)); |
| const int kSearchButtonPressedImages[] = |
| IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON_PRESSED); |
| border->SetPainter( |
| false, views::Button::STATE_PRESSED, |
| views::Painter::CreateImageGridPainter(kSearchButtonPressedImages)); |
| border->SetPainter(false, views::Button::STATE_DISABLED, NULL); |
| border->SetPainter(true, views::Button::STATE_NORMAL, NULL); |
| border->SetPainter(true, views::Button::STATE_HOVERED, NULL); |
| border->SetPainter(true, views::Button::STATE_PRESSED, NULL); |
| border->SetPainter(true, views::Button::STATE_DISABLED, NULL); |
| SetBorder(border.Pass()); |
| const int kSearchButtonWidth = 56; |
| SetMinSize(gfx::Size(kSearchButtonWidth, 0)); |
| } |
| |
| SearchButton::~SearchButton() { |
| } |
| |
| void SearchButton::UpdateIcon(bool is_search) { |
| SetImage( |
| views::Button::STATE_NORMAL, |
| *GetThemeProvider()->GetImageSkiaNamed(is_search ? |
| IDR_OMNIBOX_SEARCH_BUTTON_LOUPE : IDR_OMNIBOX_SEARCH_BUTTON_ARROW)); |
| // Flip the arrow for RTL, but not the loupe. |
| image()->EnableCanvasFlippingForRTLUI(!is_search); |
| } |