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 13 namespace views { 14 class ImageView; 15 class Label; 16 } 17 18 namespace message_center { 19 20 // NotificationButtons render the action buttons of notifications. 21 class 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