1 // Copyright (c) 2010 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 CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ 6 #define CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "base/string16.h" 13 #include "chrome/browser/chromeos/notifications/balloon_collection_impl.h" 14 #include "chrome/browser/notifications/notification_delegate.h" 15 #include "googleurl/src/gurl.h" 16 17 class MessageCallback; 18 class Profile; 19 20 namespace chromeos { 21 22 // The system notification object handles the display of a system notification 23 24 class SystemNotification { 25 public: 26 // The profile is the current user profile. The id is any string used 27 // to uniquely identify this notification. The title is the title of 28 // the message to be displayed. On creation, the message is hidden. 29 SystemNotification(Profile* profile, 30 const std::string& id, 31 int icon_resource_id, 32 const string16& title); 33 34 // Allows to provide custom NotificationDelegate. 35 SystemNotification(Profile* profile, 36 NotificationDelegate* delegate, 37 int icon_resource_id, 38 const string16& title); 39 40 virtual ~SystemNotification(); 41 set_title(const string16 & title)42 void set_title(const string16& title) { title_ = title; } 43 44 // Show will show or update the message for this notification 45 // on a transition to urgent, the notification will be shown if it was 46 // previously hidden or minimized by the user. 47 void Show(const string16& message, bool urgent, bool sticky); 48 49 // Same as Show() above with a footer link at the bottom and a callback 50 // for when the link is clicked. 51 void Show(const string16& message, const string16& link_text, 52 MessageCallback* callback, bool urgent, bool sticky); 53 54 // Hide will dismiss the notification, if the notification is already 55 // hidden it does nothing 56 void Hide(); 57 58 // Current visibility state for this notification. visible()59 bool visible() const { return visible_; } 60 61 // Current urgent state for this notification. urgent()62 bool urgent() const { return urgent_; } 63 64 private: 65 class Delegate : public NotificationDelegate { 66 public: Delegate(const std::string & id)67 explicit Delegate(const std::string& id) : id_(id) {} Display()68 void Display() {} Error()69 void Error() {} Close(bool by_user)70 void Close(bool by_user) {} Click()71 void Click() {} id()72 std::string id() const { return id_; } 73 74 private: 75 std::string id_; 76 77 DISALLOW_COPY_AND_ASSIGN(Delegate); 78 }; 79 80 void Init(int icon_resource_id); 81 82 Profile* profile_; 83 BalloonCollectionImpl* collection_; 84 scoped_refptr<NotificationDelegate> delegate_; 85 GURL icon_; 86 string16 title_; 87 bool visible_; 88 bool urgent_; 89 90 DISALLOW_COPY_AND_ASSIGN(SystemNotification); 91 }; 92 93 } // namespace chromeos 94 95 #endif // CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ 96