1// Copyright (c) 2012 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 "chrome/browser/ui/views/wrench_toolbar_button.h" 6 7#include "grit/theme_resources.h" 8#include "ui/base/resource/resource_bundle.h" 9#include "ui/base/theme_provider.h" 10 11WrenchToolbarButton::WrenchToolbarButton(views::MenuButtonListener* listener) 12 : views::MenuButton(NULL, string16(), listener, false) { 13 wrench_icon_painter_.reset(new WrenchIconPainter(this)); 14 15 // Used for sizing only. 16 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 17 SetIcon(*rb.GetImageSkiaNamed(IDR_TOOLBAR_BEZEL_HOVER)); 18} 19 20WrenchToolbarButton::~WrenchToolbarButton() { 21} 22 23void WrenchToolbarButton::SetSeverity(WrenchIconPainter::Severity severity, 24 bool animate) { 25 wrench_icon_painter_->SetSeverity(severity, animate); 26} 27 28void WrenchToolbarButton::OnPaint(gfx::Canvas* canvas) { 29 // Badge non-ChromeOS ASH builds so that users know that they are using ASH. 30#if defined(USE_ASH) && !defined(OS_CHROMEOS) 31 wrench_icon_painter_->set_badge( 32 *GetThemeProvider()->GetImageSkiaNamed(IDR_TOOLS_BADGE_ASH)); 33#endif 34 35 wrench_icon_painter_->Paint( 36 canvas, GetThemeProvider(), gfx::Rect(size()), GetCurrentBezelType()); 37} 38 39void WrenchToolbarButton::ScheduleWrenchIconPaint() { 40 SchedulePaint(); 41} 42 43WrenchIconPainter::BezelType WrenchToolbarButton::GetCurrentBezelType() const { 44 switch (state()) { 45 case STATE_HOVERED: 46 return WrenchIconPainter::BEZEL_HOVER; 47 case STATE_PRESSED: 48 return WrenchIconPainter::BEZEL_PRESSED; 49 default: 50 return WrenchIconPainter::BEZEL_NONE; 51 } 52} 53