diff options
Diffstat (limited to 'chrome/browser/chromeos/notifications/system_notification.h')
-rw-r--r-- | chrome/browser/chromeos/notifications/system_notification.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/notifications/system_notification.h b/chrome/browser/chromeos/notifications/system_notification.h new file mode 100644 index 0000000..ff1efef --- /dev/null +++ b/chrome/browser/chromeos/notifications/system_notification.h @@ -0,0 +1,78 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ +#define CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ + +#include <string> + +#include "base/basictypes.h" +#include "base/move.h" +#include "base/ref_counted.h" +#include "base/string16.h" +#include "chrome/browser/chromeos/notifications/balloon_collection_impl.h" +#include "chrome/browser/notifications/notification_delegate.h" +#include "googleurl/src/gurl.h" + +class Profile; + +namespace chromeos { + +// The system notification object handles the display of a system notification + +class SystemNotification { + public: + // The profile is the current user profile. The id is any string used + // to uniquely identify this notification. The title is the title of + // the message to be displayed. On creation, the message is hidden. + SystemNotification(Profile* profile, std::string id, int icon_resource_id, + string16 title); + + ~SystemNotification(); + + // Show will show or update the message for this notification + // on a transition to urgent, the notification will be shown if it was + // previously hidden or minimized by the user. + void Show(const string16& message, bool urgent); + + // Hide will dismiss the notification, if the notification is already + // hidden it does nothing + void Hide(); + + // Current visibility state for this notification. + bool visible() const { return visible_; } + + // Current urgent state for this notification. + bool urgent() const { return urgent_; } + + private: + class Delegate : public NotificationDelegate { + public: + explicit Delegate(std::string id) : id_(base::move(id)) {} + void Display() {} + void Error() {} + void Close(bool by_user) {} + std::string id() const { return id_; } + + private: + std::string id_; + + DISALLOW_COPY_AND_ASSIGN(Delegate); + }; + + Profile* profile_; + BalloonCollectionImpl* collection_; + scoped_refptr<Delegate> delegate_; + GURL icon_; + string16 title_; + bool visible_; + bool urgent_; + + DISALLOW_COPY_AND_ASSIGN(SystemNotification); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_ + |