Switch global error menu icon to vectorized MD asset
[chromium-blink-merge.git] / ash / system / tray / tray_popup_header_button.cc
blob0a1f206021bee38493e42c209749a6d477c92283
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
3 // found in the LICENSE file.
5 #include "ash/system/tray/tray_popup_header_button.h"
7 #include "ash/ash_constants.h"
8 #include "ash/system/tray/tray_constants.h"
9 #include "ui/base/resource/resource_bundle.h"
10 #include "ui/views/background.h"
11 #include "ui/views/painter.h"
13 namespace ash {
15 // static
16 const char TrayPopupHeaderButton::kViewClassName[] =
17 "tray/TrayPopupHeaderButton";
19 TrayPopupHeaderButton::TrayPopupHeaderButton(views::ButtonListener* listener,
20 int enabled_resource_id,
21 int disabled_resource_id,
22 int enabled_resource_id_hover,
23 int disabled_resource_id_hover,
24 int accessible_name_id)
25 : views::ToggleImageButton(listener) {
26 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
27 SetImage(views::Button::STATE_NORMAL,
28 bundle.GetImageNamed(enabled_resource_id).ToImageSkia());
29 SetToggledImage(views::Button::STATE_NORMAL,
30 bundle.GetImageNamed(disabled_resource_id).ToImageSkia());
31 SetImage(views::Button::STATE_HOVERED,
32 bundle.GetImageNamed(enabled_resource_id_hover).ToImageSkia());
33 SetToggledImage(views::Button::STATE_HOVERED,
34 bundle.GetImageNamed(disabled_resource_id_hover).ToImageSkia());
35 SetImageAlignment(views::ImageButton::ALIGN_CENTER,
36 views::ImageButton::ALIGN_MIDDLE);
37 SetAccessibleName(bundle.GetLocalizedString(accessible_name_id));
38 SetFocusable(true);
39 set_request_focus_on_press(false);
41 SetFocusPainter(views::Painter::CreateSolidFocusPainter(
42 kFocusBorderColor,
43 gfx::Insets(1, 2, 2, 3)));
46 TrayPopupHeaderButton::~TrayPopupHeaderButton() {}
48 const char* TrayPopupHeaderButton::GetClassName() const {
49 return kViewClassName;
52 gfx::Size TrayPopupHeaderButton::GetPreferredSize() const {
53 return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight);
56 void TrayPopupHeaderButton::StateChanged() {
57 if (state() == STATE_HOVERED || state() == STATE_PRESSED) {
58 set_background(views::Background::CreateSolidBackground(
59 kTrayPopupHoverBackgroundColor));
60 } else {
61 set_background(nullptr);
63 SchedulePaint();
66 } // namespace ash