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. 4 5#ifndef UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_ 6#define UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_ 7 8#include "ui/gfx/image/image_skia.h" 9#include "ui/views/controls/button/custom_button.h" 10#include "ui/views/painter.h" 11#include "ui/views/view.h" 12 13namespace views { 14class ImageView; 15class Label; 16} 17 18namespace message_center { 19 20// NotificationButtons render the action buttons of notifications. 21class NotificationButton : public views::CustomButton { 22 public: 23 NotificationButton(views::ButtonListener* listener); 24 virtual ~NotificationButton(); 25 26 void SetIcon(const gfx::ImageSkia& icon); 27 void SetTitle(const base::string16& title); 28 29 // Overridden from views::View: 30 virtual gfx::Size GetPreferredSize() const OVERRIDE; 31 virtual int GetHeightForWidth(int width) const OVERRIDE; 32 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 33 virtual void OnFocus() OVERRIDE; 34 virtual void OnBlur() OVERRIDE; 35 virtual void ViewHierarchyChanged( 36 const ViewHierarchyChangedDetails& details) OVERRIDE; 37 38 // Overridden from views::CustomButton: 39 virtual void StateChanged() OVERRIDE; 40 41 private: 42 views::ImageView* icon_; 43 views::Label* title_; 44 scoped_ptr<views::Painter> focus_painter_; 45 46 DISALLOW_COPY_AND_ASSIGN(NotificationButton); 47}; 48 49} // namespace message_center 50 51#endif // UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_ 52