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 string16& title); 28 29 // Overridden from views::View: 30 virtual gfx::Size GetPreferredSize() OVERRIDE; 31 virtual int GetHeightForWidth(int width) OVERRIDE; 32 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 33 virtual void OnFocus() OVERRIDE; 34 virtual void OnBlur() OVERRIDE; 35 36 // Overridden from views::CustomButton: 37 virtual void StateChanged() OVERRIDE; 38 39 private: 40 views::ImageView* icon_; 41 views::Label* title_; 42 scoped_ptr<views::Painter> focus_painter_; 43 44 DISALLOW_COPY_AND_ASSIGN(NotificationButton); 45 }; 46 47 } // namespace message_center 48 49 #endif // UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_ 50