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"
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
));
39 set_request_focus_on_press(false);
41 SetFocusPainter(views::Painter::CreateSolidFocusPainter(
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
));
61 set_background(nullptr);