diff options
Diffstat (limited to 'chromium/ash/system/tray/tray_popup_header_button.cc')
-rw-r--r-- | chromium/ash/system/tray/tray_popup_header_button.cc | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/chromium/ash/system/tray/tray_popup_header_button.cc b/chromium/ash/system/tray/tray_popup_header_button.cc new file mode 100644 index 00000000000..d19cbc54823 --- /dev/null +++ b/chromium/ash/system/tray/tray_popup_header_button.cc @@ -0,0 +1,70 @@ +// Copyright 2013 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 "ash/system/tray/tray_popup_header_button.h" + +#include "ash/ash_constants.h" +#include "ash/system/tray/tray_constants.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/canvas.h" +#include "ui/views/painter.h" + +namespace ash { +namespace internal { + +// static +const char TrayPopupHeaderButton::kViewClassName[] = + "tray/TrayPopupHeaderButton"; + +TrayPopupHeaderButton::TrayPopupHeaderButton(views::ButtonListener* listener, + int enabled_resource_id, + int disabled_resource_id, + int enabled_resource_id_hover, + int disabled_resource_id_hover, + int accessible_name_id) + : views::ToggleImageButton(listener) { + ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); + SetImage(views::Button::STATE_NORMAL, + bundle.GetImageNamed(enabled_resource_id).ToImageSkia()); + SetToggledImage(views::Button::STATE_NORMAL, + bundle.GetImageNamed(disabled_resource_id).ToImageSkia()); + SetImage(views::Button::STATE_HOVERED, + bundle.GetImageNamed(enabled_resource_id_hover).ToImageSkia()); + SetToggledImage(views::Button::STATE_HOVERED, + bundle.GetImageNamed(disabled_resource_id_hover).ToImageSkia()); + SetImageAlignment(views::ImageButton::ALIGN_CENTER, + views::ImageButton::ALIGN_MIDDLE); + SetAccessibleName(bundle.GetLocalizedString(accessible_name_id)); + SetFocusable(true); + set_request_focus_on_press(false); + + SetFocusPainter(views::Painter::CreateSolidFocusPainter( + kFocusBorderColor, + gfx::Insets(1, 2, 2, 3))); +} + +TrayPopupHeaderButton::~TrayPopupHeaderButton() {} + +const char* TrayPopupHeaderButton::GetClassName() const { + return kViewClassName; +} + +gfx::Size TrayPopupHeaderButton::GetPreferredSize() { + return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight); +} + +void TrayPopupHeaderButton::OnPaintBorder(gfx::Canvas* canvas) { + // Just the left border. + const int kBorderHeight = 25; + int padding = (height() - kBorderHeight) / 2; + canvas->FillRect(gfx::Rect(0, padding, 1, height() - padding * 2), + ash::kBorderDarkColor); +} + +void TrayPopupHeaderButton::StateChanged() { + SchedulePaint(); +} + +} // namespace internal +} // namespace ash |