blob: 50c135620afc268e20d0f159c063beebc790a487 [file] [log] [blame]
[email protected]09ef4992013-03-26 12:46:291// 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.
4
5#include "ash/system/tray/tray_popup_header_button.h"
6
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/gfx/canvas.h"
[email protected]1966d6d12013-12-05 04:19:3511#include "ui/views/painter.h"
[email protected]09ef4992013-03-26 12:46:2912
13namespace ash {
[email protected]09ef4992013-03-26 12:46:2914
[email protected]0120f7692013-07-28 07:51:5515// static
16const char TrayPopupHeaderButton::kViewClassName[] =
17 "tray/TrayPopupHeaderButton";
18
[email protected]09ef4992013-03-26 12:46:2919TrayPopupHeaderButton::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));
[email protected]505df7b2013-12-16 14:07:1938 SetFocusable(true);
[email protected]09ef4992013-03-26 12:46:2939 set_request_focus_on_press(false);
[email protected]5db93a12013-12-02 21:07:3140
[email protected]1966d6d12013-12-05 04:19:3541 SetFocusPainter(views::Painter::CreateSolidFocusPainter(
42 kFocusBorderColor,
43 gfx::Insets(1, 2, 2, 3)));
[email protected]09ef4992013-03-26 12:46:2944}
45
46TrayPopupHeaderButton::~TrayPopupHeaderButton() {}
47
[email protected]0120f7692013-07-28 07:51:5548const char* TrayPopupHeaderButton::GetClassName() const {
49 return kViewClassName;
50}
51
[email protected]09ef4992013-03-26 12:46:2952gfx::Size TrayPopupHeaderButton::GetPreferredSize() {
53 return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight);
54}
55
56void TrayPopupHeaderButton::OnPaintBorder(gfx::Canvas* canvas) {
57 // Just the left border.
58 const int kBorderHeight = 25;
59 int padding = (height() - kBorderHeight) / 2;
60 canvas->FillRect(gfx::Rect(0, padding, 1, height() - padding * 2),
61 ash::kBorderDarkColor);
62}
63
[email protected]09ef4992013-03-26 12:46:2964void TrayPopupHeaderButton::StateChanged() {
65 SchedulePaint();
66}
67
[email protected]09ef4992013-03-26 12:46:2968} // namespace ash